From c87732fcd51e536493adf8eb2ffe70897a2f220b Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 12 May 2026 16:41:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=20web-admin=20=E4=BB=8E=E5=AD=90?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=94=B9=E4=B8=BA=E4=BB=93=E5=BA=93=E5=86=85?= =?UTF-8?q?=E6=99=AE=E9=80=9A=E7=9B=AE=E5=BD=95=EF=BC=8C=E4=BE=BF=E4=BA=8E?= =?UTF-8?q?=E5=8D=95=E4=BB=93=E5=85=8B=E9=9A=86=E4=B8=8E=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- web-admin | 1 - web-admin/.gitattributes | 2 + web-admin/.gitignore | 11 + web-admin/.husky/commit-msg | 1 + web-admin/.husky/pre-commit | 1 + web-admin/.prettierignore | 3 + web-admin/.prettierrc | 20 + web-admin/.stylelintignore | 9 + web-admin/.stylelintrc.cjs | 82 + web-admin/.vscode/extensions.json | 10 + web-admin/.vscode/settings.json | 12 + web-admin/CHANGELOG.md | 650 + web-admin/CHANGELOG.zh-CN.md | 654 + web-admin/LICENSE | 21 + web-admin/README.md | 104 + web-admin/README.zh-CN.md | 104 + web-admin/commitlint.config.cjs | 97 + web-admin/eslint.config.mjs | 83 + web-admin/index.html | 48 + web-admin/package.json | 128 + web-admin/pnpm-lock.yaml | 7607 +++++ web-admin/public/favicon.ico | Bin 0 -> 4286 bytes web-admin/public/logo1.jpg | Bin 0 -> 411065 bytes web-admin/public/logo1_副本.jpg | Bin 0 -> 411065 bytes web-admin/scripts/clean-dev.ts | 838 + web-admin/src/App.vue | 153 + web-admin/src/api/admin.ts | 825 + web-admin/src/api/auth.ts | 89 + web-admin/src/api/chinaRegion.ts | 15 + web-admin/src/api/system-manage.ts | 39 + web-admin/src/api/system.ts | 206 + .../assets/data/china-region-cascader.json | 1 + .../src/assets/data/china-region-flat.json | 1 + web-admin/src/assets/images/3d/icon1.webp | Bin 0 -> 10076 bytes web-admin/src/assets/images/3d/icon2.webp | Bin 0 -> 6712 bytes web-admin/src/assets/images/3d/icon3.webp | Bin 0 -> 5872 bytes web-admin/src/assets/images/3d/icon4.webp | Bin 0 -> 5762 bytes web-admin/src/assets/images/3d/icon5.webp | Bin 0 -> 7932 bytes web-admin/src/assets/images/3d/icon6.webp | Bin 0 -> 6308 bytes web-admin/src/assets/images/3d/icon7.webp | Bin 0 -> 8180 bytes web-admin/src/assets/images/3d/icon8.webp | Bin 0 -> 7678 bytes .../src/assets/images/avatar/avatar.webp | Bin 0 -> 954 bytes .../src/assets/images/avatar/avatar1.webp | Bin 0 -> 2296 bytes .../src/assets/images/avatar/avatar10.webp | Bin 0 -> 1410 bytes .../src/assets/images/avatar/avatar2.webp | Bin 0 -> 1214 bytes .../src/assets/images/avatar/avatar3.webp | Bin 0 -> 726 bytes .../src/assets/images/avatar/avatar4.webp | Bin 0 -> 944 bytes .../src/assets/images/avatar/avatar5.webp | Bin 0 -> 2272 bytes .../src/assets/images/avatar/avatar6.webp | Bin 0 -> 810 bytes .../src/assets/images/avatar/avatar7.webp | Bin 0 -> 2712 bytes .../src/assets/images/avatar/avatar8.webp | Bin 0 -> 3946 bytes .../src/assets/images/avatar/avatar9.webp | Bin 0 -> 1680 bytes web-admin/src/assets/images/ceremony/hb.png | Bin 0 -> 2275 bytes web-admin/src/assets/images/ceremony/sd.png | Bin 0 -> 4752 bytes web-admin/src/assets/images/ceremony/xc.png | Bin 0 -> 4910 bytes web-admin/src/assets/images/ceremony/yd.png | Bin 0 -> 4629 bytes web-admin/src/assets/images/common/logo.webp | Bin 0 -> 2484 bytes web-admin/src/assets/images/cover/img1.webp | Bin 0 -> 7522 bytes web-admin/src/assets/images/cover/img10.webp | Bin 0 -> 3526 bytes web-admin/src/assets/images/cover/img2.webp | Bin 0 -> 14024 bytes web-admin/src/assets/images/cover/img3.webp | Bin 0 -> 12128 bytes web-admin/src/assets/images/cover/img4.webp | Bin 0 -> 9832 bytes web-admin/src/assets/images/cover/img5.webp | Bin 0 -> 9478 bytes web-admin/src/assets/images/cover/img6.webp | Bin 0 -> 10898 bytes web-admin/src/assets/images/cover/img7.webp | Bin 0 -> 8694 bytes web-admin/src/assets/images/cover/img8.webp | Bin 0 -> 9580 bytes web-admin/src/assets/images/cover/img9.webp | Bin 0 -> 9212 bytes web-admin/src/assets/images/draw/draw1.png | Bin 0 -> 11315 bytes web-admin/src/assets/images/favicon.ico | Bin 0 -> 4286 bytes web-admin/src/assets/images/lock/bg_dark.webp | Bin 0 -> 70592 bytes .../src/assets/images/lock/bg_light.webp | Bin 0 -> 67246 bytes .../src/assets/images/login/lf_icon2.webp | Bin 0 -> 25016 bytes .../src/assets/images/safeguard/server.png | Bin 0 -> 2178 bytes .../settings/menu_layouts/dual_column.png | Bin 0 -> 514 bytes .../settings/menu_layouts/horizontal.png | Bin 0 -> 409 bytes .../images/settings/menu_layouts/mixed.png | Bin 0 -> 431 bytes .../images/settings/menu_layouts/vertical.png | Bin 0 -> 439 bytes .../images/settings/menu_styles/dark.png | Bin 0 -> 292 bytes .../images/settings/menu_styles/design.png | Bin 0 -> 286 bytes .../images/settings/menu_styles/light.png | Bin 0 -> 293 bytes .../images/settings/theme_styles/dark.png | Bin 0 -> 448 bytes .../images/settings/theme_styles/light.png | Bin 0 -> 416 bytes .../images/settings/theme_styles/system.png | Bin 0 -> 509 bytes web-admin/src/assets/images/svg/403.svg | 1 + web-admin/src/assets/images/svg/404.svg | 1 + web-admin/src/assets/images/svg/500.svg | 5 + .../src/assets/images/svg/login_icon.svg | 1 + web-admin/src/assets/images/user/avatar.webp | Bin 0 -> 2130 bytes web-admin/src/assets/images/user/bg.webp | Bin 0 -> 12352 bytes web-admin/src/assets/logo-img/10.png | Bin 0 -> 2910 bytes web-admin/src/assets/logo-img/10物体识别.png | Bin 0 -> 2596 bytes web-admin/src/assets/logo-img/11人脸比对.png | Bin 0 -> 2996 bytes web-admin/src/assets/logo-img/12.png | Bin 0 -> 2460 bytes .../src/assets/logo-img/14银行卡识别.png | Bin 0 -> 2034 bytes web-admin/src/assets/logo-img/16人脸识别.png | Bin 0 -> 2599 bytes web-admin/src/assets/logo-img/17.png | Bin 0 -> 2420 bytes .../src/assets/logo-img/17录音文件识别.png | Bin 0 -> 2105 bytes web-admin/src/assets/logo-img/20.png | Bin 0 -> 2118 bytes web-admin/src/assets/logo-img/20个人证照.png | Bin 0 -> 1539 bytes web-admin/src/assets/logo-img/22.png | Bin 0 -> 2131 bytes web-admin/src/assets/logo-img/404.svg | 1 + web-admin/src/assets/logo-img/7文本纠错.png | Bin 0 -> 2199 bytes web-admin/src/assets/logo-img/9场景识别.png | Bin 0 -> 2562 bytes web-admin/src/assets/logo-img/Notice.svg | 1 + web-admin/src/assets/logo-img/bug.png | Bin 0 -> 2943 bytes web-admin/src/assets/logo-img/build.svg | 1 + web-admin/src/assets/logo-img/button.svg | 1 + web-admin/src/assets/logo-img/caret-back.png | Bin 0 -> 2843 bytes .../src/assets/logo-img/caret-forward.png | Bin 0 -> 2140 bytes web-admin/src/assets/logo-img/cascader.png | Bin 0 -> 1701 bytes web-admin/src/assets/logo-img/category.svg | 1 + web-admin/src/assets/logo-img/chart.svg | 1 + web-admin/src/assets/logo-img/checkbox.svg | 1 + web-admin/src/assets/logo-img/clipboard.svg | 1 + web-admin/src/assets/logo-img/code.png | Bin 0 -> 3117 bytes web-admin/src/assets/logo-img/color.svg | 1 + web-admin/src/assets/logo-img/company.svg | 1 + web-admin/src/assets/logo-img/component.svg | 1 + web-admin/src/assets/logo-img/dashboard.svg | 1 + web-admin/src/assets/logo-img/date-range.svg | 1 + web-admin/src/assets/logo-img/date.png | Bin 0 -> 1988 bytes web-admin/src/assets/logo-img/dict.png | Bin 0 -> 1862 bytes .../src/assets/logo-img/documentation.png | Bin 0 -> 2396 bytes web-admin/src/assets/logo-img/download.svg | 1 + web-admin/src/assets/logo-img/drag.png | Bin 0 -> 2976 bytes web-admin/src/assets/logo-img/druid.svg | 1 + web-admin/src/assets/logo-img/edit.svg | 1 + web-admin/src/assets/logo-img/education.svg | 1 + web-admin/src/assets/logo-img/email.svg | 1 + web-admin/src/assets/logo-img/empty.svg | 1 + web-admin/src/assets/logo-img/example.png | Bin 0 -> 2683 bytes web-admin/src/assets/logo-img/excel.png | Bin 0 -> 2799 bytes .../src/assets/logo-img/exit-fullscreen.png | Bin 0 -> 2924 bytes .../src/assets/logo-img/exit-fullscreen1.png | Bin 0 -> 2235 bytes web-admin/src/assets/logo-img/experience.png | Bin 0 -> 2891 bytes web-admin/src/assets/logo-img/eye-open.png | Bin 0 -> 2688 bytes web-admin/src/assets/logo-img/eye.svg | 1 + web-admin/src/assets/logo-img/finish.svg | 1 + web-admin/src/assets/logo-img/form.png | Bin 0 -> 2131 bytes web-admin/src/assets/logo-img/guide.png | Bin 0 -> 2159 bytes web-admin/src/assets/logo-img/icon.png | Bin 0 -> 2181 bytes web-admin/src/assets/logo-img/input.png | Bin 0 -> 2463 bytes .../src/assets/logo-img/international.svg | 1 + web-admin/src/assets/logo-img/job.png | Bin 0 -> 2270 bytes web-admin/src/assets/logo-img/language.png | Bin 0 -> 2375 bytes web-admin/src/assets/logo-img/link.png | Bin 0 -> 2475 bytes web-admin/src/assets/logo-img/list.svg | 1 + web-admin/src/assets/logo-img/lock.svg | 1 + web-admin/src/assets/logo-img/log.svg | 1 + web-admin/src/assets/logo-img/logininfor.svg | 1 + web-admin/src/assets/logo-img/model.png | Bin 0 -> 1356 bytes web-admin/src/assets/logo-img/money.svg | 1 + web-admin/src/assets/logo-img/my-copy.svg | 1 + web-admin/src/assets/logo-img/my-task.png | Bin 0 -> 1862 bytes web-admin/src/assets/logo-img/my-task.svg | 1 + web-admin/src/assets/logo-img/nested.svg | 1 + web-admin/src/assets/logo-img/other.png | Bin 0 -> 2119 bytes web-admin/src/assets/logo-img/other1.svg | 1 + web-admin/src/assets/logo-img/password.png | Bin 0 -> 2420 bytes web-admin/src/assets/logo-img/pdf.svg | 1 + web-admin/src/assets/logo-img/people.svg | 1 + web-admin/src/assets/logo-img/peoples.svg | 1 + web-admin/src/assets/logo-img/post.png | Bin 0 -> 2274 bytes .../assets/logo-img/process-definition.svg | 1 + web-admin/src/assets/logo-img/radio.svg | 1 + web-admin/src/assets/logo-img/rate.svg | 1 + web-admin/src/assets/logo-img/redis-list.png | Bin 0 -> 2061 bytes web-admin/src/assets/logo-img/row.svg | 1 + web-admin/src/assets/logo-img/shopping.png | Bin 0 -> 2087 bytes web-admin/src/assets/logo-img/study.svg | 1 + web-admin/src/assets/logo-img/system.svg | 1 + web-admin/src/assets/logo-img/table.png | Bin 0 -> 2360 bytes web-admin/src/assets/logo-img/tag.svg | 1 + web-admin/src/assets/logo-img/tree-table.svg | 1 + web-admin/src/assets/logo-img/tree.svg | 1 + web-admin/src/assets/logo-img/workflow.svg | 1 + web-admin/src/assets/logo-img/zj.svg | 1 + web-admin/src/assets/styles/core/app.scss | 648 + web-admin/src/assets/styles/core/dark.scss | 93 + web-admin/src/assets/styles/core/el-dark.scss | 2 + .../src/assets/styles/core/el-light.scss | 34 + web-admin/src/assets/styles/core/el-ui.scss | 1067 + .../assets/styles/core/fresh-mint-tokens.scss | 17 + web-admin/src/assets/styles/core/md.scss | 1036 + web-admin/src/assets/styles/core/mixin.scss | 157 + web-admin/src/assets/styles/core/reset.scss | 41 + .../assets/styles/core/router-transition.scss | 104 + .../src/assets/styles/core/subtable.scss | 50 + web-admin/src/assets/styles/core/tailwind.css | 208 + .../assets/styles/core/theme-animation.scss | 63 + .../src/assets/styles/core/theme-change.scss | 11 + .../styles/core/utilities-override.scss | 5 + .../assets/styles/custom/one-dark-pro.scss | 98 + web-admin/src/assets/styles/index.scss | 29 + web-admin/src/assets/svg/404.svg | 1 + web-admin/src/assets/svg/bug.svg | 1 + web-admin/src/assets/svg/build.svg | 1 + web-admin/src/assets/svg/button.svg | 1 + web-admin/src/assets/svg/caret-back.svg | 1 + web-admin/src/assets/svg/caret-forward.svg | 1 + web-admin/src/assets/svg/cascader.svg | 1 + web-admin/src/assets/svg/category.svg | 1 + web-admin/src/assets/svg/chart.svg | 1 + web-admin/src/assets/svg/checkbox.svg | 1 + web-admin/src/assets/svg/clipboard.svg | 1 + web-admin/src/assets/svg/code.svg | 1 + web-admin/src/assets/svg/color.svg | 1 + web-admin/src/assets/svg/company.svg | 1 + web-admin/src/assets/svg/component.svg | 1 + web-admin/src/assets/svg/dashboard.svg | 1 + web-admin/src/assets/svg/date-range.svg | 1 + web-admin/src/assets/svg/date.svg | 1 + web-admin/src/assets/svg/dict.svg | 1 + web-admin/src/assets/svg/documentation.svg | 1 + web-admin/src/assets/svg/download.svg | 1 + web-admin/src/assets/svg/drag.svg | 1 + web-admin/src/assets/svg/druid.svg | 1 + web-admin/src/assets/svg/edit.svg | 1 + web-admin/src/assets/svg/education.svg | 1 + web-admin/src/assets/svg/email.svg | 1 + web-admin/src/assets/svg/example.svg | 1 + web-admin/src/assets/svg/excel.svg | 1 + web-admin/src/assets/svg/exit-fullscreen.svg | 1 + web-admin/src/assets/svg/exit-fullscreen1.svg | 1 + web-admin/src/assets/svg/experience.svg | 3 + web-admin/src/assets/svg/eye-open.svg | 1 + web-admin/src/assets/svg/eye.svg | 1 + web-admin/src/assets/svg/finish.svg | 1 + web-admin/src/assets/svg/form.svg | 1 + web-admin/src/assets/svg/fullscreen copy.svg | 1 + web-admin/src/assets/svg/fullscreen.svg | 1 + web-admin/src/assets/svg/fullscreen1.svg | 1 + web-admin/src/assets/svg/fullscreen2.svg | 1 + web-admin/src/assets/svg/gitee.svg | 1 + web-admin/src/assets/svg/github.svg | 1 + web-admin/src/assets/svg/guide.svg | 1 + web-admin/src/assets/svg/icon.svg | 1 + web-admin/src/assets/svg/input.svg | 1 + web-admin/src/assets/svg/international.svg | 1 + web-admin/src/assets/svg/job.svg | 1 + web-admin/src/assets/svg/language.svg | 1 + web-admin/src/assets/svg/link.svg | 1 + web-admin/src/assets/svg/list.svg | 1 + web-admin/src/assets/svg/loading.ts | 32 + web-admin/src/assets/svg/lock.svg | 1 + web-admin/src/assets/svg/log.svg | 1 + web-admin/src/assets/svg/logininfor.svg | 1 + web-admin/src/assets/svg/maxkey.svg | 3 + web-admin/src/assets/svg/message.svg | 1 + web-admin/src/assets/svg/message1.svg | 1 + web-admin/src/assets/svg/model.svg | 1 + web-admin/src/assets/svg/money.svg | 1 + web-admin/src/assets/svg/monitor.svg | 2 + web-admin/src/assets/svg/my-copy.svg | 1 + web-admin/src/assets/svg/my-task.svg | 1 + web-admin/src/assets/svg/nested.svg | 1 + web-admin/src/assets/svg/number.svg | 1 + web-admin/src/assets/svg/online.svg | 1 + web-admin/src/assets/svg/password.svg | 1 + web-admin/src/assets/svg/pdf.svg | 1 + web-admin/src/assets/svg/people.svg | 1 + web-admin/src/assets/svg/peoples.svg | 1 + web-admin/src/assets/svg/phone.svg | 1 + web-admin/src/assets/svg/post.svg | 1 + .../src/assets/svg/process-definition.svg | 1 + web-admin/src/assets/svg/qq.svg | 1 + web-admin/src/assets/svg/question.svg | 1 + web-admin/src/assets/svg/radio.svg | 1 + web-admin/src/assets/svg/rate.svg | 1 + web-admin/src/assets/svg/redis-list.svg | 2 + web-admin/src/assets/svg/redis.svg | 1 + web-admin/src/assets/svg/row.svg | 1 + web-admin/src/assets/svg/search-1.svg | 1 + web-admin/src/assets/svg/search.svg | 1 + web-admin/src/assets/svg/select.svg | 1 + web-admin/src/assets/svg/server.svg | 1 + web-admin/src/assets/svg/shopping.svg | 1 + web-admin/src/assets/svg/size.svg | 1 + web-admin/src/assets/svg/skill.svg | 1 + web-admin/src/assets/svg/slider.svg | 1 + web-admin/src/assets/svg/star.svg | 1 + web-admin/src/assets/svg/swagger.svg | 1 + web-admin/src/assets/svg/switch.svg | 1 + web-admin/src/assets/svg/system.svg | 2 + web-admin/src/assets/svg/tab.svg | 1 + web-admin/src/assets/svg/table.svg | 1 + web-admin/src/assets/svg/textarea.svg | 1 + web-admin/src/assets/svg/theme.svg | 1 + web-admin/src/assets/svg/time-range.svg | 1 + web-admin/src/assets/svg/time.svg | 1 + web-admin/src/assets/svg/tool.svg | 1 + web-admin/src/assets/svg/topiam.svg | 29 + web-admin/src/assets/svg/tree-table.svg | 1 + web-admin/src/assets/svg/tree.svg | 1 + web-admin/src/assets/svg/upload.svg | 1 + web-admin/src/assets/svg/user.svg | 1 + web-admin/src/assets/svg/validCode.svg | 1 + web-admin/src/assets/svg/waiting.svg | 1 + web-admin/src/assets/svg/wechat.svg | 1 + web-admin/src/assets/svg/workflow.svg | 1 + web-admin/src/assets/svg/zip.svg | 1 + .../core/banners/art-basic-banner/index.vue | 343 + .../core/banners/art-card-banner/index.vue | 114 + .../core/base/art-back-to-top/index.vue | 40 + .../components/core/base/art-logo/index.vue | 29 + .../core/base/art-svg-icon/index.vue | 24 + .../core/cards/art-bar-chart-card/index.vue | 103 + .../core/cards/art-data-list-card/index.vue | 74 + .../core/cards/art-donut-chart-card/index.vue | 124 + .../core/cards/art-image-card/index.vue | 89 + .../core/cards/art-line-chart-card/index.vue | 126 + .../core/cards/art-progress-card/index.vue | 86 + .../core/cards/art-stats-card/index.vue | 67 + .../cards/art-timeline-list-card/index.vue | 69 + .../core/charts/art-bar-chart/index.vue | 203 + .../art-dual-bar-compare-chart/index.vue | 195 + .../core/charts/art-h-bar-chart/index.vue | 208 + .../core/charts/art-k-line-chart/index.vue | 152 + .../core/charts/art-line-chart/index.vue | 371 + .../core/charts/art-map-chart/index.vue | 330 + .../core/charts/art-radar-chart/index.vue | 105 + .../core/charts/art-ring-chart/index.vue | 133 + .../core/charts/art-scatter-chart/index.vue | 115 + .../core/forms/art-button-more/index.vue | 71 + .../core/forms/art-button-table/index.vue | 59 + .../core/forms/art-drag-verify/index.vue | 430 + .../core/forms/art-excel-export/index.vue | 404 + .../core/forms/art-excel-import/index.vue | 62 + .../components/core/forms/art-form/index.vue | 507 + .../core/forms/art-search-bar/index.vue | 581 + .../core/forms/art-wang-editor/index.vue | 258 + .../core/forms/art-wang-editor/style.scss | 300 + .../core/layouts/art-breadcrumb/index.vue | 142 + .../core/layouts/art-chat-window/index.vue | 262 + .../core/layouts/art-fast-enter/index.vue | 113 + .../layouts/art-fireworks-effect/index.vue | 633 + .../layouts/art-global-component/index.vue | 14 + .../core/layouts/art-global-search/index.vue | 431 + .../core/layouts/art-header-bar/index.vue | 425 + .../art-header-bar/widget/ArtUserMenu.vue | 163 + .../art-menus/art-horizontal-menu/index.vue | 110 + .../widget/HorizontalSubmenu.vue | 106 + .../art-menus/art-mixed-menu/index.vue | 279 + .../art-menus/art-sidebar-menu/index.vue | 454 + .../art-menus/art-sidebar-menu/style.scss | 284 + .../art-menus/art-sidebar-menu/theme.scss | 291 + .../widget/SidebarSubmenu.vue | 158 + .../core/layouts/art-notification/index.vue | 456 + .../core/layouts/art-page-content/index.vue | 137 + .../core/layouts/art-screen-lock/index.vue | 528 + .../composables/useSettingsConfig.ts | 248 + .../composables/useSettingsHandlers.ts | 167 + .../composables/useSettingsPanel.ts | 233 + .../composables/useSettingsState.ts | 37 + .../core/layouts/art-settings-panel/index.vue | 72 + .../layouts/art-settings-panel/style.scss | 92 + .../widget/BasicSettings.vue | 77 + .../widget/BoxStyleSettings.vue | 38 + .../widget/ColorSettings.vue | 35 + .../widget/ContainerSettings.vue | 33 + .../widget/MenuLayoutSettings.vue | 31 + .../widget/MenuStyleSettings.vue | 44 + .../widget/SectionTitle.vue | 17 + .../widget/SettingActions.vue | 235 + .../widget/SettingDrawer.vue | 51 + .../widget/SettingHeader.vue | 18 + .../art-settings-panel/widget/SettingItem.vue | 101 + .../widget/ThemeSettings.vue | 28 + .../core/layouts/art-work-tab/index.vue | 550 + .../core/media/art-cutter-img/index.vue | 350 + .../core/media/art-video-player/index.vue | 111 + .../core/others/art-menu-right/index.vue | 415 + .../core/others/art-watermark/index.vue | 64 + .../core/tables/art-table-header/index.vue | 339 + .../core/tables/art-table/index.vue | 368 + .../core/tables/art-table/style.scss | 99 + .../core/text-effect/art-count-to/index.vue | 310 + .../art-festival-text-scroll/index.vue | 32 + .../text-effect/art-text-scroll/index.vue | 285 + .../components/core/theme/theme-svg/index.vue | 100 + .../core/views/exception/ArtException.vue | 55 + .../core/views/login/AuthTopBar.vue | 149 + .../core/views/login/LoginLeftView.vue | 602 + .../core/views/result/ArtResultPage.vue | 43 + .../core/widget/art-icon-button/index.vue | 23 + web-admin/src/config/assets/images.ts | 61 + web-admin/src/config/index.ts | 136 + web-admin/src/config/modules/component.ts | 105 + web-admin/src/config/modules/fastEnter.ts | 127 + web-admin/src/config/modules/festival.ts | 51 + web-admin/src/config/modules/headerBar.ts | 63 + web-admin/src/config/setting.ts | 109 + .../src/directives/business/highlight.ts | 250 + web-admin/src/directives/business/ripple.ts | 116 + web-admin/src/directives/core/auth.ts | 66 + web-admin/src/directives/core/roles.ts | 87 + web-admin/src/directives/index.ts | 14 + web-admin/src/enums/appEnum.ts | 81 + web-admin/src/enums/formEnum.ts | 24 + web-admin/src/env.d.ts | 34 + web-admin/src/hooks/core/useAppMode.ts | 45 + web-admin/src/hooks/core/useAuth.ts | 74 + web-admin/src/hooks/core/useCeremony.ts | 184 + web-admin/src/hooks/core/useChart.ts | 745 + web-admin/src/hooks/core/useCommon.ts | 87 + web-admin/src/hooks/core/useFastEnter.ts | 55 + web-admin/src/hooks/core/useHeaderBar.ts | 201 + web-admin/src/hooks/core/useLayoutHeight.ts | 148 + web-admin/src/hooks/core/useTable.ts | 762 + web-admin/src/hooks/core/useTableColumns.ts | 312 + web-admin/src/hooks/core/useTableHeight.ts | 105 + web-admin/src/hooks/core/useTheme.ts | 174 + web-admin/src/hooks/index.ts | 32 + web-admin/src/locales/index.ts | 123 + web-admin/src/locales/langs/en.json | 348 + web-admin/src/locales/langs/zh.json | 348 + web-admin/src/main.ts | 74 + web-admin/src/mock/json/chinaMap.json | 25643 ++++++++++++++++ web-admin/src/mock/upgrade/changeLog.ts | 449 + web-admin/src/plugins/echarts.ts | 76 + web-admin/src/plugins/index.ts | 6 + web-admin/src/router/core/ComponentLoader.ts | 82 + .../src/router/core/IframeRouteManager.ts | 78 + web-admin/src/router/core/MenuProcessor.ts | 343 + .../router/core/RoutePermissionValidator.ts | 161 + web-admin/src/router/core/RouteRegistry.ts | 90 + web-admin/src/router/core/RouteTransformer.ts | 132 + web-admin/src/router/core/RouteValidator.ts | 187 + web-admin/src/router/core/index.ts | 14 + web-admin/src/router/guards/afterEach.ts | 34 + web-admin/src/router/guards/beforeEach.ts | 426 + web-admin/src/router/index.ts | 23 + web-admin/src/router/modules/article.ts | 60 + web-admin/src/router/modules/exception.ts | 46 + web-admin/src/router/modules/help.ts | 52 + web-admin/src/router/modules/index.ts | 7 + web-admin/src/router/modules/result.ts | 33 + web-admin/src/router/modules/safeguard.ts | 24 + .../src/router/modules/style-reference.ts | 47 + web-admin/src/router/routes/asyncRoutes.ts | 9 + web-admin/src/router/routes/staticRoutes.ts | 25 + web-admin/src/router/routesAlias.ts | 8 + web-admin/src/shims-loose.d.ts | 8 + web-admin/src/store/index.ts | 52 + web-admin/src/store/modules/menu.ts | 109 + web-admin/src/store/modules/setting.ts | 450 + web-admin/src/store/modules/table.ts | 97 + web-admin/src/store/modules/user.ts | 194 + web-admin/src/store/modules/worktab.ts | 578 + web-admin/src/types/api.d.ts | 380 + web-admin/src/types/api/api.d.ts | 138 + web-admin/src/types/common/index.ts | 95 + web-admin/src/types/common/response.ts | 31 + web-admin/src/types/component/chart.ts | 324 + web-admin/src/types/component/index.ts | 145 + web-admin/src/types/config/index.ts | 213 + web-admin/src/types/directive/directive.d.ts | 15 + web-admin/src/types/index.ts | 22 + web-admin/src/types/router/index.ts | 83 + web-admin/src/types/store/index.ts | 157 + web-admin/src/utils/category-path-display.ts | 24 + web-admin/src/utils/constants/index.ts | 8 + web-admin/src/utils/constants/links.ts | 35 + web-admin/src/utils/fetch-paged-list.ts | 25 + web-admin/src/utils/form/index.ts | 12 + web-admin/src/utils/form/responsive.ts | 122 + web-admin/src/utils/form/validator.ts | 316 + web-admin/src/utils/fullscreen-loading.ts | 25 + web-admin/src/utils/http/crypto.ts | 97 + web-admin/src/utils/http/error.ts | 190 + web-admin/src/utils/http/index.ts | 369 + web-admin/src/utils/http/status.ts | 20 + web-admin/src/utils/index.ts | 34 + web-admin/src/utils/loginRsa.ts | 23 + web-admin/src/utils/navigation/index.ts | 10 + web-admin/src/utils/navigation/jump.ts | 68 + web-admin/src/utils/navigation/route.ts | 85 + web-admin/src/utils/navigation/worktab.ts | 67 + .../src/utils/patch-el-select-filterable.ts | 11 + web-admin/src/utils/router.ts | 61 + .../src/utils/router/sidebar-menu-filter.ts | 36 + web-admin/src/utils/socket/index.ts | 423 + web-admin/src/utils/sort-order.ts | 26 + web-admin/src/utils/storage/index.ts | 7 + web-admin/src/utils/storage/storage-config.ts | 125 + .../src/utils/storage/storage-key-manager.ts | 97 + web-admin/src/utils/storage/storage.ts | 250 + web-admin/src/utils/sys/console.ts | 13 + web-admin/src/utils/sys/error-handle.ts | 143 + web-admin/src/utils/sys/index.ts | 6 + web-admin/src/utils/sys/mittBus.ts | 63 + web-admin/src/utils/sys/upgrade.ts | 279 + web-admin/src/utils/table/tableCache.ts | 266 + web-admin/src/utils/table/tableConfig.ts | 55 + web-admin/src/utils/table/tableUtils.ts | 297 + web-admin/src/utils/tree-path.ts | 103 + web-admin/src/utils/ui/animation.ts | 80 + web-admin/src/utils/ui/colors.ts | 273 + web-admin/src/utils/ui/emojo.ts | 24 + web-admin/src/utils/ui/iconify-loader.ts | 31 + web-admin/src/utils/ui/index.ts | 11 + web-admin/src/utils/ui/loading.ts | 84 + web-admin/src/utils/ui/tabs.ts | 60 + web-admin/src/utils/user-avatar.ts | 14 + web-admin/src/views/exception/403/index.vue | 16 + web-admin/src/views/exception/404/index.vue | 16 + web-admin/src/views/exception/500/index.vue | 16 + web-admin/src/views/index/index.vue | 29 + web-admin/src/views/index/style.scss | 100 + web-admin/src/views/outside/Iframe.vue | 36 + .../style-reference/delivery-demo/index.vue | 1088 + .../style-reference/login-sample/index.vue | 205 + .../style-reference/mint-tokens/index.vue | 98 + web-admin/tsconfig.json | 32 + web-admin/vite.config.ts | 168 + 515 files changed, 74372 insertions(+), 1 deletion(-) delete mode 160000 web-admin create mode 100644 web-admin/.gitattributes create mode 100755 web-admin/.gitignore create mode 100644 web-admin/.husky/commit-msg create mode 100644 web-admin/.husky/pre-commit create mode 100644 web-admin/.prettierignore create mode 100644 web-admin/.prettierrc create mode 100644 web-admin/.stylelintignore create mode 100644 web-admin/.stylelintrc.cjs create mode 100644 web-admin/.vscode/extensions.json create mode 100755 web-admin/.vscode/settings.json create mode 100644 web-admin/CHANGELOG.md create mode 100644 web-admin/CHANGELOG.zh-CN.md create mode 100755 web-admin/LICENSE create mode 100755 web-admin/README.md create mode 100644 web-admin/README.zh-CN.md create mode 100644 web-admin/commitlint.config.cjs create mode 100644 web-admin/eslint.config.mjs create mode 100644 web-admin/index.html create mode 100644 web-admin/package.json create mode 100644 web-admin/pnpm-lock.yaml create mode 100755 web-admin/public/favicon.ico create mode 100644 web-admin/public/logo1.jpg create mode 100644 web-admin/public/logo1_副本.jpg create mode 100644 web-admin/scripts/clean-dev.ts create mode 100644 web-admin/src/App.vue create mode 100644 web-admin/src/api/admin.ts create mode 100644 web-admin/src/api/auth.ts create mode 100644 web-admin/src/api/chinaRegion.ts create mode 100644 web-admin/src/api/system-manage.ts create mode 100644 web-admin/src/api/system.ts create mode 100644 web-admin/src/assets/data/china-region-cascader.json create mode 100644 web-admin/src/assets/data/china-region-flat.json create mode 100644 web-admin/src/assets/images/3d/icon1.webp create mode 100644 web-admin/src/assets/images/3d/icon2.webp create mode 100644 web-admin/src/assets/images/3d/icon3.webp create mode 100644 web-admin/src/assets/images/3d/icon4.webp create mode 100644 web-admin/src/assets/images/3d/icon5.webp create mode 100644 web-admin/src/assets/images/3d/icon6.webp create mode 100644 web-admin/src/assets/images/3d/icon7.webp create mode 100644 web-admin/src/assets/images/3d/icon8.webp create mode 100644 web-admin/src/assets/images/avatar/avatar.webp create mode 100644 web-admin/src/assets/images/avatar/avatar1.webp create mode 100644 web-admin/src/assets/images/avatar/avatar10.webp create mode 100644 web-admin/src/assets/images/avatar/avatar2.webp create mode 100644 web-admin/src/assets/images/avatar/avatar3.webp create mode 100644 web-admin/src/assets/images/avatar/avatar4.webp create mode 100644 web-admin/src/assets/images/avatar/avatar5.webp create mode 100644 web-admin/src/assets/images/avatar/avatar6.webp create mode 100644 web-admin/src/assets/images/avatar/avatar7.webp create mode 100644 web-admin/src/assets/images/avatar/avatar8.webp create mode 100644 web-admin/src/assets/images/avatar/avatar9.webp create mode 100644 web-admin/src/assets/images/ceremony/hb.png create mode 100644 web-admin/src/assets/images/ceremony/sd.png create mode 100644 web-admin/src/assets/images/ceremony/xc.png create mode 100644 web-admin/src/assets/images/ceremony/yd.png create mode 100644 web-admin/src/assets/images/common/logo.webp create mode 100644 web-admin/src/assets/images/cover/img1.webp create mode 100644 web-admin/src/assets/images/cover/img10.webp create mode 100644 web-admin/src/assets/images/cover/img2.webp create mode 100644 web-admin/src/assets/images/cover/img3.webp create mode 100644 web-admin/src/assets/images/cover/img4.webp create mode 100644 web-admin/src/assets/images/cover/img5.webp create mode 100644 web-admin/src/assets/images/cover/img6.webp create mode 100644 web-admin/src/assets/images/cover/img7.webp create mode 100644 web-admin/src/assets/images/cover/img8.webp create mode 100644 web-admin/src/assets/images/cover/img9.webp create mode 100644 web-admin/src/assets/images/draw/draw1.png create mode 100644 web-admin/src/assets/images/favicon.ico create mode 100644 web-admin/src/assets/images/lock/bg_dark.webp create mode 100644 web-admin/src/assets/images/lock/bg_light.webp create mode 100644 web-admin/src/assets/images/login/lf_icon2.webp create mode 100644 web-admin/src/assets/images/safeguard/server.png create mode 100644 web-admin/src/assets/images/settings/menu_layouts/dual_column.png create mode 100644 web-admin/src/assets/images/settings/menu_layouts/horizontal.png create mode 100644 web-admin/src/assets/images/settings/menu_layouts/mixed.png create mode 100644 web-admin/src/assets/images/settings/menu_layouts/vertical.png create mode 100644 web-admin/src/assets/images/settings/menu_styles/dark.png create mode 100644 web-admin/src/assets/images/settings/menu_styles/design.png create mode 100644 web-admin/src/assets/images/settings/menu_styles/light.png create mode 100644 web-admin/src/assets/images/settings/theme_styles/dark.png create mode 100644 web-admin/src/assets/images/settings/theme_styles/light.png create mode 100644 web-admin/src/assets/images/settings/theme_styles/system.png create mode 100644 web-admin/src/assets/images/svg/403.svg create mode 100644 web-admin/src/assets/images/svg/404.svg create mode 100644 web-admin/src/assets/images/svg/500.svg create mode 100644 web-admin/src/assets/images/svg/login_icon.svg create mode 100644 web-admin/src/assets/images/user/avatar.webp create mode 100644 web-admin/src/assets/images/user/bg.webp create mode 100755 web-admin/src/assets/logo-img/10.png create mode 100755 web-admin/src/assets/logo-img/10物体识别.png create mode 100755 web-admin/src/assets/logo-img/11人脸比对.png create mode 100755 web-admin/src/assets/logo-img/12.png create mode 100755 web-admin/src/assets/logo-img/14银行卡识别.png create mode 100755 web-admin/src/assets/logo-img/16人脸识别.png create mode 100755 web-admin/src/assets/logo-img/17.png create mode 100755 web-admin/src/assets/logo-img/17录音文件识别.png create mode 100755 web-admin/src/assets/logo-img/20.png create mode 100755 web-admin/src/assets/logo-img/20个人证照.png create mode 100755 web-admin/src/assets/logo-img/22.png create mode 100644 web-admin/src/assets/logo-img/404.svg create mode 100755 web-admin/src/assets/logo-img/7文本纠错.png create mode 100755 web-admin/src/assets/logo-img/9场景识别.png create mode 100644 web-admin/src/assets/logo-img/Notice.svg create mode 100755 web-admin/src/assets/logo-img/bug.png create mode 100644 web-admin/src/assets/logo-img/build.svg create mode 100644 web-admin/src/assets/logo-img/button.svg create mode 100755 web-admin/src/assets/logo-img/caret-back.png create mode 100755 web-admin/src/assets/logo-img/caret-forward.png create mode 100755 web-admin/src/assets/logo-img/cascader.png create mode 100644 web-admin/src/assets/logo-img/category.svg create mode 100644 web-admin/src/assets/logo-img/chart.svg create mode 100644 web-admin/src/assets/logo-img/checkbox.svg create mode 100644 web-admin/src/assets/logo-img/clipboard.svg create mode 100755 web-admin/src/assets/logo-img/code.png create mode 100644 web-admin/src/assets/logo-img/color.svg create mode 100644 web-admin/src/assets/logo-img/company.svg create mode 100644 web-admin/src/assets/logo-img/component.svg create mode 100644 web-admin/src/assets/logo-img/dashboard.svg create mode 100644 web-admin/src/assets/logo-img/date-range.svg create mode 100755 web-admin/src/assets/logo-img/date.png create mode 100755 web-admin/src/assets/logo-img/dict.png create mode 100755 web-admin/src/assets/logo-img/documentation.png create mode 100644 web-admin/src/assets/logo-img/download.svg create mode 100755 web-admin/src/assets/logo-img/drag.png create mode 100644 web-admin/src/assets/logo-img/druid.svg create mode 100644 web-admin/src/assets/logo-img/edit.svg create mode 100644 web-admin/src/assets/logo-img/education.svg create mode 100644 web-admin/src/assets/logo-img/email.svg create mode 100644 web-admin/src/assets/logo-img/empty.svg create mode 100755 web-admin/src/assets/logo-img/example.png create mode 100755 web-admin/src/assets/logo-img/excel.png create mode 100755 web-admin/src/assets/logo-img/exit-fullscreen.png create mode 100755 web-admin/src/assets/logo-img/exit-fullscreen1.png create mode 100755 web-admin/src/assets/logo-img/experience.png create mode 100755 web-admin/src/assets/logo-img/eye-open.png create mode 100644 web-admin/src/assets/logo-img/eye.svg create mode 100644 web-admin/src/assets/logo-img/finish.svg create mode 100755 web-admin/src/assets/logo-img/form.png create mode 100755 web-admin/src/assets/logo-img/guide.png create mode 100755 web-admin/src/assets/logo-img/icon.png create mode 100755 web-admin/src/assets/logo-img/input.png create mode 100644 web-admin/src/assets/logo-img/international.svg create mode 100755 web-admin/src/assets/logo-img/job.png create mode 100755 web-admin/src/assets/logo-img/language.png create mode 100755 web-admin/src/assets/logo-img/link.png create mode 100644 web-admin/src/assets/logo-img/list.svg create mode 100644 web-admin/src/assets/logo-img/lock.svg create mode 100644 web-admin/src/assets/logo-img/log.svg create mode 100644 web-admin/src/assets/logo-img/logininfor.svg create mode 100755 web-admin/src/assets/logo-img/model.png create mode 100644 web-admin/src/assets/logo-img/money.svg create mode 100644 web-admin/src/assets/logo-img/my-copy.svg create mode 100755 web-admin/src/assets/logo-img/my-task.png create mode 100644 web-admin/src/assets/logo-img/my-task.svg create mode 100644 web-admin/src/assets/logo-img/nested.svg create mode 100755 web-admin/src/assets/logo-img/other.png create mode 100644 web-admin/src/assets/logo-img/other1.svg create mode 100755 web-admin/src/assets/logo-img/password.png create mode 100644 web-admin/src/assets/logo-img/pdf.svg create mode 100644 web-admin/src/assets/logo-img/people.svg create mode 100644 web-admin/src/assets/logo-img/peoples.svg create mode 100755 web-admin/src/assets/logo-img/post.png create mode 100644 web-admin/src/assets/logo-img/process-definition.svg create mode 100644 web-admin/src/assets/logo-img/radio.svg create mode 100644 web-admin/src/assets/logo-img/rate.svg create mode 100755 web-admin/src/assets/logo-img/redis-list.png create mode 100644 web-admin/src/assets/logo-img/row.svg create mode 100755 web-admin/src/assets/logo-img/shopping.png create mode 100644 web-admin/src/assets/logo-img/study.svg create mode 100644 web-admin/src/assets/logo-img/system.svg create mode 100755 web-admin/src/assets/logo-img/table.png create mode 100644 web-admin/src/assets/logo-img/tag.svg create mode 100644 web-admin/src/assets/logo-img/tree-table.svg create mode 100644 web-admin/src/assets/logo-img/tree.svg create mode 100644 web-admin/src/assets/logo-img/workflow.svg create mode 100644 web-admin/src/assets/logo-img/zj.svg create mode 100755 web-admin/src/assets/styles/core/app.scss create mode 100755 web-admin/src/assets/styles/core/dark.scss create mode 100644 web-admin/src/assets/styles/core/el-dark.scss create mode 100644 web-admin/src/assets/styles/core/el-light.scss create mode 100644 web-admin/src/assets/styles/core/el-ui.scss create mode 100644 web-admin/src/assets/styles/core/fresh-mint-tokens.scss create mode 100644 web-admin/src/assets/styles/core/md.scss create mode 100755 web-admin/src/assets/styles/core/mixin.scss create mode 100755 web-admin/src/assets/styles/core/reset.scss create mode 100644 web-admin/src/assets/styles/core/router-transition.scss create mode 100644 web-admin/src/assets/styles/core/subtable.scss create mode 100644 web-admin/src/assets/styles/core/tailwind.css create mode 100644 web-admin/src/assets/styles/core/theme-animation.scss create mode 100755 web-admin/src/assets/styles/core/theme-change.scss create mode 100644 web-admin/src/assets/styles/core/utilities-override.scss create mode 100644 web-admin/src/assets/styles/custom/one-dark-pro.scss create mode 100644 web-admin/src/assets/styles/index.scss create mode 100644 web-admin/src/assets/svg/404.svg create mode 100644 web-admin/src/assets/svg/bug.svg create mode 100644 web-admin/src/assets/svg/build.svg create mode 100644 web-admin/src/assets/svg/button.svg create mode 100644 web-admin/src/assets/svg/caret-back.svg create mode 100644 web-admin/src/assets/svg/caret-forward.svg create mode 100644 web-admin/src/assets/svg/cascader.svg create mode 100644 web-admin/src/assets/svg/category.svg create mode 100644 web-admin/src/assets/svg/chart.svg create mode 100644 web-admin/src/assets/svg/checkbox.svg create mode 100644 web-admin/src/assets/svg/clipboard.svg create mode 100644 web-admin/src/assets/svg/code.svg create mode 100644 web-admin/src/assets/svg/color.svg create mode 100644 web-admin/src/assets/svg/company.svg create mode 100644 web-admin/src/assets/svg/component.svg create mode 100644 web-admin/src/assets/svg/dashboard.svg create mode 100644 web-admin/src/assets/svg/date-range.svg create mode 100644 web-admin/src/assets/svg/date.svg create mode 100644 web-admin/src/assets/svg/dict.svg create mode 100644 web-admin/src/assets/svg/documentation.svg create mode 100644 web-admin/src/assets/svg/download.svg create mode 100644 web-admin/src/assets/svg/drag.svg create mode 100644 web-admin/src/assets/svg/druid.svg create mode 100644 web-admin/src/assets/svg/edit.svg create mode 100644 web-admin/src/assets/svg/education.svg create mode 100644 web-admin/src/assets/svg/email.svg create mode 100644 web-admin/src/assets/svg/example.svg create mode 100644 web-admin/src/assets/svg/excel.svg create mode 100644 web-admin/src/assets/svg/exit-fullscreen.svg create mode 100644 web-admin/src/assets/svg/exit-fullscreen1.svg create mode 100644 web-admin/src/assets/svg/experience.svg create mode 100644 web-admin/src/assets/svg/eye-open.svg create mode 100644 web-admin/src/assets/svg/eye.svg create mode 100644 web-admin/src/assets/svg/finish.svg create mode 100644 web-admin/src/assets/svg/form.svg create mode 100644 web-admin/src/assets/svg/fullscreen copy.svg create mode 100644 web-admin/src/assets/svg/fullscreen.svg create mode 100644 web-admin/src/assets/svg/fullscreen1.svg create mode 100644 web-admin/src/assets/svg/fullscreen2.svg create mode 100644 web-admin/src/assets/svg/gitee.svg create mode 100644 web-admin/src/assets/svg/github.svg create mode 100644 web-admin/src/assets/svg/guide.svg create mode 100644 web-admin/src/assets/svg/icon.svg create mode 100644 web-admin/src/assets/svg/input.svg create mode 100644 web-admin/src/assets/svg/international.svg create mode 100644 web-admin/src/assets/svg/job.svg create mode 100644 web-admin/src/assets/svg/language.svg create mode 100644 web-admin/src/assets/svg/link.svg create mode 100644 web-admin/src/assets/svg/list.svg create mode 100644 web-admin/src/assets/svg/loading.ts create mode 100644 web-admin/src/assets/svg/lock.svg create mode 100644 web-admin/src/assets/svg/log.svg create mode 100644 web-admin/src/assets/svg/logininfor.svg create mode 100644 web-admin/src/assets/svg/maxkey.svg create mode 100644 web-admin/src/assets/svg/message.svg create mode 100644 web-admin/src/assets/svg/message1.svg create mode 100644 web-admin/src/assets/svg/model.svg create mode 100644 web-admin/src/assets/svg/money.svg create mode 100644 web-admin/src/assets/svg/monitor.svg create mode 100644 web-admin/src/assets/svg/my-copy.svg create mode 100644 web-admin/src/assets/svg/my-task.svg create mode 100644 web-admin/src/assets/svg/nested.svg create mode 100644 web-admin/src/assets/svg/number.svg create mode 100644 web-admin/src/assets/svg/online.svg create mode 100644 web-admin/src/assets/svg/password.svg create mode 100644 web-admin/src/assets/svg/pdf.svg create mode 100644 web-admin/src/assets/svg/people.svg create mode 100644 web-admin/src/assets/svg/peoples.svg create mode 100644 web-admin/src/assets/svg/phone.svg create mode 100644 web-admin/src/assets/svg/post.svg create mode 100644 web-admin/src/assets/svg/process-definition.svg create mode 100644 web-admin/src/assets/svg/qq.svg create mode 100644 web-admin/src/assets/svg/question.svg create mode 100644 web-admin/src/assets/svg/radio.svg create mode 100644 web-admin/src/assets/svg/rate.svg create mode 100644 web-admin/src/assets/svg/redis-list.svg create mode 100644 web-admin/src/assets/svg/redis.svg create mode 100644 web-admin/src/assets/svg/row.svg create mode 100644 web-admin/src/assets/svg/search-1.svg create mode 100644 web-admin/src/assets/svg/search.svg create mode 100644 web-admin/src/assets/svg/select.svg create mode 100644 web-admin/src/assets/svg/server.svg create mode 100644 web-admin/src/assets/svg/shopping.svg create mode 100644 web-admin/src/assets/svg/size.svg create mode 100644 web-admin/src/assets/svg/skill.svg create mode 100644 web-admin/src/assets/svg/slider.svg create mode 100644 web-admin/src/assets/svg/star.svg create mode 100644 web-admin/src/assets/svg/swagger.svg create mode 100644 web-admin/src/assets/svg/switch.svg create mode 100644 web-admin/src/assets/svg/system.svg create mode 100644 web-admin/src/assets/svg/tab.svg create mode 100644 web-admin/src/assets/svg/table.svg create mode 100644 web-admin/src/assets/svg/textarea.svg create mode 100644 web-admin/src/assets/svg/theme.svg create mode 100644 web-admin/src/assets/svg/time-range.svg create mode 100644 web-admin/src/assets/svg/time.svg create mode 100644 web-admin/src/assets/svg/tool.svg create mode 100644 web-admin/src/assets/svg/topiam.svg create mode 100644 web-admin/src/assets/svg/tree-table.svg create mode 100644 web-admin/src/assets/svg/tree.svg create mode 100644 web-admin/src/assets/svg/upload.svg create mode 100644 web-admin/src/assets/svg/user.svg create mode 100644 web-admin/src/assets/svg/validCode.svg create mode 100644 web-admin/src/assets/svg/waiting.svg create mode 100644 web-admin/src/assets/svg/wechat.svg create mode 100644 web-admin/src/assets/svg/workflow.svg create mode 100644 web-admin/src/assets/svg/zip.svg create mode 100644 web-admin/src/components/core/banners/art-basic-banner/index.vue create mode 100644 web-admin/src/components/core/banners/art-card-banner/index.vue create mode 100644 web-admin/src/components/core/base/art-back-to-top/index.vue create mode 100644 web-admin/src/components/core/base/art-logo/index.vue create mode 100644 web-admin/src/components/core/base/art-svg-icon/index.vue create mode 100644 web-admin/src/components/core/cards/art-bar-chart-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-data-list-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-donut-chart-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-image-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-line-chart-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-progress-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-stats-card/index.vue create mode 100644 web-admin/src/components/core/cards/art-timeline-list-card/index.vue create mode 100644 web-admin/src/components/core/charts/art-bar-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-h-bar-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-k-line-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-line-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-map-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-radar-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-ring-chart/index.vue create mode 100644 web-admin/src/components/core/charts/art-scatter-chart/index.vue create mode 100644 web-admin/src/components/core/forms/art-button-more/index.vue create mode 100644 web-admin/src/components/core/forms/art-button-table/index.vue create mode 100644 web-admin/src/components/core/forms/art-drag-verify/index.vue create mode 100644 web-admin/src/components/core/forms/art-excel-export/index.vue create mode 100644 web-admin/src/components/core/forms/art-excel-import/index.vue create mode 100644 web-admin/src/components/core/forms/art-form/index.vue create mode 100644 web-admin/src/components/core/forms/art-search-bar/index.vue create mode 100644 web-admin/src/components/core/forms/art-wang-editor/index.vue create mode 100644 web-admin/src/components/core/forms/art-wang-editor/style.scss create mode 100755 web-admin/src/components/core/layouts/art-breadcrumb/index.vue create mode 100644 web-admin/src/components/core/layouts/art-chat-window/index.vue create mode 100644 web-admin/src/components/core/layouts/art-fast-enter/index.vue create mode 100644 web-admin/src/components/core/layouts/art-fireworks-effect/index.vue create mode 100644 web-admin/src/components/core/layouts/art-global-component/index.vue create mode 100644 web-admin/src/components/core/layouts/art-global-search/index.vue create mode 100644 web-admin/src/components/core/layouts/art-header-bar/index.vue create mode 100644 web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue create mode 100644 web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue create mode 100644 web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue create mode 100644 web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue create mode 100644 web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue create mode 100755 web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss create mode 100644 web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss create mode 100755 web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue create mode 100755 web-admin/src/components/core/layouts/art-notification/index.vue create mode 100644 web-admin/src/components/core/layouts/art-page-content/index.vue create mode 100644 web-admin/src/components/core/layouts/art-screen-lock/index.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts create mode 100755 web-admin/src/components/core/layouts/art-settings-panel/index.vue create mode 100755 web-admin/src/components/core/layouts/art-settings-panel/style.scss create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue create mode 100644 web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue create mode 100644 web-admin/src/components/core/layouts/art-work-tab/index.vue create mode 100644 web-admin/src/components/core/media/art-cutter-img/index.vue create mode 100644 web-admin/src/components/core/media/art-video-player/index.vue create mode 100644 web-admin/src/components/core/others/art-menu-right/index.vue create mode 100644 web-admin/src/components/core/others/art-watermark/index.vue create mode 100644 web-admin/src/components/core/tables/art-table-header/index.vue create mode 100644 web-admin/src/components/core/tables/art-table/index.vue create mode 100644 web-admin/src/components/core/tables/art-table/style.scss create mode 100644 web-admin/src/components/core/text-effect/art-count-to/index.vue create mode 100644 web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue create mode 100644 web-admin/src/components/core/text-effect/art-text-scroll/index.vue create mode 100644 web-admin/src/components/core/theme/theme-svg/index.vue create mode 100644 web-admin/src/components/core/views/exception/ArtException.vue create mode 100644 web-admin/src/components/core/views/login/AuthTopBar.vue create mode 100644 web-admin/src/components/core/views/login/LoginLeftView.vue create mode 100644 web-admin/src/components/core/views/result/ArtResultPage.vue create mode 100644 web-admin/src/components/core/widget/art-icon-button/index.vue create mode 100644 web-admin/src/config/assets/images.ts create mode 100644 web-admin/src/config/index.ts create mode 100644 web-admin/src/config/modules/component.ts create mode 100644 web-admin/src/config/modules/fastEnter.ts create mode 100644 web-admin/src/config/modules/festival.ts create mode 100644 web-admin/src/config/modules/headerBar.ts create mode 100644 web-admin/src/config/setting.ts create mode 100644 web-admin/src/directives/business/highlight.ts create mode 100644 web-admin/src/directives/business/ripple.ts create mode 100755 web-admin/src/directives/core/auth.ts create mode 100644 web-admin/src/directives/core/roles.ts create mode 100755 web-admin/src/directives/index.ts create mode 100755 web-admin/src/enums/appEnum.ts create mode 100644 web-admin/src/enums/formEnum.ts create mode 100755 web-admin/src/env.d.ts create mode 100644 web-admin/src/hooks/core/useAppMode.ts create mode 100644 web-admin/src/hooks/core/useAuth.ts create mode 100644 web-admin/src/hooks/core/useCeremony.ts create mode 100644 web-admin/src/hooks/core/useChart.ts create mode 100644 web-admin/src/hooks/core/useCommon.ts create mode 100644 web-admin/src/hooks/core/useFastEnter.ts create mode 100644 web-admin/src/hooks/core/useHeaderBar.ts create mode 100644 web-admin/src/hooks/core/useLayoutHeight.ts create mode 100644 web-admin/src/hooks/core/useTable.ts create mode 100644 web-admin/src/hooks/core/useTableColumns.ts create mode 100644 web-admin/src/hooks/core/useTableHeight.ts create mode 100644 web-admin/src/hooks/core/useTheme.ts create mode 100644 web-admin/src/hooks/index.ts create mode 100644 web-admin/src/locales/index.ts create mode 100644 web-admin/src/locales/langs/en.json create mode 100644 web-admin/src/locales/langs/zh.json create mode 100644 web-admin/src/main.ts create mode 100644 web-admin/src/mock/json/chinaMap.json create mode 100644 web-admin/src/mock/upgrade/changeLog.ts create mode 100644 web-admin/src/plugins/echarts.ts create mode 100644 web-admin/src/plugins/index.ts create mode 100644 web-admin/src/router/core/ComponentLoader.ts create mode 100644 web-admin/src/router/core/IframeRouteManager.ts create mode 100644 web-admin/src/router/core/MenuProcessor.ts create mode 100644 web-admin/src/router/core/RoutePermissionValidator.ts create mode 100644 web-admin/src/router/core/RouteRegistry.ts create mode 100644 web-admin/src/router/core/RouteTransformer.ts create mode 100644 web-admin/src/router/core/RouteValidator.ts create mode 100644 web-admin/src/router/core/index.ts create mode 100644 web-admin/src/router/guards/afterEach.ts create mode 100644 web-admin/src/router/guards/beforeEach.ts create mode 100755 web-admin/src/router/index.ts create mode 100644 web-admin/src/router/modules/article.ts create mode 100644 web-admin/src/router/modules/exception.ts create mode 100644 web-admin/src/router/modules/help.ts create mode 100644 web-admin/src/router/modules/index.ts create mode 100644 web-admin/src/router/modules/result.ts create mode 100644 web-admin/src/router/modules/safeguard.ts create mode 100644 web-admin/src/router/modules/style-reference.ts create mode 100644 web-admin/src/router/routes/asyncRoutes.ts create mode 100644 web-admin/src/router/routes/staticRoutes.ts create mode 100644 web-admin/src/router/routesAlias.ts create mode 100644 web-admin/src/shims-loose.d.ts create mode 100755 web-admin/src/store/index.ts create mode 100755 web-admin/src/store/modules/menu.ts create mode 100755 web-admin/src/store/modules/setting.ts create mode 100644 web-admin/src/store/modules/table.ts create mode 100644 web-admin/src/store/modules/user.ts create mode 100755 web-admin/src/store/modules/worktab.ts create mode 100644 web-admin/src/types/api.d.ts create mode 100644 web-admin/src/types/api/api.d.ts create mode 100644 web-admin/src/types/common/index.ts create mode 100644 web-admin/src/types/common/response.ts create mode 100644 web-admin/src/types/component/chart.ts create mode 100644 web-admin/src/types/component/index.ts create mode 100644 web-admin/src/types/config/index.ts create mode 100644 web-admin/src/types/directive/directive.d.ts create mode 100644 web-admin/src/types/index.ts create mode 100644 web-admin/src/types/router/index.ts create mode 100644 web-admin/src/types/store/index.ts create mode 100644 web-admin/src/utils/category-path-display.ts create mode 100644 web-admin/src/utils/constants/index.ts create mode 100644 web-admin/src/utils/constants/links.ts create mode 100644 web-admin/src/utils/fetch-paged-list.ts create mode 100644 web-admin/src/utils/form/index.ts create mode 100644 web-admin/src/utils/form/responsive.ts create mode 100644 web-admin/src/utils/form/validator.ts create mode 100644 web-admin/src/utils/fullscreen-loading.ts create mode 100644 web-admin/src/utils/http/crypto.ts create mode 100644 web-admin/src/utils/http/error.ts create mode 100644 web-admin/src/utils/http/index.ts create mode 100644 web-admin/src/utils/http/status.ts create mode 100644 web-admin/src/utils/index.ts create mode 100644 web-admin/src/utils/loginRsa.ts create mode 100644 web-admin/src/utils/navigation/index.ts create mode 100644 web-admin/src/utils/navigation/jump.ts create mode 100644 web-admin/src/utils/navigation/route.ts create mode 100644 web-admin/src/utils/navigation/worktab.ts create mode 100644 web-admin/src/utils/patch-el-select-filterable.ts create mode 100644 web-admin/src/utils/router.ts create mode 100644 web-admin/src/utils/router/sidebar-menu-filter.ts create mode 100644 web-admin/src/utils/socket/index.ts create mode 100644 web-admin/src/utils/sort-order.ts create mode 100644 web-admin/src/utils/storage/index.ts create mode 100644 web-admin/src/utils/storage/storage-config.ts create mode 100644 web-admin/src/utils/storage/storage-key-manager.ts create mode 100644 web-admin/src/utils/storage/storage.ts create mode 100644 web-admin/src/utils/sys/console.ts create mode 100644 web-admin/src/utils/sys/error-handle.ts create mode 100644 web-admin/src/utils/sys/index.ts create mode 100644 web-admin/src/utils/sys/mittBus.ts create mode 100644 web-admin/src/utils/sys/upgrade.ts create mode 100644 web-admin/src/utils/table/tableCache.ts create mode 100644 web-admin/src/utils/table/tableConfig.ts create mode 100644 web-admin/src/utils/table/tableUtils.ts create mode 100644 web-admin/src/utils/tree-path.ts create mode 100644 web-admin/src/utils/ui/animation.ts create mode 100755 web-admin/src/utils/ui/colors.ts create mode 100644 web-admin/src/utils/ui/emojo.ts create mode 100644 web-admin/src/utils/ui/iconify-loader.ts create mode 100644 web-admin/src/utils/ui/index.ts create mode 100644 web-admin/src/utils/ui/loading.ts create mode 100644 web-admin/src/utils/ui/tabs.ts create mode 100644 web-admin/src/utils/user-avatar.ts create mode 100755 web-admin/src/views/exception/403/index.vue create mode 100755 web-admin/src/views/exception/404/index.vue create mode 100755 web-admin/src/views/exception/500/index.vue create mode 100755 web-admin/src/views/index/index.vue create mode 100644 web-admin/src/views/index/style.scss create mode 100644 web-admin/src/views/outside/Iframe.vue create mode 100644 web-admin/src/views/style-reference/delivery-demo/index.vue create mode 100644 web-admin/src/views/style-reference/login-sample/index.vue create mode 100644 web-admin/src/views/style-reference/mint-tokens/index.vue create mode 100755 web-admin/tsconfig.json create mode 100644 web-admin/vite.config.ts diff --git a/web-admin b/web-admin deleted file mode 160000 index 6b6d781a..00000000 --- a/web-admin +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6b6d781a63eb51782841ac9c29c2bb42a23911f2 diff --git a/web-admin/.gitattributes b/web-admin/.gitattributes new file mode 100644 index 00000000..866e8eeb --- /dev/null +++ b/web-admin/.gitattributes @@ -0,0 +1,2 @@ +*.html linguist-detectable=false +*.vue linguist-detectable=true diff --git a/web-admin/.gitignore b/web-admin/.gitignore new file mode 100755 index 00000000..e48d2e97 --- /dev/null +++ b/web-admin/.gitignore @@ -0,0 +1,11 @@ +node_modules +.DS_Store +dist +dist-ssr +*.local +.cursorrules + +# Auto-generated files +src/types/import/auto-imports.d.ts +src/types/import/components.d.ts +.auto-import.json diff --git a/web-admin/.husky/commit-msg b/web-admin/.husky/commit-msg new file mode 100644 index 00000000..09d2b148 --- /dev/null +++ b/web-admin/.husky/commit-msg @@ -0,0 +1 @@ +pnpm dlx commitlint --edit $1 \ No newline at end of file diff --git a/web-admin/.husky/pre-commit b/web-admin/.husky/pre-commit new file mode 100644 index 00000000..22c0347e --- /dev/null +++ b/web-admin/.husky/pre-commit @@ -0,0 +1 @@ +pnpm run lint:lint-staged \ No newline at end of file diff --git a/web-admin/.prettierignore b/web-admin/.prettierignore new file mode 100644 index 00000000..9e96efc3 --- /dev/null +++ b/web-admin/.prettierignore @@ -0,0 +1,3 @@ +/node_modules/* +/dist/* +/src/main.ts \ No newline at end of file diff --git a/web-admin/.prettierrc b/web-admin/.prettierrc new file mode 100644 index 00000000..f3d6ad50 --- /dev/null +++ b/web-admin/.prettierrc @@ -0,0 +1,20 @@ +{ + "printWidth": 100, + "tabWidth": 2, + "useTabs": false, + "semi": false, + "vueIndentScriptAndStyle": true, + "singleQuote": true, + "quoteProps": "as-needed", + "bracketSpacing": true, + "trailingComma": "none", + "bracketSameLine": false, + "jsxSingleQuote": false, + "arrowParens": "always", + "insertPragma": false, + "requirePragma": false, + "proseWrap": "never", + "htmlWhitespaceSensitivity": "strict", + "endOfLine": "auto", + "rangeStart": 0 +} diff --git a/web-admin/.stylelintignore b/web-admin/.stylelintignore new file mode 100644 index 00000000..476ea45c --- /dev/null +++ b/web-admin/.stylelintignore @@ -0,0 +1,9 @@ +dist +node_modules +public +.husky +.vscode + +src/components/Layout/MenuLeft/index.vue +src/assets +stats.html \ No newline at end of file diff --git a/web-admin/.stylelintrc.cjs b/web-admin/.stylelintrc.cjs new file mode 100644 index 00000000..9dbea0b9 --- /dev/null +++ b/web-admin/.stylelintrc.cjs @@ -0,0 +1,82 @@ +module.exports = { + // 继承推荐规范配置 + extends: [ + 'stylelint-config-standard', + 'stylelint-config-recommended-scss', + 'stylelint-config-recommended-vue/scss', + 'stylelint-config-html/vue', + 'stylelint-config-recess-order' + ], + // 指定不同文件对应的解析器 + overrides: [ + { + files: ['**/*.{vue,html}'], + customSyntax: 'postcss-html' + }, + { + files: ['**/*.{css,scss}'], + customSyntax: 'postcss-scss' + } + ], + // 自定义规则 + rules: { + 'import-notation': 'string', // 指定导入CSS文件的方式("string"|"url") + 'selector-class-pattern': null, // 选择器类名命名规则 + 'custom-property-pattern': null, // 自定义属性命名规则 + 'keyframes-name-pattern': null, // 动画帧节点样式命名规则 + 'no-descending-specificity': null, // 允许无降序特异性 + 'no-empty-source': null, // 允许空样式 + 'property-no-vendor-prefix': null, // 允许属性前缀 + // 允许 global 、export 、deep伪类 + 'selector-pseudo-class-no-unknown': [ + true, + { + ignorePseudoClasses: ['global', 'export', 'deep'] + } + ], + // 允许未知属性 + 'property-no-unknown': [ + true, + { + ignoreProperties: [] + } + ], + // 允许未知规则 + 'at-rule-no-unknown': [ + true, + { + ignoreAtRules: [ + 'apply', + 'use', + 'mixin', + 'include', + 'extend', + 'each', + 'if', + 'else', + 'for', + 'while', + 'reference' + ] + } + ], + 'scss/at-rule-no-unknown': [ + true, + { + ignoreAtRules: [ + 'apply', + 'use', + 'mixin', + 'include', + 'extend', + 'each', + 'if', + 'else', + 'for', + 'while', + 'reference' + ] + } + ] + } +} diff --git a/web-admin/.vscode/extensions.json b/web-admin/.vscode/extensions.json new file mode 100644 index 00000000..d7766fa4 --- /dev/null +++ b/web-admin/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "vue.volar", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "stylelint.vscode-stylelint", + "lokalise.i18n-ally", + "bradlc.vscode-tailwindcss" + ] +} diff --git a/web-admin/.vscode/settings.json b/web-admin/.vscode/settings.json new file mode 100755 index 00000000..5268fc2c --- /dev/null +++ b/web-admin/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "volar.inlayHints.eventArgumentInInlineHandlers": true, + "css.lint.unknownAtRules": "ignore", + "i18n-ally.localesPaths": ["src/locales/langs", "src/locales"], + "i18n-ally.enabledParsers": ["json"], + "i18n-ally.sourceLanguage": "en", + "i18n-ally.displayLanguage": "zh", + "i18n-ally.enabledFrameworks": ["vue", "react"], + "i18n-ally.keystyle": "nested", + "i18n-ally.sortKeys": true, + "i18n-ally.namespace": true +} diff --git a/web-admin/CHANGELOG.md b/web-admin/CHANGELOG.md new file mode 100644 index 00000000..05d5d90d --- /dev/null +++ b/web-admin/CHANGELOG.md @@ -0,0 +1,650 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Released] + +### v3.0.1 - 2025-11-15 + +#### Fixed + +- Fixed repeated API calls issue when accessing non-existent interfaces during route registration +- Fixed one-click cleanup script build failure issue + +#### Optimized + +- Enhanced route configuration validation mechanism, automatically detects and prompts path configuration errors for non-first-level menus +- Optimized top progress bar ghosting issue +- Optimized vite pre-build configuration +- Unified border radius and border consistency +- Redesigned lock screen page, improved visual experience +- Optimized visual experience issue caused by logout menu disappearing prematurely + +#### Added + +- ArtForm and ArtSearchBar component labels support custom render functions, enabling complex labels with tooltips +- Menu management form key fields added Tooltip hints, lowering user configuration threshold +- Iconify added offline icon loading mode +- Logout added redirect property for redirecting to corresponding page after re-login +- Logout and re-entry preserves user tabs, identified by userId +- Dual menu added collapse button +- Enhanced menu icons +- Multi-tab pages added icon display +- Added WebSocket connection example +- Lock screen password error triggers input box shake animation + +#### ⚠️ Important Notice + +> This version requires re-login + +--- + +### v3.0.0 - 2025-11-09 🎉 + +#### Refactored + +- Style system refactored: Sass fully migrated to Tailwind CSS, improving development efficiency and style consistency +- Icon solution upgraded: Iconfont replaced with Iconify, supporting richer icon libraries and on-demand loading +- Route registration refactored: Comprehensive refactoring of route registration system with object-oriented design, improving code maintainability, testability and extensibility +- Refactored ArtTextScroll component, improving performance and maintainability +- Refactored color system, unified UI visual specifications, improving interface consistency + +#### Optimized + +- Build optimization: Complete package size reduced by 1.3 MB, significantly improving loading performance +- Architecture optimization: Optimized directory structure with clearer responsibility division, reducing user learning curve and onboarding difficulty +- Comment optimization: Unified module comment standards, improved component descriptions, feature explanations and usage examples, reducing user understanding cost and onboarding difficulty +- Performance improvement: Optimized core code logic, improving system runtime efficiency +- Menu optimization: Refined menu styles, optimized interaction experience and visual presentation +- Responsive optimization: Optimized ArtForm and ArtSearchBar grid layout, adapting to various screen sizes +- Configuration management optimization: Added setting.ts configuration file, supporting one-click copy and reset of system default settings + +#### Fixed + +- Fixed ArtForm and ArtSearchBar custom component rendering issues + +#### Added + +- ArtForm and ArtSearchBar added render property, supporting custom component rendering +- Festival feature enhancement: Fireworks configuration supports cross-date range settings and custom playback counts + +#### Upgraded + +- Dependency updates: Upgraded core dependencies to latest stable versions + +#### ⚠️ Important Notice + +> This upgrade involves fundamental refactoring of the style system (Sass → Tailwind CSS) and icon library (Iconfont → Iconify), which is a breaking change. It is recommended to use v3.0 for new projects. Upgrading existing projects is not recommended. + +--- + +### v2.6.1 - 2025-10-19 + +#### Fixed + +- Fixed repeated API calls issue when accessing invalid addresses for user info and menu endpoints +- Fixed ElButton circle mode styles +- Fixed ElSelect keyboard selection issue +- Fixed static routes with parameters redirecting to login page issue + +#### Optimized + +- Upgraded some dependencies to be compatible with tailwindcss +- Optimized external link menu click selection state +- Added theme color switching feature to authorization pages + +--- + +### v2.6.0 - 2025-10-16 + +#### Added + +- Extended registration and password reset page top component support + +#### Optimized + +- Optimized streamlined version menu data structure, improved data consistency +- Optimized local development environment network request proxy configuration +- Optimized ElTree component default styles +- Added VsCode recommended plugin related configuration +- Optimized ElDropdown component click trigger mode interaction styles +- Optimized menu filtering logic +- Optimized page switching animation, improved loading speed +- Optimized dark mode text color + +#### Fixed + +- Fixed static route custom home page path first visit redirecting to login page issue +- Fixed logout briefly jumping to 500 page issue +- Fixed v2.5.9 version home route redirect configuration failure issue +- Fixed v2.5.9 auto-import mechanism causing build exception + +#### ⚠️ Important Notice + +> This version requires re-login + +--- + +### v2.5.9 - 2025-10-12 + +#### Code Optimized + +- Optimized views file directory, file names, and code +- Added global configuration for useTable pagination request fields (tableConfig.ts) +- Optimized routing configuration to modular structure +- Menu API now uses apifox mock data (set VITE_ACCESS_MODE to backend mode in .env) + +--- + +### v2.5.8 - 2025-09-29 + +#### Upgraded + +- Upgraded core libraries including vue, vite, element-plus + +#### Fixed + +- Fixed rich text editor fullscreen top bar z-index issue +- Fixed table column sorting component text overflow issue +- Fixed statistics card condition judgment +- Fixed infinite redirect when root path / and HOME_PAGE_PATH are both / + +#### Optimized + +- Optimized el-tag styles +- Optimized top progress bar color +- Optimized custom theme configuration +- Optimized ElementPlus custom theme issues + +#### ⚠️ Important Notice + +> Due to dependency upgrades, Node version needs to be upgraded to v20.19.0 or above + +--- + +### v2.5.7 - 2025-09-14 + +#### Added + +- Added ArtForm component + +#### Fixed + +- Fixed theme switching flicker issue in new Chrome versions + +#### Optimized + +- Optimized form label height alignment issue +- First screen startup performance optimization + +--- + +### v2.5.6 - 2025-09-06 + +#### Added + +- ArtTableHeader added search button to control top search bar visibility +- Added permission demonstration examples +- Added global error handling framework + +#### Optimized + +- useTable type inference optimization, no need to manually pass types for type hints +- useTable removeColumn supports multiple data deletion +- useTable auto-recognizes response body with custom configuration (src/utils/table/tableConfig.ts) +- useTable empty data browser warning optimization +- API request code optimization, api.d.ts type optimization +- Optimized ArtTable top button wrapping adaptive issue +- ArtTable pagination component selection style optimization +- ArtTable empty state height fills by default +- ArtButtonMore component added icon and color configuration +- ArtSearchBar label doesn't occupy space when empty +- Table operation column drag prohibits fixed column dragging +- Role management page API integration and code optimization +- Menu management page optimization +- Optimized settings center scroll following issue +- First-level route external link component validation logic optimization +- Optimized map bottom-right drag issue +- Optimized dark mode page refresh white background issue +- Optimized left menu collapse button spacing issue +- Mobile displays left menu logo +- Network request added showSuccessMessage to configure success message display +- Global components use async loading strategy to improve first screen loading performance + +#### Fixed + +- Fixed bug where batch deleting entire page data doesn't return to previous page +- Fixed dynamic route parameter issues +- Fixed dynamic route configuration first-level route iframe page fullscreen issue + +--- + +### v2.5.5 - 2025-08-17 + +#### Added + +- Added ArtSearchBar component examples +- useTable added excludeParams to exclude certain parameters from requests + +#### Refactored + +- Refactored ArtSearchBar component, supports more components and form validation + +#### Optimized + +- useTable column configuration: supports dynamic update capability +- Optimized color picker border radius +- Unified el-radio and el-checkbox sizes +- art-stats-card added decimal places and separator configuration +- Route configuration example optimization +- Advanced table added custom data fetching example +- Optimized path alias type issues +- Local development CORS configuration optimization +- useTable property and method naming optimization +- Login page UI upgrade +- 403, 404, 500 page UI upgrade + +#### Fixed + +- Fixed multiple rich text editor icon inconsistency issue +- Fixed useTable deleting last entire page data not returning to previous page issue +- Fixed echarts chart data initialization and update browser error +- Network request supports logout on HTTP status code 401 +- Optimized network request logout multiple prompt issue + +#### Removed + +- Removed art-chart-empty component + +--- + +### v2.5.4 - 2025-07-27 + +#### Added + +- Network request headers support custom configuration +- Expand row supports formatter rendering + +#### Optimized + +- Route registration added component validation + +#### Fixed + +- Fixed user info API timing issue causing route registration menu rendering error +- Fixed dynamic route validation issue causing iframe not to display +- Fixed reset file syntax error +- Fixed ArtTable data type error +- Fixed map scroll wheel zoom issue + +--- + +### v2.5.3 - 2025-07-20 + +#### Added + +- Added table left-right layout example + +#### Refactored + +- ArtTable component refactored + +#### Upgraded + +- Element Plus upgraded to v2.10.2 + +#### Optimized + +- Optimized useTable pagination parameter issue +- Optimized network request example: initialization parameters, pagination carrying parameters +- Optimized search date range parameter handling +- Optimized el-date-picker component border radius +- Optimized el-select component hover style +- Search component and pagination component height reduced +- Optimized login page slider animation interval +- Optimized menu without submenu display issue + +#### Fixed + +- Fixed ArtTable switching page size executing two requests bug + +--- + +### v2.5.2 - 2025-07-13 + +#### Added + +- Added one-click cleanup script for quick development environment preparation +- useTable hooks support custom pagination field name mapping +- Horizontal menu, mixed menu, double column menu support badge display +- Quick entry supports configuration file mode +- Top bar function supports configuration file mode +- Support custom home page path +- Route supports redirect and other attributes configuration + +#### Optimized + +- Global event bus mittBus type safety optimization +- Optimized mobile settings container width style +- Optimized login page verification slider text centering effect + +#### Fixed + +- Fixed table no data header not displaying issue +- Fixed v2.5.0 top progress bar not displaying issue +- Fixed left menu mask abnormal display issue +- Fixed hiding all submenus still showing parent menu issue +- Fixed stylelint causing login page slider style abnormality +- Fixed old mobile device loading positioning issue + +--- + +### v2.5.1 - 2025-07-08 + +#### Optimized + +- el-card and el-table background color consistent with system + +#### Fixed + +- Fixed first login system loading closing early bug +- Fixed v2.5.0 version causing fullscreen page style z-index too low bug +- Fixed v2.5.0 version causing table expand row collapse bug + +--- + +### v2.5.0 - 2025-07-06 🎉 + +#### Added + +- Added useTable hooks table encapsulation, supports data fetching, transformation, response adaptation, intelligent caching (based on LRU algorithm), error handling, column configuration and slots, pagination control, refresh strategies and other core functions, comprehensively improving development efficiency and user experience + +#### Refactored + +- Refactored ArtTable, ArtTableHeader, ArtNotification components + +#### Upgraded + +- Echarts version upgraded to 5.6.0 + +#### Removed + +- Removed CountTo plugin, replaced with ArtCountTo component + +#### Fixed + +- Fixed menu management search directly modifying pinia data issue +- Fixed route guard loading flicker issue + +#### ⚠️ Important Notice + +> Recommended upgrade for more efficient and intelligent table development experience + +--- + +### v2.4.2.9 - 2025-07-02 + +#### Refactored + +- Menu layout and top navigation code refactored + +#### Optimized + +- Optimized mobile menu scroll user experience +- Optimized top menu style issues +- Top menu width adaptive, can display more content, mixed menu supports mouse scroll +- asyncRoutes route configuration auth_mark field changed to authMark +- Removed duplicate components.d.ts file, components.d.ts and auto-imports.d.ts ignored from commits +- Optimized i18n language file loading method, changed from async to sync mode +- Optimized el-pagination size inconsistency issue + +#### Fixed + +- Fixed mobile lock screen page some browsers unable to unlock bug + +--- + +### v2.4.2.8 - 2025-06-26 + +#### Fixed + +- Fixed v2.4.2.7 version accessing / path showing 404 issue + +--- + +### v2.4.2.7 - 2025-06-25 + +#### Added + +- Route supports fullscreen mode configuration +- Route supports auto-jump to first valid route of menu +- Dynamic route added removeAllDynamicRoutes method for completely clearing all dynamic routes +- Permission custom directive optimization, added role permission directive v-roles for controlling element visibility +- Added tab operation examples + +#### Optimized + +- CORS request carrying cookie configuration from environment variables, disabled by default +- Some optimizations for SEO and accessibility + +#### Fixed + +- Fixed login page drag component ArtDragVerify width and color abnormal bug +- Fixed iframe page mixed mode and double column mode abnormal bug +- Optimized lock screen page being penetrated by el-loading bug + +--- + +### v2.4.2.6 - 2025-06-23 + +#### Refactored + +- Refactored form-related components in components/core/forms folder, improved maintainability and consistency +- Refactored ArtBreadcrumb breadcrumb navigation component, optimized logic structure and styles +- Refactored ArtFireworksEffect fireworks effect component, significantly improved rendering performance and animation smoothness + +#### Optimized + +- Optimized ArtChatWindow and ArtFastEnter component code, improved readability and performance + +#### Added + +- README documentation added official website link for easy access to project documentation + +--- + +### v2.4.2.5 - 2025-06-22 + +#### Refactored + +- Refactored chart components, optimized code structure and maintainability +- Fine-tuned chart animations and theme color schemes, improved visual consistency + +--- + +### v2.4.2.4 - 2025-06-18 + +#### Refactored + +- ArtMenuRight component refactored +- Components under components/core/cards refactored, code optimized + +#### Optimized + +- ArtWatermark added type annotations + +--- + +### v2.4.2.3 - 2025-06-18 + +#### Refactored + +- ArtResultPage component refactored + +#### Optimized + +- ArtTextScroll component code optimization +- ArtException component added type hints +- ArtCutterImg component style optimization, added type definitions +- ArtVideoPlayer component added type definitions + +--- + +### v2.4.2.2 - 2025-06-16 + +#### Refactored + +- Back to top component refactored +- Icon selector component refactored + +#### Changed + +- System Logo component property changes + +--- + +### v2.4.2.1 - 2025-06-16 + +#### Refactored + +- Banner component refactored and optimized + +#### Fixed + +- Fixed mixed menu first menu nested menu jump bug + +--- + +### v2.4.2 - 2025-06-14 + +#### Refactored + +- Refactored network request module, enhanced error handling, type safety and multi-language support + +#### Added + +- Route configuration added activePath active menu path property + +#### Optimized + +- Guide and column settings multi-language improvement +- Removed invalid code from user list and menu management pages +- Updated technical support link + +#### Fixed + +- Fixed mobile search bar unable to scroll, iPad page scroll abnormal issue +- Fixed el-dialog enabling draggable property causing custom animation failure issue +- Fixed v2.3.0 local storage refactoring causing login, registration page multi-language settings unable to persist issue +- Fixed table fixed column not working bug +- Fixed infinite redirect when root path / and HOME_PAGE_PATH are both / + +#### ⚠️ Important Notice + +> This version requires re-login + +--- + +### v2.4.1.1 - 2025-06-07 + +#### Optimized + +- Optimized role management page code +- el-dialog visual effect optimization, supports line configuration +- System theme mode changed from Light to follow system mode + +#### Fixed + +- Fixed menu management collapse bug +- Fixed table empty data height infinitely growing bug + +--- + +### v2.4.1 - 2025-06-07 + +#### Added + +- Prohibit using developer tools to crack lock screen when locked + +#### Optimized + +- Improved menu operation responsiveness +- Page entrance animation time reduced by 0.04s +- Echarts chart performance optimization, added visible area initialization, memory leak protection, debounce handling + +#### Fixed + +- Fixed Echarts chart component not displaying in dialog bug + +--- + +### v2.4.0 - 2025-06-06 🎉 + +#### Refactored + +- Global TypeScript type system refactored, improved type accuracy and maintainability +- Refactored utils toolkit, unified utility method structure, enhanced readability and reusability + +#### Added + +- utils added form validation and Cookie operation related utility functions +- Page components added defineOptions for explicit component naming +- HTTP request added token expiration auto-handling logic, improved security and user experience + +#### Optimized + +- Deleted unused utility modules and invalid resources, streamlined project size +- Optimized views page structure, removed redundant page files +- Exception page multi-language support, improved internationalization experience +- Image resources uniformly converted to webp format, overall resource size reduced by about 50% +- Build output reduced by about 1MB, improved loading efficiency + +#### ⚠️ Important Notice + +> This version requires re-login + +--- + +## Version Guidelines + +### Version Number Rules + +This project follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html): + +- **Major**: Incompatible API changes +- **Minor**: Backwards-compatible functionality additions +- **Patch**: Backwards-compatible bug fixes + +### Change Types + +- **Added**: New features +- **Changed**: Changes to existing functionality +- **Deprecated**: Soon-to-be removed features +- **Removed**: Removed features +- **Fixed**: Bug fixes +- **Security**: Security-related fixes +- **Optimized**: Performance or experience optimizations +- **Refactored**: Code refactoring +- **Upgraded**: Dependency upgrades + +### Important Notice Markers + +- 🎉 **Major Update**: Versions with important new features +- ⚠️ **Breaking Changes**: Updates requiring special attention for incompatibility +- 🔒 **Security Update**: Versions fixing security vulnerabilities + +--- + +## Contributing + +If you want to contribute to the project, please check [CONTRIBUTING.md](./CONTRIBUTING.md). + +## License + +[MIT License](./LICENSE) + +--- + +**Note**: This changelog starts recording from version v2.4.0. For earlier version history, please check Git commit records. diff --git a/web-admin/CHANGELOG.zh-CN.md b/web-admin/CHANGELOG.zh-CN.md new file mode 100644 index 00000000..d1b43f27 --- /dev/null +++ b/web-admin/CHANGELOG.zh-CN.md @@ -0,0 +1,654 @@ +# 更新日志 + +所有重要的项目变更都将记录在此文件中。 + +格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。 + +## [已发布] + +### v3.0.1 - 2025-11-15 + +#### 修复 + +- 修复路由注册时不存在接口的重复请求问题 +- 修复一键精简脚本打包失败的问题 + +#### 优化 + +- 完善路由配置验证机制,自动检测并提示非一级菜单的路径配置错误 +- 优化顶部进度条残影问题 +- 优化 vite 预构建配置 +- 优化圆角、边框统一性 +- 重新设计锁屏页面,提升视觉体验 +- 优化退出登录菜单提前消失造成的视觉体验不好问题 + +#### 新增 + +- ArtForm 和 ArtSearchBar 组件的 label 支持自定义渲染函数,可实现带 tooltip 等复杂标签 +- 菜单管理表单关键字段新增 Tooltip 提示,降低用户配置门槛 +- iconify 新增离线图标加载模式 +- 退出登录新增 redirect 属性,用于重新登录后跳转到对应页面 +- 退出登录重新进入系统保留用户标签页,根据 userId 进行身份识别 +- 双列菜单新增折叠按钮 +- 完善菜单图标 +- 多标签页增加图标显示 +- 新增 WebSocket 连接示例 +- 锁屏密码错误时增加输入框抖动动效 + +#### ⚠️ 重要提示 + +> 此版本需要重新登录 + +--- + +### v3.0.0 - 2025-11-09 🎉 + +#### 重构 + +- 样式系统重构:Sass 全面迁移至 Tailwind CSS,提升开发效率与样式一致性 +- 图标方案升级:Iconfont 替换为 Iconify,支持更丰富的图标库与按需加载 +- 路由注册重构:全面重构路由注册系统,引入面向对象设计,提高代码的可维护性、可测试性和扩展能力 +- 重构 ArtTextScroll 组件,提升性能与可维护性 +- 重构颜色体系,统一 UI 视觉规范,提升界面一致性 + +#### 优化 + +- 构建优化:完整包体积减少 1.3 MB,显著提升加载性能 +- 架构优化:优化目录结构,职责划分更清晰,降低用户学习成本与上手难度 +- 注释优化:统一模块注释规范,完善每一个组件介绍、功能说明与使用示例,降低用户理解成本与上手难度 +- 性能提升:优化核心代码逻辑,提升系统运行效率 +- 菜单优化:细化菜单样式,优化交互体验与视觉呈现 +- 响应式优化:优化 ArtForm、ArtSearchBar 栅格布局,适配多种屏幕尺寸 +- 配置管理优化:新增 setting.ts 配置文件,支持一键复制与重置系统默认设置 + +#### 修复 + +- 修复 ArtForm、ArtSearchBar 自定义组件渲染异常 + +#### 新增 + +- ArtForm、ArtSearchBar 新增 render 属性,支持自定义组件渲染 +- 节日功能增强:礼花配置支持跨日期范围设置与自定义播放次数 + +#### 升级 + +- 依赖更新:升级核心依赖至最新稳定版本 + +#### ⚠️ 重要提示 + +> 本次升级涉及样式系统(Sass → Tailwind CSS)与图标库(Iconfont → Iconify)的底层重构,属于破坏性更新。建议新项目直接使用 v3.0,旧版本项目不建议升级。 + +--- + +### v2.6.1 - 2025-10-19 + +#### 修复 + +- 修复获取用户信息、获取菜单接口访问无效地址重复调用问题 +- 修复 ElButton circle 模式样式 +- 修复 ElSelect 无法通过键盘选择问题 +- 修复带参数静态路由跳转登录页面问题 + +#### 优化 + +- 升级部分依赖兼容 tailwindcss +- 优化外部链接菜单点击选中状态 +- 授权页增加主题色切换功能 + +--- + +### v2.6.0 - 2025-10-16 + +#### 新增 + +- 扩展注册、密码重置页面顶部组件支持 + +#### 优化 + +- 优化精简版本菜单数据结构,提升数据一致性 +- 优化本地开发环境网络请求代理配置 +- 优化 ElTree 组件默认样式 +- 新增 VsCode 推荐插件相关配置 +- 优化 ElDropdown 组件点击触发模式下的交互样式 +- 优化菜单过滤逻辑 +- 优化页面切换动画,提升加载速度 +- 优化暗黑模式文字颜色 + +#### 修复 + +- 修复静态路由自定义首页路径首次访问跳转登录页问题 +- 修复退出登录时短暂跳转至 500 页的问题 +- 修复 v2.5.9 版本首页路由跳转配置失效问题 +- 修复 v2.5.9 自动导包机制导致的构建异常 + +#### ⚠️ 重要提示 + +> 此版本需要重新登录 + +--- + +### v2.5.9 - 2025-10-12 + +#### 代码优化 + +- views 文件目录、文件名、代码优化 +- useTable 分页请求字段增加全局配置 tableConfig.ts +- 优化路由配置为模块化结构 +- 获取菜单接口使用 apifox mock 数据(需在 .env 中将 VITE_ACCESS_MODE 设为 backend 模式) + +--- + +### v2.5.8 - 2025-09-29 + +#### 升级 + +- vue、vite、element-plus 等核心库升级 + +#### 修复 + +- 修复富文本编辑器全屏顶栏层级问题 +- 修复表格列排序组件文字溢出问题 +- 修复统计卡片条件判断 +- 修复根路径 / 与 HOME_PAGE_PATH 同为 / 时出现的无限重定向 + +#### 优化 + +- 优化 el-tag 样式 +- 优化顶部进度条颜色 +- 优化自定义主题配置 +- 优化 ElementPlus 自定义主题问题 + +#### ⚠️ 重要提示 + +> 由于项目依赖升级,node 版本需要升级到 v20.19.0 或以上 + +--- + +### v2.5.7 - 2025-09-14 + +#### 新增 + +- 新增 ArtForm 组件 + +#### 修复 + +- 修复新版本谷歌浏览器切换主题闪烁问题 + +#### 优化 + +- 优化表单 label 高度没有对齐问题 +- 首屏启动性能优化 + +--- + +### v2.5.6 - 2025-09-06 + +#### 新增 + +- ArtTableHeader 新增搜索按钮,用于控制顶部搜索栏的显示与隐藏 +- 新增权限演示示例 +- 添加全局错误处理基础框架 + +#### 优化 + +- useTable 类型推导优化,不需要手动传递类型即可实现类型提示 +- useTable removeColumn 支持多数据删除 +- useTable 自动识别响应体支持自定义配置 (src/utils/table/tableConfig.ts) +- useTable 空数据浏览器警告优化 +- api 接口请求代码优化、api.d.ts 类型优化 +- 优化 ArtTable 顶部按钮换行无法自适应问题(示例:功能示例 / 左右布局表格) +- ArtTable 分页组件选中样式优化 +- ArtTable 空状态高度默认撑满 +- ArtButtonMore 组件新增图标、颜色配置 +- ArtSearchBar label 为空时不占空间 +- 表格操作栏拖拽禁止固定列拖拽 +- 角色管理页面接口对接、代码优化 +- 菜单管理页面优化 +- 优化设置中心滚动页面跟随滚动问题 +- 一级路由是外链时,component 校验逻辑优化 +- 优化地图右下角拖动问题 +- 优化暗黑模式刷新页面白色背景问题 +- 优化左侧菜单折叠按钮间距问题 +- 移动端显示左侧菜单 logo +- 网络请求新增 showSuccessMessage,用于配置是否显示成功消息 +- 全局组件采用异步加载策略,提升首屏加载性能 + +#### 修复 + +- 修复批量删除整页数据没有返回上一页的bug +- 修复动态路由参数导致的问题 +- 修复动态路由配置一级路由是 iframe 页面时,全屏问题 + +--- + +### v2.5.5 - 2025-08-17 + +#### 新增 + +- 新增 ArtSearchBar 组件示例 +- useTable 新增 excludeParams,用于排除某些参数不参与请求 + +#### 重构 + +- 重构 ArtSearchBar 组件,支持更多组件、表单校验等能力 + +#### 优化 + +- useTable 列配置:支持动态更新能力 +- 优化颜色选择器圆角 +- el-radio、el-checkbox 统一大小 +- art-stats-card 新增小数位、分隔符配置 +- 路由配置示例优化 +- 高级表格新增自定义获取数据示例(等待其他请求完成后执行 useTable 数据获取) +- 优化路径别名类型问题 +- 本地开发跨域配置优化 +- useTable 属性、方法命名优化 +- 登录页UI升级 +- 403、404、500 页面UI升级 + +#### 修复 + +- 修复多个富文本编辑器图标不统一问题 +- 修复 useTable 删除最后一整页数据没有返回上一页的问题 +- 修复 echarts 图表数据初始化、更新数据浏览器报错 +- 网络请求支持 http 状态码为 401 时退出登录 +- 优化网络请求退出登录多次提示问题 + +#### 移除 + +- 删除 art-chart-empty 组件 + +--- + +### v2.5.4 - 2025-07-27 + +#### 新增 + +- 网络请求 headers 支持自定义配置 +- 展开行支持 formatter 渲染 + +#### 优化 + +- 路由注册新增 component 校验 + +#### 修复 + +- 修复获取用户信息接口时序问题导致路由注册菜单渲染错误bug +- 修复动态路由校验问题导致的 iframe 不显示bug +- 修复 reset 文件语法错误 +- 修复 ArtTable 数据类型错误 +- 修复地图滚轮滚动放大问题 + +--- + +### v2.5.3 - 2025-07-20 + +#### 新增 + +- 新增表格左右布局示例 + +#### 重构 + +- ArtTable 组件重构 + +#### 升级 + +- Element Plus 升级到 v2.10.2 + +#### 优化 + +- 优化 useTable 分页参数问题 +- 优化网络请求示例:初始化参数、分页携带参数问题 +- 优化搜索日期范围参数处理 +- 优化 el-date-picker 组件圆角问题 +- 优化 el-select 组件 hover 样式 +- 搜索组件、分页组件高度降低 +- 优化登录页面滑块动画间隔时长 +- 优化菜单没有子菜单显示的问题 + +#### 修复 + +- 修复 ArtTable 切换分页大小时执行两次请求bug + +--- + +### v2.5.2 - 2025-07-13 + +#### 新增 + +- 新增一键精简脚本,快速准备开发环境 +- useTable hooks 支持分页字段名自定义映射 +- 水平菜单、混合菜单、双列菜单支持徽章显示 +- 快速入口支持配置文件模式 +- 顶栏功能支持配置文件模式 +- 支持自定义首页路径 +- 路由支持配置 redirect 等属性 + +#### 优化 + +- 全局事件总线 mittBus 类型安全优化 +- 优化移动端设置中容器宽度样式 +- 优化登录页验证滑块文字居中效果 + +#### 修复 + +- 修复表格无数据时表头不显示问题 +- 修复 v2.5.0 顶部进度条不显示问题 +- 修复左侧菜单遮罩异常显示问题 +- 修复隐藏所有子菜单时仍显示父级菜单的问题 +- 修复 stylelint 导致的登录页滑块样式异常 +- 修复老旧移动端设备 loading 定位问题 + +--- + +### v2.5.1 - 2025-07-08 + +#### 优化 + +- el-card、el-table 背景色跟系统保持一致 + +#### 修复 + +- 修复首次登录系统时 loading 提前关闭bug +- 修复 v2.5.0 版本引起的全屏页样式层级过低bug +- 修复 v2.5.0 版本引起的表格展开行折叠bug + +--- + +### v2.5.0 - 2025-07-06 🎉 + +#### 新增 + +- 新增 useTable hooks 表格封装,支持数据获取、转换、响应适配、智能缓存(基于 LRU 算法)、错误处理、列配置与插槽、分页控制、刷新策略等核心功能,全面提升开发效率与用户体验 + +#### 重构 + +- 重构 ArtTable、ArtTableHeader、ArtNotification 组件 + +#### 升级 + +- Echarts 版本升级到 5.6.0 + +#### 移除 + +- 移除 CountTo 插件,替换为 ArtCountTo 组件 + +#### 修复 + +- 修复菜单管理搜索直接修改 pinia 数据的问题 +- 修复路由守卫 loading 闪烁问题 + +#### ⚠️ 重要提示 + +> 建议升级,带来更高效、更智能的表格开发体验 + +--- + +### v2.4.2.9 - 2025-07-02 + +#### 重构 + +- 菜单布局、顶部导航代码重构 + +#### 优化 + +- 优化移动端菜单滚动用户体验 +- 优化顶部菜单样式问题 +- 顶部菜单宽度自适应,可显示更多内容,混合菜单支持鼠标滚动 +- asyncRoutes 路由配置 auth_mark 字段改为 authMark +- 去除重复的 components.d.ts 文件,components.d.ts、auto-imports.d.ts 忽略提交 +- 优化国际化语言文件加载方式,异步改成同步模式 +- 优化 el-pagination 大小不一致问题 + +#### 修复 + +- 修复移动端锁屏页部分浏览器无法解锁bug + +--- + +### v2.4.2.8 - 2025-06-26 + +#### 修复 + +- 修复 v2.4.2.7 版本访问 / 路径时显示 404 的问题 + +--- + +### v2.4.2.7 - 2025-06-25 + +#### 新增 + +- 路由支持配置全屏模式 +- 路由支持自动跳转到菜单的第一个有效路由 +- 动态路由新增 removeAllDynamicRoutes 方法,可用于彻底清除所有动态路由 +- 权限自定义指令优化、新增角色权限指令 v-roles、可用于控制元素的显示与隐藏 +- 新增标签页操作示例 + +#### 优化 + +- 跨域请求携带 cookie 配置从环境变量中获取,默认关闭 +- 针对SEO、可访问性做一些优化 + +#### 修复 + +- 修复登录页面拖拽组件 ArtDragVerify 宽度、颜色异常bug +- 修复 iframe 页面混合模式、双列模式异常bug +- 优化锁屏页面被 el-loading 穿透bug + +--- + +### v2.4.2.6 - 2025-06-23 + +#### 重构 + +- 重构 components/core/forms 文件夹下的表单相关组件,提升可维护性与一致性 +- 重构 ArtBreadcrumb 面包屑导航组件,优化逻辑结构与样式 +- 重构 ArtFireworksEffect 烟花效果组件,显著提升渲染性能与动画流畅度 + +#### 优化 + +- 优化 ArtChatWindow 与 ArtFastEnter 组件代码,提升可读性与性能 + +#### 新增 + +- README 文档新增官方网站链接,便于用户查看项目文档 + +--- + +### v2.4.2.5 - 2025-06-22 + +#### 重构 + +- 重构图表组件,优化代码结构与可维护性 +- 精细调整图表动画与主题配色方案,提升视觉一致性 + +--- + +### v2.4.2.4 - 2025-06-18 + +#### 重构 + +- ArtMenuRight 组件重构 +- components/core/cards 下面的组件重构,代码优化 + +#### 优化 + +- ArtWatermark 增加类型注释 + +--- + +### v2.4.2.3 - 2025-06-18 + +#### 重构 + +- ArtResultPage 组件重构 + +#### 优化 + +- ArtTextScroll 组件代码优化 +- ArtException 组件增加类型提示 +- ArtCutterImg 组件样式优化、增加类型定义 +- ArtVideoPlayer 组件增加类型定义 + +--- + +### v2.4.2.2 - 2025-06-16 + +#### 重构 + +- 返回顶部组件重构 +- 图标选择器组件重构 + +#### 修改 + +- 系统Logo组件属性变更 + +--- + +### v2.4.2.1 - 2025-06-16 + +#### 重构 + +- 横幅组件重构以及优化 + +#### 修复 + +- 修复混合菜单下第一个菜单是嵌套菜单跳转bug + +--- + +### v2.4.2 - 2025-06-14 + +#### 重构 + +- 重构网络请求模块,增强错误处理、类型安全与多语言支持 + +#### 新增 + +- 路由配置新增 activePath 激活菜单路径属性 + +#### 优化 + +- 引导、列设置多语言完善 +- 去除用户列表、菜单管理页面无效代码 +- 更新技术支持链接 + +#### 修复 + +- 修复移动端搜索栏无法滚动、iPad端页面滚动异常问题 +- 修复 el-dialog 启用 draggable 属性后,自定义动画失效的问题 +- 修复 2.3.0 版本本地存储重构后,导致登录、注册等页面多语言设置无法持久化的问题 +- 修复表格固定列不起作用bug +- 修复根路径 / 与 HOME_PAGE_PATH 同为 / 时出现的无限重定向 + +#### ⚠️ 重要提示 + +> 此版本需要重新登录 + +--- + +### v2.4.1.1 - 2025-06-07 + +#### 优化 + +- 优化角色管理页面代码 +- el-dialog视觉效果优化,支持配置线条 +- 系统主题模式从Light改成跟随系统模式 + +#### 修复 + +- 修复菜单管理折叠 bug +- 修复表格数据为空高度无限变大bug + +--- + +### v2.4.1 - 2025-06-07 + +#### 新增 + +- 锁屏状态下禁止使用开发者工具破解锁屏 + +#### 优化 + +- 提升菜单操作跟手感 +- 页面入场动画时间减少0.04s +- Echarts 图表性能优化,新增可视区域初始化、内存泄漏防护、防抖处理 + +#### 修复 + +- 修复 Echarts 图表组件在弹窗中不显示的 bug + +--- + +### v2.4.0 - 2025-06-06 🎉 + +#### 重构 + +- 全局 TypeScript 类型体系重构,提升类型准确性与可维护性 +- 重构 utils 工具包,统一工具方法结构,增强可读性与复用性 + +#### 新增 + +- utils 新增表单验证与 Cookie 操作相关工具函数 +- 页面组件增加 defineOptions,明确组件命名 +- HTTP 请求增加 token 过期自动处理逻辑,提升安全性与用户体验 + +#### 优化 + +- 删除未使用的工具模块与无效资源,精简项目体积 +- 优化 views 页面结构,移除冗余页面文件 +- 异常页面多语言支持, 提升国际化体验 +- 图片资源统一转换为 webp 格式,整体资源体积减少约 50% +- 打包产物减少约 1MB,提高加载效率 + +#### ⚠️ 重要提示 + +> 此版本需要重新登录 + +--- + +## 版本说明 + +### 版本号规则 + +本项目遵循 [语义化版本 2.0.0](https://semver.org/lang/zh-CN/) 规范: + +- **主版本号(Major)**:当你做了不兼容的 API 修改 +- **次版本号(Minor)**:当你做了向下兼容的功能性新增 +- **修订号(Patch)**:当你做了向下兼容的问题修正 + +### 变更类型 + +- **新增(Added)**:新功能 +- **修改(Changed)**:对现有功能的变更 +- **弃用(Deprecated)**:即将移除的功能 +- **移除(Removed)**:已移除的功能 +- **修复(Fixed)**:Bug 修复 +- **安全(Security)**:安全相关的修复 +- **优化(Optimized)**:性能优化或体验优化 +- **重构(Refactored)**:代码重构 +- **升级(Upgraded)**:依赖升级 + +### 重要提示标记 + +- 🎉 **重大更新**:包含重要新特性的版本 +- ⚠️ **破坏性变更**:需要特别注意的不兼容更新 +- 🔒 **安全更新**:修复安全漏洞的版本 + +--- + +## 贡献指南 + +如果你想为项目做出贡献,请查看 [CONTRIBUTING.md](./CONTRIBUTING.md)。 + +## 许可证 + +[MIT License](./LICENSE) + +--- + +**注意**:本更新日志从 v2.4.0 版本开始记录。更早的版本历史请查看 Git 提交记录。 + +--- + +[English Version](./CHANGELOG.en.md) diff --git a/web-admin/LICENSE b/web-admin/LICENSE new file mode 100755 index 00000000..68322dee --- /dev/null +++ b/web-admin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 SuperManTT + +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/web-admin/README.md b/web-admin/README.md new file mode 100755 index 00000000..a1f46760 --- /dev/null +++ b/web-admin/README.md @@ -0,0 +1,104 @@ + + +
+

Art Design Pro

+

A backend system template that combines design aesthetics with efficient development, helping you quickly build professional-grade applications

+
English | 简体中文
+ +
+
+ +[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![github stars](https://img.shields.io/github/stars/Daymychen/art-design-pro)](https://github.com/Daymychen/art-design-pro/stargazers) [![github forks](https://img.shields.io/github/forks/Daymychen/art-design-pro)](https://github.com/Daymychen/art-design-pro/network/members) + +
+
+ +## What makes this project special? + +**Interface Design**: Modern UI design with smooth interactions, focusing on user experience and visual design + +**Quick Start**: Clean architecture + comprehensive documentation, easy for backend developers to use + +**Rich Components**: Built-in high-quality components for data display, forms, and more to meet different business scenarios + +**Smooth Interactions**: Button clicks, theme switching, page transitions, chart animations - experience comparable to commercial products + +**Efficient Development**: Built-in practical APIs like useTable and ArtForm to significantly improve development efficiency + +**Clean Scripts**: Built-in one-click cleanup script to quickly remove demo data and get a ready-to-develop base project + +## Tech Stack + +Development Framework: Vue3, TypeScript, Vite, Element-Plus, Tailwind CSS + +Code Standards: Eslint, Prettier, Stylelint, Husky, Lint-staged, cz-git + +## Preview + +Light Theme + +Light Theme + +Dark Theme + +Dark Theme + +## Quick Access + +[Live Demo](https://www.artd.pro) | [Official Documentation](https://www.artd.pro/docs) | [Changelog](./CHANGELOG.en.md) + +## Installation & Setup + +```bash +# Install dependencies +pnpm install + +# If pnpm install fails, try using the command below +pnpm install --ignore-scripts + +# Start local development environment +pnpm dev + +# Build for production +pnpm build +``` + +## Clean Version + +The project includes a cleanup script to quickly remove demo data and provide developers with a ready-to-develop base project + +```bash +pnpm clean:dev +``` + +## Technical Support + +QQ Group: 1038930070 (Click the link to join the group chat) + +## Browser Compatibility + +Supports modern mainstream browsers including Chrome, Safari, Firefox, and more. + +## Contributing + +We sincerely welcome and appreciate the support of every contributor! Whether you have new ideas, feature suggestions, or code optimizations, you can participate in the following ways: + +Submit Pull Requests: Share your code and help the project grow. + +Create GitHub Issues: Provide bug feedback or new feature suggestions to help us improve together. + +Every contribution you make takes this project one step further! Come join our open source community! + +## Continuous Optimization & Extension + +The project maintains active updates, supports the latest frontend tech stack, is compatible with mainstream frameworks, and ensures long-term stability and extensibility. Community-driven feedback mechanisms allow your needs to be quickly integrated into project iterations. + +## Donation + +If you feel this project has reduced your development costs and solved problems in your work/life, you can support us through the following ways: + +Donation QR Code + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=Daymychen/art-design-pro&type=Date)](https://www.star-history.com/#Daymychen/art-design-pro&Date) diff --git a/web-admin/README.zh-CN.md b/web-admin/README.zh-CN.md new file mode 100644 index 00000000..aad3c546 --- /dev/null +++ b/web-admin/README.zh-CN.md @@ -0,0 +1,104 @@ + + +
+

Art Design Pro

+

一款兼具设计美学与高效开发的后台系统模版,助你快速构建专业级应用

+
简体中文 | English
+ +
+
+ +[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE) [![github stars](https://img.shields.io/github/stars/Daymychen/art-design-pro)](https://github.com/Daymychen/art-design-pro/stargazers) [![github forks](https://img.shields.io/github/forks/Daymychen/art-design-pro)](https://github.com/Daymychen/art-design-pro/network/members) + +
+
+ +## 这个项目有什么特别的呢? + +**界面设计**:现代化 UI 设计,流畅交互,以用户体验与视觉设计为核心 + +**极速上手**:简洁架构 + 完整文档,后端开发者也能轻松使用 + +**丰富组件**:内置数据展示、表单等多种高质量组件,满足不同业务场景的需求 + +**丝滑交互**:按钮点击、主题切换、页面过渡、图表动画,体验媲美商业产品 + +**高效开发**:内置 useTable、ArtForm 等实用 API,显著提升开发效率 + +**精简脚本**:内置一键清理脚本,可快速清理演示数据,立即得到可开发的基础项目 + +## 技术栈 + +开发框架:Vue3、TypeScript、Vite、Element-Plus、Tailwind CSS + +代码规范:Eslint、Prettier、Stylelint、Husky、Lint-staged、cz-git + +## 预览 + +浅色主题 + +浅色主题 + +暗黑主题 + +暗黑主题 + +## 快速访问 + +[演示地址](https://www.artd.pro) | [官方文档](https://www.artd.pro/docs) | [更新日志](./CHANGELOG.md) + +## 安装运行 + +```bash +# 安装依赖 +pnpm install + +# 如果 pnpm install 安装失败,尝试使用下面的命令安装依赖 +pnpm install --ignore-scripts + +# 本地开发环境启动 +pnpm dev + +# 生产环境打包 +pnpm build +``` + +## 精简版本 + +项目内置精简脚本,可快速移除项目中的演示数据,让开发者获得一个可快速开发的基础项目 + +```bash +pnpm clean:dev +``` + +## 技术支持 + +QQ群:1038930070(点击链接加入群聊) + +## 兼容性 + +支持 Chrome、Safari、Firefox 等现代主流浏览器。 + +## 贡献 + +我们真诚欢迎并感谢每一位贡献者的支持!无论您有新想法、功能建议还是代码优化,都可以通过以下方式参与: + +提交 Pull Request:分享您的代码,助力项目成长。 + +创建 GitHub Issue:提出 bug 反馈或新功能建议,让我们一起完善。 + +您的每一点贡献都让这个项目更进一步!快来加入我们的开源社区吧! + +## 持续优化与扩展 + +项目保持活跃更新,支持最新前端技术栈,兼容主流框架,确保长期稳定性和扩展性。社区驱动的反馈机制,让你的需求快速融入项目迭代。 + +## 捐赠 + +如果你觉得这个项目为你减少了开发成本、化解了工作 / 生活里的难题,可以通过以下方式支持一下~ + +捐赠二维码 + +## Star History + +[![Star History Chart](https://api.star-history.com/svg?repos=Daymychen/art-design-pro&type=Date)](https://www.star-history.com/#Daymychen/art-design-pro&Date) diff --git a/web-admin/commitlint.config.cjs b/web-admin/commitlint.config.cjs new file mode 100644 index 00000000..d2ef1bdf --- /dev/null +++ b/web-admin/commitlint.config.cjs @@ -0,0 +1,97 @@ +/** + * commitlint 配置文件 + * 文档 + * https://commitlint.js.org/#/reference-rules + * https://cz-git.qbb.sh/zh/guide/ + */ + +module.exports = { + // 继承的规则 + extends: ['@commitlint/config-conventional'], + // 自定义规则 + rules: { + // 提交类型枚举,git提交type必须是以下类型 + 'type-enum': [ + 2, + 'always', + [ + 'feat', // 新增功能 + 'fix', // 修复缺陷 + 'docs', // 文档变更 + 'style', // 代码格式(不影响功能,例如空格、分号等格式修正) + 'refactor', // 代码重构(不包括 bug 修复、功能新增) + 'perf', // 性能优化 + 'test', // 添加疏漏测试或已有测试改动 + 'build', // 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等) + 'ci', // 修改 CI 配置、脚本 + 'revert', // 回滚 commit + 'chore', // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例) + 'wip' // 对构建过程或辅助工具和库的更改(不影响源文件、测试用例) + ] + ], + 'subject-case': [0] // subject大小写不做校验 + }, + + prompt: { + messages: { + type: '选择你要提交的类型 :', + scope: '选择一个提交范围(可选):', + customScope: '请输入自定义的提交范围 :', + subject: '填写简短精炼的变更描述 :\n', + body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n', + breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n', + footerPrefixesSelect: '选择关联issue前缀(可选):', + customFooterPrefix: '输入自定义issue前缀 :', + footer: '列举关联issue (可选) 例如: #31, #I3244 :\n', + generatingByAI: '正在通过 AI 生成你的提交简短描述...', + generatedSelectByAI: '选择一个 AI 生成的简短描述:', + confirmCommit: '是否提交或修改commit ?' + }, + // prettier-ignore + types: [ + { value: "feat", name: "feat: 新增功能" }, + { value: "fix", name: "fix: 修复缺陷" }, + { value: "docs", name: "docs: 文档变更" }, + { value: "style", name: "style: 代码格式(不影响功能,例如空格、分号等格式修正)" }, + { value: "refactor", name: "refactor: 代码重构(不包括 bug 修复、功能新增)" }, + { value: "perf", name: "perf: 性能优化" }, + { value: "test", name: "test: 添加疏漏测试或已有测试改动" }, + { value: "build", name: "build: 构建流程、外部依赖变更(如升级 npm 包、修改 vite 配置等)" }, + { value: "ci", name: "ci: 修改 CI 配置、脚本" }, + { value: "revert", name: "revert: 回滚 commit" }, + { value: "chore", name: "chore: 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)" }, + ], + useEmoji: true, + emojiAlign: 'center', + useAI: false, + aiNumber: 1, + themeColorCode: '', + scopes: [], + allowCustomScopes: true, + allowEmptyScopes: true, + customScopesAlign: 'bottom', + customScopesAlias: 'custom', + emptyScopesAlias: 'empty', + upperCaseSubject: false, + markBreakingChangeMode: false, + allowBreakingChanges: ['feat', 'fix'], + breaklineNumber: 100, + breaklineChar: '|', + skipQuestions: ['breaking', 'footerPrefix', 'footer'], // 跳过的步骤 + issuePrefixes: [{ value: 'closed', name: 'closed: ISSUES has been processed' }], + customIssuePrefixAlign: 'top', + emptyIssuePrefixAlias: 'skip', + customIssuePrefixAlias: 'custom', + allowCustomIssuePrefix: true, + allowEmptyIssuePrefix: true, + confirmColorize: true, + maxHeaderLength: Infinity, + maxSubjectLength: Infinity, + minSubjectLength: 0, + scopeOverrides: undefined, + defaultBody: '', + defaultIssues: '', + defaultScope: '', + defaultSubject: '' + } +} diff --git a/web-admin/eslint.config.mjs b/web-admin/eslint.config.mjs new file mode 100644 index 00000000..ed2d4ba9 --- /dev/null +++ b/web-admin/eslint.config.mjs @@ -0,0 +1,83 @@ +// 从 URL 和路径模块中导入必要的功能 +import fs from 'fs' +import path, { dirname } from 'path' +import { fileURLToPath } from 'url' + +// 从 ESLint 插件中导入推荐配置 +import pluginJs from '@eslint/js' +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' +import pluginVue from 'eslint-plugin-vue' +import globals from 'globals' +import tseslint from 'typescript-eslint' + +// 使用 import.meta.url 获取当前模块的路径 +const __filename = fileURLToPath(import.meta.url) +const __dirname = dirname(__filename) + +// 读取 .auto-import.json 文件的内容,并将其解析为 JSON 对象 +const autoImportConfig = JSON.parse( + fs.readFileSync(path.resolve(__dirname, '.auto-import.json'), 'utf-8') +) + +export default [ + // 指定文件匹配规则 + { + files: ['**/*.{js,mjs,cjs,ts,tsx,vue}'] + }, + // 指定全局变量和环境 + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + // 扩展配置 + pluginJs.configs.recommended, + ...tseslint.configs.recommended, + ...pluginVue.configs['flat/essential'], + // 自定义规则 + { + // 针对所有 JavaScript、TypeScript 和 Vue 文件应用以下配置 + files: ['**/*.{js,mjs,cjs,ts,tsx,vue}'], + + languageOptions: { + globals: { + // 合并从 autoImportConfig 中读取的全局变量配置 + ...autoImportConfig.globals, + // TypeScript 全局命名空间 + Api: 'readonly' + } + }, + rules: { + quotes: ['error', 'single'], // 使用单引号 + semi: ['error', 'never'], // 语句末尾不加分号 + 'no-var': 'error', // 要求使用 let 或 const 而不是 var + '@typescript-eslint/no-explicit-any': 'off', // 禁用 any 检查 + 'vue/multi-word-component-names': 'off', // 禁用对 Vue 组件名称的多词要求检查 + 'no-multiple-empty-lines': ['warn', { max: 1 }], // 不允许多个空行 + 'no-unexpected-multiline': 'error' // 禁止空余的多行 + } + }, + // vue 规则 + { + files: ['**/*.vue'], + languageOptions: { + parserOptions: { parser: tseslint.parser } + } + }, + // 忽略文件 + { + ignores: [ + 'node_modules', + 'dist', + 'public', + '.vscode/**', + 'src/assets/**', + 'src/utils/console.ts' + ] + }, + // prettier 配置 + eslintPluginPrettierRecommended +] diff --git a/web-admin/index.html b/web-admin/index.html new file mode 100644 index 00000000..c15f2e42 --- /dev/null +++ b/web-admin/index.html @@ -0,0 +1,48 @@ + + + + 中科兴皖一体化门户 - 管理后台 + + + + + + + + + + + + +
+ + + diff --git a/web-admin/package.json b/web-admin/package.json new file mode 100644 index 00000000..f2f04dd8 --- /dev/null +++ b/web-admin/package.json @@ -0,0 +1,128 @@ +{ + "name": "zkxw-web-admin", + "version": "1.0.0", + "description": "中科兴皖一体化门户管理后台", + "type": "module", + "engines": { + "node": ">=20.19.0", + "pnpm": ">=8.8.0" + }, + "scripts": { + "dev": "vite --open", + "build": "vite build", + "build:typecheck": "vue-tsc --noEmit && vite build", + "serve": "vite preview", + "lint": "eslint", + "fix": "eslint --fix", + "lint:prettier": "prettier --write \"**/*.{js,cjs,ts,json,tsx,css,less,scss,vue,html,md}\"", + "lint:stylelint": "stylelint \"**/*.{css,scss,vue}\" --fix", + "lint:lint-staged": "lint-staged", + "prepare": "husky", + "commit": "git-cz", + "clean:dev": "tsx scripts/clean-dev.ts" + }, + "config": { + "commitizen": { + "path": "node_modules/cz-git" + } + }, + "lint-staged": { + "*.{js,ts,mjs,mts,tsx}": [ + "eslint --fix", + "prettier --write" + ], + "*.{cjs,json,jsonc}": [ + "prettier --write" + ], + "*.vue": [ + "eslint --fix", + "stylelint --fix --allow-empty-input", + "prettier --write" + ], + "*.{html,htm}": [ + "prettier --write" + ], + "*.{scss,css,less}": [ + "stylelint --fix --allow-empty-input", + "prettier --write" + ], + "*.{md,mdx}": [ + "prettier --write" + ], + "*.{yaml,yml}": [ + "prettier --write" + ] + }, + "dependencies": { + "@element-plus/icons-vue": "^2.3.2", + "@iconify/vue": "^5.0.0", + "@tailwindcss/vite": "^4.1.14", + "@vue/reactivity": "^3.5.21", + "@vueuse/core": "^13.9.0", + "@wangeditor/editor": "^5.1.23", + "@wangeditor/editor-for-vue": "next", + "axios": "^1.12.2", + "crypto-js": "^4.2.0", + "echarts": "^6.0.0", + "element-plus": "^2.11.2", + "file-saver": "^2.0.5", + "highlight.js": "^11.10.0", + "jsencrypt": "^3.3.2", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "ohash": "^2.0.11", + "pinia": "^3.0.3", + "pinia-plugin-persistedstate": "^4.3.0", + "qrcode.vue": "^3.6.0", + "sortablejs": "^1.15.7", + "tailwindcss": "^4.1.14", + "vue": "^3.5.21", + "vue-draggable-plus": "^0.6.0", + "vue-i18n": "^9.14.0", + "vue-router": "^4.5.1", + "xgplayer": "^3.0.20", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@commitlint/cli": "^19.4.1", + "@commitlint/config-conventional": "^19.4.1", + "@eslint/js": "^9.9.1", + "@types/node": "^24.0.5", + "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/parser": "^8.3.0", + "@vitejs/plugin-vue": "^6.0.1", + "@vue/compiler-sfc": "^3.0.5", + "commitizen": "^4.3.0", + "cz-git": "^1.11.1", + "eslint": "^9.9.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-vue": "^9.27.0", + "globals": "^15.9.0", + "husky": "^9.1.5", + "lint-staged": "^15.5.2", + "playwright": "^1.53.0", + "prettier": "^3.5.3", + "rollup-plugin-visualizer": "^5.12.0", + "sass": "^1.81.0", + "stylelint": "^16.20.0", + "stylelint-config-html": "^1.1.0", + "stylelint-config-recess-order": "^4.6.0", + "stylelint-config-recommended-scss": "^14.1.0", + "stylelint-config-recommended-vue": "^1.5.0", + "stylelint-config-standard": "^36.0.1", + "terser": "^5.36.0", + "tsx": "^4.20.3", + "typescript": "~5.6.3", + "typescript-eslint": "^8.9.0", + "unplugin-auto-import": "^20.2.0", + "unplugin-element-plus": "^0.10.0", + "unplugin-vue-components": "^29.1.0", + "vite": "^7.1.5", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-vue-devtools": "^7.7.6", + "vue-demi": "^0.14.9", + "vue-img-cutter": "^3.0.5", + "vue-tsc": "~2.1.6" + } +} diff --git a/web-admin/pnpm-lock.yaml b/web-admin/pnpm-lock.yaml new file mode 100644 index 00000000..9f9f3a39 --- /dev/null +++ b/web-admin/pnpm-lock.yaml @@ -0,0 +1,7607 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@element-plus/icons-vue': + specifier: ^2.3.2 + version: 2.3.2(vue@3.5.22(typescript@5.6.3)) + '@iconify/vue': + specifier: ^5.0.0 + version: 5.0.0(vue@3.5.22(typescript@5.6.3)) + '@tailwindcss/vite': + specifier: ^4.1.14 + version: 4.1.14(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vue/reactivity': + specifier: ^3.5.21 + version: 3.5.22 + '@vueuse/core': + specifier: ^13.9.0 + version: 13.9.0(vue@3.5.22(typescript@5.6.3)) + '@wangeditor/editor': + specifier: ^5.1.23 + version: 5.1.23 + '@wangeditor/editor-for-vue': + specifier: next + version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.22(typescript@5.6.3)) + axios: + specifier: ^1.12.2 + version: 1.12.2 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + echarts: + specifier: ^6.0.0 + version: 6.0.0 + element-plus: + specifier: ^2.11.2 + version: 2.11.4(vue@3.5.22(typescript@5.6.3)) + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + highlight.js: + specifier: ^11.10.0 + version: 11.11.1 + jsencrypt: + specifier: ^3.3.2 + version: 3.5.4 + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + ohash: + specifier: ^2.0.11 + version: 2.0.11 + pinia: + specifier: ^3.0.3 + version: 3.0.3(typescript@5.6.3)(vue@3.5.22(typescript@5.6.3)) + pinia-plugin-persistedstate: + specifier: ^4.3.0 + version: 4.5.0(pinia@3.0.3(typescript@5.6.3)(vue@3.5.22(typescript@5.6.3))) + qrcode.vue: + specifier: ^3.6.0 + version: 3.6.0(vue@3.5.22(typescript@5.6.3)) + sortablejs: + specifier: ^1.15.7 + version: 1.15.7 + tailwindcss: + specifier: ^4.1.14 + version: 4.1.14 + vue: + specifier: ^3.5.21 + version: 3.5.22(typescript@5.6.3) + vue-draggable-plus: + specifier: ^0.6.0 + version: 0.6.0(@types/sortablejs@1.15.8) + vue-i18n: + specifier: ^9.14.0 + version: 9.14.5(vue@3.5.22(typescript@5.6.3)) + vue-router: + specifier: ^4.5.1 + version: 4.5.1(vue@3.5.22(typescript@5.6.3)) + xgplayer: + specifier: ^3.0.20 + version: 3.0.23(core-js@3.45.1) + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + devDependencies: + '@commitlint/cli': + specifier: ^19.4.1 + version: 19.8.1(@types/node@24.8.1)(typescript@5.6.3) + '@commitlint/config-conventional': + specifier: ^19.4.1 + version: 19.8.1 + '@eslint/js': + specifier: ^9.9.1 + version: 9.36.0 + '@types/node': + specifier: ^24.0.5 + version: 24.8.1 + '@typescript-eslint/eslint-plugin': + specifier: ^8.3.0 + version: 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^8.3.0 + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@vitejs/plugin-vue': + specifier: ^6.0.1 + version: 6.0.1(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3)) + '@vue/compiler-sfc': + specifier: ^3.0.5 + version: 3.5.22 + commitizen: + specifier: ^4.3.0 + version: 4.3.1(@types/node@24.8.1)(typescript@5.6.3) + cz-git: + specifier: ^1.11.1 + version: 1.12.0 + eslint: + specifier: ^9.9.1 + version: 9.36.0(jiti@2.6.0) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.2(eslint@9.36.0(jiti@2.6.0)) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.5.4(eslint-config-prettier@9.1.2(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2) + eslint-plugin-vue: + specifier: ^9.27.0 + version: 9.33.0(eslint@9.36.0(jiti@2.6.0)) + globals: + specifier: ^15.9.0 + version: 15.15.0 + husky: + specifier: ^9.1.5 + version: 9.1.7 + lint-staged: + specifier: ^15.5.2 + version: 15.5.2 + playwright: + specifier: ^1.53.0 + version: 1.53.0 + prettier: + specifier: ^3.5.3 + version: 3.6.2 + rollup-plugin-visualizer: + specifier: ^5.12.0 + version: 5.14.0(rollup@4.52.3) + sass: + specifier: ^1.81.0 + version: 1.93.2 + stylelint: + specifier: ^16.20.0 + version: 16.24.0(typescript@5.6.3) + stylelint-config-html: + specifier: ^1.1.0 + version: 1.1.0(postcss-html@1.8.0)(stylelint@16.24.0(typescript@5.6.3)) + stylelint-config-recess-order: + specifier: ^4.6.0 + version: 4.6.0(stylelint@16.24.0(typescript@5.6.3)) + stylelint-config-recommended-scss: + specifier: ^14.1.0 + version: 14.1.0(postcss@8.5.6)(stylelint@16.24.0(typescript@5.6.3)) + stylelint-config-recommended-vue: + specifier: ^1.5.0 + version: 1.6.1(postcss-html@1.8.0)(stylelint@16.24.0(typescript@5.6.3)) + stylelint-config-standard: + specifier: ^36.0.1 + version: 36.0.1(stylelint@16.24.0(typescript@5.6.3)) + terser: + specifier: ^5.36.0 + version: 5.44.0 + tsx: + specifier: ^4.20.3 + version: 4.20.6 + typescript: + specifier: ~5.6.3 + version: 5.6.3 + typescript-eslint: + specifier: ^8.9.0 + version: 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + unplugin-auto-import: + specifier: ^20.2.0 + version: 20.2.0(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.6.3))) + unplugin-element-plus: + specifier: ^0.10.0 + version: 0.10.0 + unplugin-vue-components: + specifier: ^29.1.0 + version: 29.1.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.6.3)) + vite: + specifier: ^7.1.5 + version: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + vite-plugin-vue-devtools: + specifier: ^7.7.6 + version: 7.7.7(rollup@4.52.3)(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3)) + vue-demi: + specifier: ^0.14.9 + version: 0.14.10(vue@3.5.22(typescript@5.6.3)) + vue-img-cutter: + specifier: ^3.0.5 + version: 3.0.7(typescript@5.6.3) + vue-tsc: + specifier: ~2.1.6 + version: 2.1.10(typescript@5.6.3) + +packages: + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.3': + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.28.3': + resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.28.0': + resolution: {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.27.1': + resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.28.0': + resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@cacheable/memoize@2.0.2': + resolution: {integrity: sha512-wPrr7FUiq3Qt4yQyda2/NcOLTJCFcQSU3Am2adP+WLy+sz93/fKTokVTHmtz+rjp4PD7ee0AEOeRVNN6IvIfsg==} + + '@cacheable/memory@2.0.2': + resolution: {integrity: sha512-sJTITLfeCI1rg7P3ssaGmQryq235EGT8dXGcx6oZwX5NRnKq9IE6lddlllcOl+oXW+yaeTRddCjo0xrfU6ZySA==} + + '@cacheable/utils@2.0.2': + resolution: {integrity: sha512-JTFM3raFhVv8LH95T7YnZbf2YoE9wEtkPPStuRF9a6ExZ103hFvs+QyCuYJ6r0hA9wRtbzgZtwUCoDWxssZd4Q==} + + '@commitlint/cli@19.8.1': + resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@19.8.1': + resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@19.8.1': + resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@20.0.0': + resolution: {integrity: sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==} + engines: {node: '>=v18'} + + '@commitlint/ensure@19.8.1': + resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@19.8.1': + resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} + engines: {node: '>=v18'} + + '@commitlint/format@19.8.1': + resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@19.8.1': + resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + engines: {node: '>=v18'} + + '@commitlint/lint@19.8.1': + resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + engines: {node: '>=v18'} + + '@commitlint/load@19.8.1': + resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + engines: {node: '>=v18'} + + '@commitlint/load@20.0.0': + resolution: {integrity: sha512-WiNKO9fDPlLY90Rruw2HqHKcghrmj5+kMDJ4GcTlX1weL8K07Q6b27C179DxnsrjGCRAKVwFKyzxV4x+xDY28Q==} + engines: {node: '>=v18'} + + '@commitlint/message@19.8.1': + resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + engines: {node: '>=v18'} + + '@commitlint/parse@19.8.1': + resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + engines: {node: '>=v18'} + + '@commitlint/read@19.8.1': + resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@19.8.1': + resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@20.0.0': + resolution: {integrity: sha512-BA4vva1hY8y0/Hl80YDhe9TJZpRFMsUYzVxvwTLPTEBotbGx/gS49JlVvtF1tOCKODQp7pS7CbxCpiceBgp3Dg==} + engines: {node: '>=v18'} + + '@commitlint/rules@19.8.1': + resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@19.8.1': + resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + engines: {node: '>=v18'} + + '@commitlint/top-level@19.8.1': + resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + engines: {node: '>=v18'} + + '@commitlint/types@19.8.1': + resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + engines: {node: '>=v18'} + + '@commitlint/types@20.0.0': + resolution: {integrity: sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==} + engines: {node: '>=v18'} + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.3': + resolution: {integrity: sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@dual-bundle/import-meta-resolve@4.2.1': + resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} + + '@element-plus/icons-vue@2.3.2': + resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==} + peerDependencies: + vue: ^3.2.0 + + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.36.0': + resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/utils@0.2.10': + resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/vue@5.0.0': + resolution: {integrity: sha512-C+KuEWIF5nSBrobFJhT//JS87OZ++QDORB6f2q2Wm6fl2mueSTpFBeBsveK0KW9hWiZ4mNiPjsh6Zs4jjdROSg==} + peerDependencies: + vue: '>=3' + + '@intlify/core-base@9.14.5': + resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==} + engines: {node: '>= 16'} + + '@intlify/message-compiler@9.14.5': + resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==} + engines: {node: '>= 16'} + + '@intlify/shared@9.14.5': + resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==} + engines: {node: '>= 16'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@keyv/bigmap@1.0.2': + resolution: {integrity: sha512-KR03xkEZlAZNF4IxXgVXb+uNIVNvwdh8UwI0cnc7WI6a+aQcDp8GL80qVfeB4E5NpsKJzou5jU0r6yLSSbMOtA==} + engines: {node: '>= 18'} + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.5.1': + resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.1': + resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.1': + resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.1': + resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.1': + resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.1': + resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.1': + resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.1': + resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.1': + resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.1': + resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.1': + resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.1': + resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.1': + resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + engines: {node: '>= 10.0.0'} + + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rolldown/pluginutils@1.0.0-beta.29': + resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + + '@tailwindcss/node@4.1.14': + resolution: {integrity: sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==} + + '@tailwindcss/oxide-android-arm64@4.1.14': + resolution: {integrity: sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.14': + resolution: {integrity: sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.14': + resolution: {integrity: sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.14': + resolution: {integrity: sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': + resolution: {integrity: sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': + resolution: {integrity: sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': + resolution: {integrity: sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': + resolution: {integrity: sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.1.14': + resolution: {integrity: sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.1.14': + resolution: {integrity: sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': + resolution: {integrity: sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': + resolution: {integrity: sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.14': + resolution: {integrity: sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.14': + resolution: {integrity: sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + + '@transloadit/prettier-bytes@0.0.7': + resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==} + + '@types/conventional-commits-parser@5.0.1': + resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/event-emitter@0.3.5': + resolution: {integrity: sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + + '@types/node@24.8.1': + resolution: {integrity: sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==} + + '@types/sortablejs@1.15.8': + resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@typescript-eslint/eslint-plugin@8.44.1': + resolution: {integrity: sha512-molgphGqOBT7t4YKCSkbasmu1tb1MgrZ2szGzHbclF7PNmOkSTQVHy+2jXOSnxvR3+Xe1yySHFZoqMpz3TfQsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.44.1 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.44.1': + resolution: {integrity: sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.44.1': + resolution: {integrity: sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.44.1': + resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.44.1': + resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.44.1': + resolution: {integrity: sha512-KdEerZqHWXsRNKjF9NYswNISnFzXfXNDfPxoTh7tqohU/PRIbwTmsjGK6V9/RTYWau7NZvfo52lgVk+sJh0K3g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.44.1': + resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.44.1': + resolution: {integrity: sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.44.1': + resolution: {integrity: sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.44.1': + resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@uppy/companion-client@2.2.2': + resolution: {integrity: sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==} + + '@uppy/core@2.3.4': + resolution: {integrity: sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==} + + '@uppy/store-default@2.1.1': + resolution: {integrity: sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==} + + '@uppy/utils@4.1.3': + resolution: {integrity: sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==} + + '@uppy/xhr-upload@2.1.3': + resolution: {integrity: sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==} + peerDependencies: + '@uppy/core': ^2.3.3 + + '@vitejs/plugin-vue@6.0.1': + resolution: {integrity: sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.23': + resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==} + + '@volar/source-map@2.4.23': + resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==} + + '@volar/typescript@2.4.23': + resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.22': + resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} + + '@vue/compiler-dom@3.5.22': + resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} + + '@vue/compiler-sfc@3.5.22': + resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} + + '@vue/compiler-ssr@3.5.22': + resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.7': + resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==} + + '@vue/devtools-core@7.7.7': + resolution: {integrity: sha512-9z9TLbfC+AjAi1PQyWX+OErjIaJmdFlbDHcD+cAMYKY6Bh5VlsAtCeGyRMrXwIlMEQPukvnWt3gZBLwTAIMKzQ==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.7.7': + resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==} + + '@vue/devtools-shared@7.7.7': + resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==} + + '@vue/language-core@2.1.10': + resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.22': + resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} + + '@vue/runtime-core@3.5.22': + resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==} + + '@vue/runtime-dom@3.5.22': + resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==} + + '@vue/server-renderer@3.5.22': + resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==} + peerDependencies: + vue: 3.5.22 + + '@vue/shared@3.5.22': + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + + '@vueuse/core@13.9.0': + resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@13.9.0': + resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@13.9.0': + resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + '@wangeditor/basic-modules@1.1.7': + resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/code-highlight@1.0.3': + resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/core@1.1.19': + resolution: {integrity: sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==} + peerDependencies: + '@uppy/core': ^2.1.1 + '@uppy/xhr-upload': ^2.0.3 + dom7: ^3.0.0 + is-hotkey: ^0.2.0 + lodash.camelcase: ^4.3.0 + lodash.clonedeep: ^4.5.0 + lodash.debounce: ^4.0.8 + lodash.foreach: ^4.5.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + lodash.toarray: ^4.4.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/editor-for-vue@5.1.12': + resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} + peerDependencies: + '@wangeditor/editor': '>=5.1.0' + vue: ^3.0.5 + + '@wangeditor/editor@5.1.23': + resolution: {integrity: sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==} + + '@wangeditor/list-module@1.0.5': + resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/table-module@1.1.4': + resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} + peerDependencies: + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.isequal: ^4.5.0 + lodash.throttle: ^4.1.1 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/upload-image-module@1.0.2': + resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} + peerDependencies: + '@uppy/core': ^2.0.3 + '@uppy/xhr-upload': ^2.0.3 + '@wangeditor/basic-modules': 1.x + '@wangeditor/core': 1.x + dom7: ^3.0.0 + lodash.foreach: ^4.5.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + '@wangeditor/video-module@1.1.4': + resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} + peerDependencies: + '@uppy/core': ^2.1.4 + '@uppy/xhr-upload': ^2.0.7 + '@wangeditor/core': 1.x + dom7: ^3.0.0 + nanoid: ^3.2.0 + slate: ^0.72.0 + snabbdom: ^3.1.0 + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alien-signals@0.2.2: + resolution: {integrity: sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.1.1: + resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.8.8: + resolution: {integrity: sha512-be0PUaPsQX/gPWWgFsdD+GFzaoig5PXaUC1xLkQiYdDnANU8sMnHoQd8JhbJQuvTWrWLyeFN9Imb5Qtfvr4RrQ==} + hasBin: true + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + birpc@2.6.1: + resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.26.2: + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + cacheable@2.0.2: + resolution: {integrity: sha512-dWjhLx8RWnPsAWVKwW/wI6OJpQ/hSVb1qS0NUif8TR9vRiSwci7Gey8x04kRU9iAF+Rnbtex5Kjjfg/aB5w8Pg==} + + cachedir@2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001745: + resolution: {integrity: sha512-ywt6i8FzvdgrrrGbr1jZVObnVv6adj+0if2/omv9cmR2oiZs30zL4DIyaptKcbOrBdOIc74QTMoJvSE2QHh5UQ==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commitizen@4.3.1: + resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} + engines: {node: '>= 12'} + hasBin: true + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + + conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + + conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} + + cosmiconfig-typescript-loader@6.1.0: + resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + cz-git@1.12.0: + resolution: {integrity: sha512-LaZ+8whPPUOo6Y0Zy4nIbf6JOleV3ejp41sT6N4RPKiKKA+ICWf4ueeIlxIO8b6JtdlDxRzHH/EcRji07nDxcg==} + engines: {node: '>=v12.20.0'} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + danmu.js@1.1.13: + resolution: {integrity: sha512-knFd0/cB2HA4FFWiA7eB2suc5vCvoHdqio33FyyCSfP7C+1A+zQcTvnvwfxaZhrxsGj4qaQI2I8XiTqedRaVmg==} + + dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} + + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-pick-omit@1.2.1: + resolution: {integrity: sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegate@3.2.0: + resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom7@3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + downloadjs@1.4.7: + resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + echarts@6.0.0: + resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==} + + electron-to-chromium@1.5.227: + resolution: {integrity: sha512-ITxuoPfJu3lsNWUi2lBM2PaBPYgH3uqmxut5vmBxgYvyI4AlJ6P3Cai1O76mOrkJCBzq0IxWg/NtqOrpu/0gKA==} + + element-plus@2.11.4: + resolution: {integrity: sha512-sLq+Ypd0cIVilv8wGGMEGvzRVBBsRpJjnAS5PsI/1JU1COZXqzH3N1UYMUc/HCdvdjf6dfrBy80Sj7KcACsT7w==} + peerDependencies: + vue: ^3.2.0 + + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + + error-stack-parser-es@0.1.5: + resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@9.1.2: + resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@9.33.0: + resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.36.0: + resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + execa@9.6.0: + resolution: {integrity: sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==} + engines: {node: ^18.19.0 || >=20.5.0} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + exsolve@1.0.7: + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@10.1.4: + resolution: {integrity: sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flat-cache@6.1.14: + resolution: {integrity: sha512-ExZSCSV9e7v/Zt7RzCbX57lY2dnPdxzU/h3UE6WJ6NtEMfwBd8jmi1n4otDEUfz+T/R+zxrFDpICFdjhD3H/zw==} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + + git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.15.0: + resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + engines: {node: '>=18'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + hookified@1.12.1: + resolution: {integrity: sha512-xnKGl+iMIlhrZmGHB729MqlmPoWBznctSQTYCpFKqNsCgimJQmithcW0xSQMMFzYnV2iKUh25alswn6epgxS0Q==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + + i18next@20.6.1: + resolution: {integrity: sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immer@9.0.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + + immutable@5.1.3: + resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jiti@2.6.0: + resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsencrypt@3.5.4: + resolution: {integrity: sha512-kNjfYEMNASxrDGsmcSQh/rUTmcoRfSUkxnAz+MMywM8jtGu+fFEZ3nJjHM58zscVnwR0fYmG9sGkTDjqUdpiwA==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyv@5.5.3: + resolution: {integrity: sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + known-css-properties@0.36.0: + resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} + + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@15.5.2: + resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==} + engines: {node: '>=18.12.0'} + hasBin: true + + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} + engines: {node: '>=18.0.0'} + + local-pkg@1.1.2: + resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.toarray@4.4.0: + resolution: {integrity: sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + + mdn-data@2.24.0: + resolution: {integrity: sha512-i97fklrJl03tL1tdRVw0ZfLLvuDsdb6wxL+TrJ+PKkCbLrp2PCu2+OYdCKychIUm19nSM/35S6qz7pJpnXttoA==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-match@1.0.2: + resolution: {integrity: sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + namespace-emitter@2.0.1: + resolution: {integrity: sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pinia-plugin-persistedstate@4.5.0: + resolution: {integrity: sha512-QTkP1xJVyCdr2I2p3AKUZM84/e+IS+HktRxKGAIuDzkyaKKV48mQcYkJFVVDuvTxlI5j6X3oZObpqoVB8JnWpw==} + peerDependencies: + '@nuxt/kit': '>=3.0.0' + '@pinia/nuxt': '>=0.10.0' + pinia: '>=3.0.0' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@pinia/nuxt': + optional: true + pinia: + optional: true + + pinia@3.0.3: + resolution: {integrity: sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + + playwright-core@1.53.0: + resolution: {integrity: sha512-mGLg8m0pm4+mmtB7M89Xw/GSqoNC+twivl8ITteqvAndachozYe2ZA7srU6uleV1vEdAHYqjq+SV8SNxRRFYBw==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.53.0: + resolution: {integrity: sha512-ghGNnIEYZC4E+YtclRn4/p6oYbdPiASELBIYkBXfaTVKreQUYbMUYQDwS12a8F0/HtIjr/CkGjtwABeFPGcS4Q==} + engines: {node: '>=18'} + hasBin: true + + postcss-html@1.8.0: + resolution: {integrity: sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==} + engines: {node: ^12 || >=14} + + postcss-media-query-parser@0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@6.0.0: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-scss@4.0.9: + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + + prismjs@1.30.0: + resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} + engines: {node: '>=6'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode.vue@3.6.0: + resolution: {integrity: sha512-vQcl2fyHYHMjDO1GguCldJxepq2izQjBkDEEu9NENgfVKP6mv/e2SU62WbqYHGwTgWXLhxZ1NCD1dAZKHQq1fg==} + peerDependencies: + vue: ^3.0.0 + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sass@1.93.2: + resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} + engines: {node: '>=14.0.0'} + hasBin: true + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slate-history@0.66.0: + resolution: {integrity: sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==} + peerDependencies: + slate: '>=0.65.3' + + slate@0.72.8: + resolution: {integrity: sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + snabbdom@3.6.2: + resolution: {integrity: sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==} + engines: {node: '>=12.17.0'} + + sortablejs@1.15.7: + resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + ssr-window@3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + stylelint-config-html@1.1.0: + resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recess-order@4.6.0: + resolution: {integrity: sha512-V76fhv3YtcNXh/hyAuAdSzi5FmcrG54Mp2AThJ3D/PTMTSYzUPd7GIhP6z9mTqnRhmkk6YTfcu/JWB8h+Yrcaw==} + peerDependencies: + stylelint: '>=15' + + stylelint-config-recommended-scss@14.1.0: + resolution: {integrity: sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==} + engines: {node: '>=18.12.0'} + peerDependencies: + postcss: ^8.3.3 + stylelint: ^16.6.1 + peerDependenciesMeta: + postcss: + optional: true + + stylelint-config-recommended-vue@1.6.1: + resolution: {integrity: sha512-lLW7hTIMBiTfjenGuDq2kyHA6fBWd/+Df7MO4/AWOxiFeXP9clbpKgg27kHfwA3H7UNMGC7aeP3mNlZB5LMmEQ==} + engines: {node: ^12 || >=14} + peerDependencies: + postcss-html: ^1.0.0 + stylelint: '>=14.0.0' + + stylelint-config-recommended@14.0.1: + resolution: {integrity: sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-config-recommended@17.0.0: + resolution: {integrity: sha512-WaMSdEiPfZTSFVoYmJbxorJfA610O0tlYuU2aEwY33UQhSPgFbClrVJYWvy3jGJx+XW37O+LyNLiZOEXhKhJmA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.23.0 + + stylelint-config-standard@36.0.1: + resolution: {integrity: sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.1.0 + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint-scss@6.12.1: + resolution: {integrity: sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==} + engines: {node: '>=18.12.0'} + peerDependencies: + stylelint: ^16.0.2 + + stylelint@16.24.0: + resolution: {integrity: sha512-7ksgz3zJaSbTUGr/ujMXvLVKdDhLbGl3R/3arNudH7z88+XZZGNLMTepsY28WlnvEFcuOmUe7fg40Q3lfhOfSQ==} + engines: {node: '>=18.12.0'} + hasBin: true + + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} + engines: {node: '>=16'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} + engines: {node: '>=14.18'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tailwindcss@4.1.14: + resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} + engines: {node: '>=18'} + + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + engines: {node: '>=10'} + hasBin: true + + text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tinyexec@1.0.1: + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.20.6: + resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typescript-eslint@8.44.1: + resolution: {integrity: sha512-0ws8uWGrUVTjEeN2OM4K1pLKHK/4NiNP/vz6ns+LjT/6sqpaYzIVFajZb1fj/IDwpsrrHb3Jy0Qm5u9CPcKaeg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unimport@5.4.0: + resolution: {integrity: sha512-g/OLFZR2mEfqbC6NC9b2225eCJGvufxq34mj6kM3OmI5gdSL0qyqtnv+9qmsGpAmnzSl6x0IWZj4W+8j2hLkMA==} + engines: {node: '>=18.12.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-auto-import@20.2.0: + resolution: {integrity: sha512-vfBI/SvD9hJqYNinipVOAj5n8dS8DJXFlCKFR5iLDp2SaQwsfdnfLXgZ+34Kd3YY3YEY9omk8XQg0bwos3Q8ug==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^4.0.0 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-element-plus@0.10.0: + resolution: {integrity: sha512-oRSW0x6U58xBOWKy8TcoVZNA8ElIpfp3TUJRLQI6ey/E9PpjHl9/deeTAZNt8D57Li4OA4pCJtM6p2cb4Ff4ZA==} + engines: {node: '>=18.12.0'} + + unplugin-utils@0.2.5: + resolution: {integrity: sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg==} + engines: {node: '>=18.12.0'} + + unplugin-utils@0.3.0: + resolution: {integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==} + engines: {node: '>=20.19.0'} + + unplugin-vue-components@29.1.0: + resolution: {integrity: sha512-z/9ACPXth199s9aCTCdKZAhe5QGOpvzJYP+Hkd0GN1/PpAmsu+W3UlRY3BJAewPqQxh5xi56+Og6mfiCV1Jzpg==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 || ^4.0.0 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + + unplugin@2.3.10: + resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + engines: {node: '>=18.12.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vite-hot-client@2.1.0: + resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + + vite-plugin-inspect@0.8.9: + resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-vue-devtools@7.7.7: + resolution: {integrity: sha512-d0fIh3wRcgSlr4Vz7bAk4va1MkdqhQgj9ANE/rBhsAjOnRfTLs2ocjFMvSUOsv6SRRXU9G+VM7yMgqDb6yI4iQ==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + + vite-plugin-vue-inspector@5.3.2: + resolution: {integrity: sha512-YvEKooQcSiBTAs0DoYLfefNja9bLgkFM7NI2b07bE2SruuvX0MEa9cMaxjKVMkeCp5Nz9FRIdcN1rOdFVBeL6Q==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 + + vite@7.1.7: + resolution: {integrity: sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-draggable-plus@0.6.0: + resolution: {integrity: sha512-G5TSfHrt9tX9EjdG49InoFJbt2NYk0h3kgjgKxkFWr3ulIUays0oFObr5KZ8qzD4+QnhtALiRwIqY6qul4egqw==} + peerDependencies: + '@types/sortablejs': ^1.15.0 + '@vue/composition-api': '*' + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-i18n@9.14.5: + resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-img-cutter@3.0.7: + resolution: {integrity: sha512-fNw3kimawg9XVXDZCw2bI74NI+Jq+H42wjymatZVVSY46wuBty6LbQsu4GeVfo/yzpS9AHY0tzckpYzX3D2fmA==} + + vue-router@4.5.1: + resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==} + peerDependencies: + vue: ^3.2.0 + + vue-tsc@2.1.10: + resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.22: + resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wildcard@1.1.2: + resolution: {integrity: sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==} + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + + xgplayer-subtitles@3.0.23: + resolution: {integrity: sha512-deGdV75giVzfTTdG9XATmji39NHwKTpEelWt2rRx/RyXGgU2bQFp0Ft7yWaK2Uu8A/WVrP5fpxEAj4MstREMkQ==} + peerDependencies: + core-js: '>=3.12.1' + + xgplayer@3.0.23: + resolution: {integrity: sha512-Bn3zQfMMAZimlVG9EeIDybMcklc+6FH8Sv47KpTq4K6ofCzyhPG/KenxailDedlHmxjb5B2o+240TpJtMQ3oJA==} + peerDependencies: + core-js: '>=3.12.1' + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zrender@6.0.0: + resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + +snapshots: + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.3': + dependencies: + '@babel/types': 7.28.4 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.4 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.28.4 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.28.4': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@cacheable/memoize@2.0.2': + dependencies: + '@cacheable/utils': 2.0.2 + + '@cacheable/memory@2.0.2': + dependencies: + '@cacheable/memoize': 2.0.2 + '@cacheable/utils': 2.0.2 + '@keyv/bigmap': 1.0.2 + hookified: 1.12.1 + keyv: 5.5.3 + + '@cacheable/utils@2.0.2': {} + + '@commitlint/cli@19.8.1(@types/node@24.8.1)(typescript@5.6.3)': + dependencies: + '@commitlint/format': 19.8.1 + '@commitlint/lint': 19.8.1 + '@commitlint/load': 19.8.1(@types/node@24.8.1)(typescript@5.6.3) + '@commitlint/read': 19.8.1 + '@commitlint/types': 19.8.1 + tinyexec: 1.0.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/config-conventional@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-conventionalcommits: 7.0.2 + + '@commitlint/config-validator@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + ajv: 8.17.1 + + '@commitlint/config-validator@20.0.0': + dependencies: + '@commitlint/types': 20.0.0 + ajv: 8.17.1 + optional: true + + '@commitlint/ensure@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@19.8.1': {} + + '@commitlint/execute-rule@20.0.0': + optional: true + + '@commitlint/format@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + chalk: 5.6.2 + + '@commitlint/is-ignored@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + semver: 7.7.2 + + '@commitlint/lint@19.8.1': + dependencies: + '@commitlint/is-ignored': 19.8.1 + '@commitlint/parse': 19.8.1 + '@commitlint/rules': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/load@19.8.1(@types/node@24.8.1)(typescript@5.6.3)': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/execute-rule': 19.8.1 + '@commitlint/resolve-extends': 19.8.1 + '@commitlint/types': 19.8.1 + chalk: 5.6.2 + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/load@20.0.0(@types/node@24.8.1)(typescript@5.6.3)': + dependencies: + '@commitlint/config-validator': 20.0.0 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.0.0 + '@commitlint/types': 20.0.0 + chalk: 5.6.2 + cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@24.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + optional: true + + '@commitlint/message@19.8.1': {} + + '@commitlint/parse@19.8.1': + dependencies: + '@commitlint/types': 19.8.1 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + + '@commitlint/read@19.8.1': + dependencies: + '@commitlint/top-level': 19.8.1 + '@commitlint/types': 19.8.1 + git-raw-commits: 4.0.0 + minimist: 1.2.8 + tinyexec: 1.0.1 + + '@commitlint/resolve-extends@19.8.1': + dependencies: + '@commitlint/config-validator': 19.8.1 + '@commitlint/types': 19.8.1 + global-directory: 4.0.1 + import-meta-resolve: 4.2.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/resolve-extends@20.0.0': + dependencies: + '@commitlint/config-validator': 20.0.0 + '@commitlint/types': 20.0.0 + global-directory: 4.0.1 + import-meta-resolve: 4.2.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + optional: true + + '@commitlint/rules@19.8.1': + dependencies: + '@commitlint/ensure': 19.8.1 + '@commitlint/message': 19.8.1 + '@commitlint/to-lines': 19.8.1 + '@commitlint/types': 19.8.1 + + '@commitlint/to-lines@19.8.1': {} + + '@commitlint/top-level@19.8.1': + dependencies: + find-up: 7.0.0 + + '@commitlint/types@19.8.1': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.6.2 + + '@commitlint/types@20.0.0': + dependencies: + '@types/conventional-commits-parser': 5.0.1 + chalk: 5.6.2 + optional: true + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + + '@csstools/media-query-list-parser@4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@ctrl/tinycolor@3.6.1': {} + + '@dual-bundle/import-meta-resolve@4.2.1': {} + + '@element-plus/icons-vue@2.3.2(vue@3.5.22(typescript@5.6.3))': + dependencies: + vue: 3.5.22(typescript@5.6.3) + + '@esbuild/aix-ppc64@0.25.10': + optional: true + + '@esbuild/android-arm64@0.25.10': + optional: true + + '@esbuild/android-arm@0.25.10': + optional: true + + '@esbuild/android-x64@0.25.10': + optional: true + + '@esbuild/darwin-arm64@0.25.10': + optional: true + + '@esbuild/darwin-x64@0.25.10': + optional: true + + '@esbuild/freebsd-arm64@0.25.10': + optional: true + + '@esbuild/freebsd-x64@0.25.10': + optional: true + + '@esbuild/linux-arm64@0.25.10': + optional: true + + '@esbuild/linux-arm@0.25.10': + optional: true + + '@esbuild/linux-ia32@0.25.10': + optional: true + + '@esbuild/linux-loong64@0.25.10': + optional: true + + '@esbuild/linux-mips64el@0.25.10': + optional: true + + '@esbuild/linux-ppc64@0.25.10': + optional: true + + '@esbuild/linux-riscv64@0.25.10': + optional: true + + '@esbuild/linux-s390x@0.25.10': + optional: true + + '@esbuild/linux-x64@0.25.10': + optional: true + + '@esbuild/netbsd-arm64@0.25.10': + optional: true + + '@esbuild/netbsd-x64@0.25.10': + optional: true + + '@esbuild/openbsd-arm64@0.25.10': + optional: true + + '@esbuild/openbsd-x64@0.25.10': + optional: true + + '@esbuild/openharmony-arm64@0.25.10': + optional: true + + '@esbuild/sunos-x64@0.25.10': + optional: true + + '@esbuild/win32-arm64@0.25.10': + optional: true + + '@esbuild/win32-ia32@0.25.10': + optional: true + + '@esbuild/win32-x64@0.25.10': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))': + dependencies: + eslint: 9.36.0(jiti@2.6.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.21.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.3.1': {} + + '@eslint/core@0.15.2': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.36.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.5': + dependencies: + '@eslint/core': 0.15.2 + levn: 0.4.1 + + '@floating-ui/core@1.7.3': + dependencies: + '@floating-ui/utils': 0.2.10 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.3 + '@floating-ui/utils': 0.2.10 + + '@floating-ui/utils@0.2.10': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/vue@5.0.0(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.22(typescript@5.6.3) + + '@intlify/core-base@9.14.5': + dependencies: + '@intlify/message-compiler': 9.14.5 + '@intlify/shared': 9.14.5 + + '@intlify/message-compiler@9.14.5': + dependencies: + '@intlify/shared': 9.14.5 + source-map-js: 1.2.1 + + '@intlify/shared@9.14.5': {} + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@keyv/bigmap@1.0.2': + dependencies: + hookified: 1.12.1 + + '@keyv/serialize@1.1.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@parcel/watcher-android-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.1': + optional: true + + '@parcel/watcher-darwin-x64@2.5.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.1': + optional: true + + '@parcel/watcher-win32-arm64@2.5.1': + optional: true + + '@parcel/watcher-win32-ia32@2.5.1': + optional: true + + '@parcel/watcher-win32-x64@2.5.1': + optional: true + + '@parcel/watcher@2.5.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.1 + '@parcel/watcher-darwin-arm64': 2.5.1 + '@parcel/watcher-darwin-x64': 2.5.1 + '@parcel/watcher-freebsd-x64': 2.5.1 + '@parcel/watcher-linux-arm-glibc': 2.5.1 + '@parcel/watcher-linux-arm-musl': 2.5.1 + '@parcel/watcher-linux-arm64-glibc': 2.5.1 + '@parcel/watcher-linux-arm64-musl': 2.5.1 + '@parcel/watcher-linux-x64-glibc': 2.5.1 + '@parcel/watcher-linux-x64-musl': 2.5.1 + '@parcel/watcher-win32-arm64': 2.5.1 + '@parcel/watcher-win32-ia32': 2.5.1 + '@parcel/watcher-win32-x64': 2.5.1 + optional: true + + '@pkgr/core@0.2.9': {} + + '@polka/url@1.0.0-next.29': {} + + '@rolldown/pluginutils@1.0.0-beta.29': {} + + '@rollup/pluginutils@5.3.0(rollup@4.52.3)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.52.3 + + '@rollup/rollup-android-arm-eabi@4.52.3': + optional: true + + '@rollup/rollup-android-arm64@4.52.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.52.3': + optional: true + + '@rollup/rollup-darwin-x64@4.52.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.52.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.52.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.52.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.52.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.52.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.52.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.3': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@sxzz/popperjs-es@2.11.7': {} + + '@tailwindcss/node@4.1.14': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.0 + lightningcss: 1.30.1 + magic-string: 0.30.19 + source-map-js: 1.2.1 + tailwindcss: 4.1.14 + + '@tailwindcss/oxide-android-arm64@4.1.14': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.14': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.14': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.14': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.14': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': + optional: true + + '@tailwindcss/oxide@4.1.14': + dependencies: + detect-libc: 2.1.2 + tar: 7.5.1 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-x64': 4.1.14 + '@tailwindcss/oxide-freebsd-x64': 4.1.14 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.14 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.14 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-x64-musl': 4.1.14 + '@tailwindcss/oxide-wasm32-wasi': 4.1.14 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.14 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.14 + + '@tailwindcss/vite@4.1.14(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + dependencies: + '@tailwindcss/node': 4.1.14 + '@tailwindcss/oxide': 4.1.14 + tailwindcss: 4.1.14 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + + '@transloadit/prettier-bytes@0.0.7': {} + + '@types/conventional-commits-parser@5.0.1': + dependencies: + '@types/node': 24.8.1 + + '@types/estree@1.0.8': {} + + '@types/event-emitter@0.3.5': {} + + '@types/json-schema@7.0.15': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.20 + + '@types/lodash@4.17.20': {} + + '@types/node@24.8.1': + dependencies: + undici-types: 7.14.0 + + '@types/sortablejs@1.15.8': {} + + '@types/web-bluetooth@0.0.16': {} + + '@types/web-bluetooth@0.0.21': {} + + '@typescript-eslint/eslint-plugin@8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/type-utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.44.1 + eslint: 9.36.0(jiti@2.6.0) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3 + eslint: 9.36.0(jiti@2.6.0) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.44.1(typescript@5.6.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.6.3) + '@typescript-eslint/types': 8.44.1 + debug: 4.4.3 + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + + '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.6.3)': + dependencies: + typescript: 5.6.3 + + '@typescript-eslint/type-utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + debug: 4.4.3 + eslint: 9.36.0(jiti@2.6.0) + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.44.1': {} + + '@typescript-eslint/typescript-estree@8.44.1(typescript@5.6.3)': + dependencies: + '@typescript-eslint/project-service': 8.44.1(typescript@5.6.3) + '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.6.3) + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/visitor-keys': 8.44.1 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@typescript-eslint/scope-manager': 8.44.1 + '@typescript-eslint/types': 8.44.1 + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.6.3) + eslint: 9.36.0(jiti@2.6.0) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.44.1': + dependencies: + '@typescript-eslint/types': 8.44.1 + eslint-visitor-keys: 4.2.1 + + '@uppy/companion-client@2.2.2': + dependencies: + '@uppy/utils': 4.1.3 + namespace-emitter: 2.0.1 + + '@uppy/core@2.3.4': + dependencies: + '@transloadit/prettier-bytes': 0.0.7 + '@uppy/store-default': 2.1.1 + '@uppy/utils': 4.1.3 + lodash.throttle: 4.1.1 + mime-match: 1.0.2 + namespace-emitter: 2.0.1 + nanoid: 3.3.11 + preact: 10.27.2 + + '@uppy/store-default@2.1.1': {} + + '@uppy/utils@4.1.3': + dependencies: + lodash.throttle: 4.1.1 + + '@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4)': + dependencies: + '@uppy/companion-client': 2.2.2 + '@uppy/core': 2.3.4 + '@uppy/utils': 4.1.3 + nanoid: 3.3.11 + + '@vitejs/plugin-vue@6.0.1(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.29 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vue: 3.5.22(typescript@5.6.3) + + '@volar/language-core@2.4.23': + dependencies: + '@volar/source-map': 2.4.23 + + '@volar/source-map@2.4.23': {} + + '@volar/typescript@2.4.23': + dependencies: + '@volar/language-core': 2.4.23 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.4)': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.4) + '@vue/shared': 3.5.22 + optionalDependencies: + '@babel/core': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.4)': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.28.4 + '@vue/compiler-sfc': 3.5.22 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.22 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.22': + dependencies: + '@vue/compiler-core': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/compiler-sfc@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.22 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.22': + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.7': + dependencies: + '@vue/devtools-kit': 7.7.7 + + '@vue/devtools-core@7.7.7(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@vue/devtools-kit': 7.7.7 + '@vue/devtools-shared': 7.7.7 + mitt: 3.0.1 + nanoid: 5.1.6 + pathe: 2.0.3 + vite-hot-client: 2.1.0(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + vue: 3.5.22(typescript@5.6.3) + transitivePeerDependencies: + - vite + + '@vue/devtools-kit@7.7.7': + dependencies: + '@vue/devtools-shared': 7.7.7 + birpc: 2.6.1 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.2 + + '@vue/devtools-shared@7.7.7': + dependencies: + rfdc: 1.4.1 + + '@vue/language-core@2.1.10(typescript@5.6.3)': + dependencies: + '@volar/language-core': 2.4.23 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.22 + alien-signals: 0.2.2 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.3 + + '@vue/reactivity@3.5.22': + dependencies: + '@vue/shared': 3.5.22 + + '@vue/runtime-core@3.5.22': + dependencies: + '@vue/reactivity': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/runtime-dom@3.5.22': + dependencies: + '@vue/reactivity': 3.5.22 + '@vue/runtime-core': 3.5.22 + '@vue/shared': 3.5.22 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + vue: 3.5.22(typescript@5.6.3) + + '@vue/shared@3.5.22': {} + + '@vueuse/core@13.9.0(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.9.0 + '@vueuse/shared': 13.9.0(vue@3.5.22(typescript@5.6.3)) + vue: 3.5.22(typescript@5.6.3) + + '@vueuse/core@9.13.0(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.22(typescript@5.6.3)) + vue-demi: 0.14.10(vue@3.5.22(typescript@5.6.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@13.9.0': {} + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@13.9.0(vue@3.5.22(typescript@5.6.3))': + dependencies: + vue: 3.5.22(typescript@5.6.3) + + '@vueuse/shared@9.13.0(vue@3.5.22(typescript@5.6.3))': + dependencies: + vue-demi: 0.14.10(vue@3.5.22(typescript@5.6.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-url: 1.2.4 + lodash.throttle: 4.1.1 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + prismjs: 1.30.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@types/event-emitter': 0.3.5 + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + dom7: 3.0.0 + event-emitter: 0.3.5 + html-void-elements: 2.0.1 + i18next: 20.6.1 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.11 + scroll-into-view-if-needed: 2.2.31 + slate: 0.72.8 + slate-history: 0.66.0(slate@0.72.8) + snabbdom: 3.6.2 + + '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.22(typescript@5.6.3))': + dependencies: + '@wangeditor/editor': 5.1.23 + vue: 3.5.22(typescript@5.6.3) + + '@wangeditor/editor@5.1.23': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + is-hotkey: 0.2.0 + lodash.camelcase: 4.3.0 + lodash.clonedeep: 4.5.0 + lodash.debounce: 4.0.8 + lodash.foreach: 4.5.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + lodash.toarray: 4.4.0 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.isequal: 4.5.0 + lodash.throttle: 4.1.1 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + lodash.foreach: 4.5.0 + slate: 0.72.8 + snabbdom: 3.6.2 + + '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2)': + dependencies: + '@uppy/core': 2.3.4 + '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) + '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.11)(slate@0.72.8)(snabbdom@3.6.2) + dom7: 3.0.0 + nanoid: 3.3.11 + slate: 0.72.8 + snabbdom: 3.6.2 + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + adler-32@1.3.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@0.2.2: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.1.1: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@2.0.1: {} + + array-ify@1.0.0: {} + + array-union@2.1.0: {} + + astral-regex@2.0.0: {} + + async-validator@4.2.5: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + axios@1.12.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.8.8: {} + + binary-extensions@2.3.0: {} + + birpc@2.6.1: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.26.2: + dependencies: + baseline-browser-mapping: 2.8.8 + caniuse-lite: 1.0.30001745 + electron-to-chromium: 1.5.227 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.2) + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + cacheable@2.0.2: + dependencies: + '@cacheable/memoize': 2.0.2 + '@cacheable/memory': 2.0.2 + '@cacheable/utils': 2.0.2 + hookified: 1.12.1 + keyv: 5.5.3 + + cachedir@2.3.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001745: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + chardet@0.7.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + chownr@3.0.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + + cli-width@3.0.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + codepage@1.15.0: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@13.1.0: {} + + commander@2.20.3: {} + + commitizen@4.3.1(@types/node@24.8.1)(typescript@5.6.3): + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0(@types/node@24.8.1)(typescript@5.6.3) + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.5 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.7 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.2: {} + + conventional-changelog-angular@7.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@7.0.2: + dependencies: + compare-func: 2.0.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@5.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + + convert-source-map@2.0.0: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + core-js@3.45.1: {} + + cosmiconfig-typescript-loader@6.1.0(@types/node@24.8.1)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): + dependencies: + '@types/node': 24.8.1 + cosmiconfig: 9.0.0(typescript@5.6.3) + jiti: 2.6.0 + typescript: 5.6.3 + + cosmiconfig@9.0.0(typescript@5.6.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.6.3 + + crc-32@1.2.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + css-functions-list@3.2.3: {} + + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + cz-conventional-changelog@3.3.0(@types/node@24.8.1)(typescript@5.6.3): + dependencies: + chalk: 2.4.2 + commitizen: 4.3.1(@types/node@24.8.1)(typescript@5.6.3) + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 20.0.0(@types/node@24.8.1)(typescript@5.6.3) + transitivePeerDependencies: + - '@types/node' + - typescript + + cz-git@1.12.0: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + danmu.js@1.1.13: + dependencies: + event-emitter: 0.3.5 + + dargs@8.1.0: {} + + dayjs@1.11.18: {} + + de-indent@1.0.2: {} + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + dedent@0.7.0: {} + + deep-is@0.1.4: {} + + deep-pick-omit@1.2.1: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + defu@6.1.4: {} + + delayed-stream@1.0.0: {} + + delegate@3.2.0: {} + + destr@2.0.5: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + detect-libc@1.0.3: + optional: true + + detect-libc@2.1.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + dom7@3.0.0: + dependencies: + ssr-window: 3.0.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + downloadjs@1.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + echarts@6.0.0: + dependencies: + tslib: 2.3.0 + zrender: 6.0.0 + + electron-to-chromium@1.5.227: {} + + element-plus@2.11.4(vue@3.5.22(typescript@5.6.3)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.2(vue@3.5.22(typescript@5.6.3)) + '@floating-ui/dom': 1.7.4 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.20 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.5.22(typescript@5.6.3)) + async-validator: 4.2.5 + dayjs: 1.11.18 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.22(typescript@5.6.3) + transitivePeerDependencies: + - '@vue/composition-api' + + emoji-regex@10.5.0: {} + + emoji-regex@8.0.0: {} + + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + environment@1.1.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser-es@0.1.5: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + esbuild@0.25.10: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@9.1.2(eslint@9.36.0(jiti@2.6.0)): + dependencies: + eslint: 9.36.0(jiti@2.6.0) + + eslint-plugin-prettier@5.5.4(eslint-config-prettier@9.1.2(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2): + dependencies: + eslint: 9.36.0(jiti@2.6.0) + prettier: 3.6.2 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.11 + optionalDependencies: + eslint-config-prettier: 9.1.2(eslint@9.36.0(jiti@2.6.0)) + + eslint-plugin-vue@9.33.0(eslint@9.36.0(jiti@2.6.0)): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + eslint: 9.36.0(jiti@2.6.0) + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.2 + vue-eslint-parser: 9.4.3(eslint@9.36.0(jiti@2.6.0)) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint@9.36.0(jiti@2.6.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.36.0 + '@eslint/plugin-kit': 0.3.5 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.6.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@10.4.0: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + + esutils@2.0.3: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + execa@9.6.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + exsolve@1.0.7: {} + + ext@1.7.0: + dependencies: + type: 2.7.3 + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.1.0: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@10.1.4: + dependencies: + flat-cache: 6.1.14 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-root@1.1.0: {} + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flat-cache@6.1.14: + dependencies: + cacheable: 2.0.2 + flatted: 3.3.3 + hookified: 1.12.1 + + flatted@3.3.3: {} + + follow-redirects@1.15.11: {} + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + frac@1.1.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@11.3.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs.realpath@1.0.0: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.4.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@8.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + git-raw-commits@4.0.0: + dependencies: + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@14.0.0: {} + + globals@15.15.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globjoin@0.1.4: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + highlight.js@11.11.1: {} + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hookable@5.5.3: {} + + hookified@1.12.1: {} + + html-tags@3.3.1: {} + + html-void-elements@2.0.1: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + human-signals@5.0.0: {} + + human-signals@8.0.1: {} + + husky@9.1.7: {} + + i18next@20.6.1: + dependencies: + '@babel/runtime': 7.28.4 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immer@9.0.21: {} + + immutable@5.1.3: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: {} + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.4.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.2.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@5.0.0: {} + + is-stream@3.0.0: {} + + is-stream@4.0.1: {} + + is-text-path@2.0.0: + dependencies: + text-extensions: 2.4.0 + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@2.1.0: {} + + is-url@1.2.4: {} + + is-utf8@0.2.1: {} + + is-what@4.1.16: {} + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + jiti@2.6.0: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsencrypt@3.5.4: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + keyv@5.5.3: + dependencies: + '@keyv/serialize': 1.1.1 + + kind-of@6.0.3: {} + + known-css-properties@0.36.0: {} + + known-css-properties@0.37.0: {} + + kolorist@1.8.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lint-staged@15.5.2: + dependencies: + chalk: 5.6.2 + commander: 13.1.0 + debug: 4.4.3 + execa: 8.0.1 + lilconfig: 3.1.3 + listr2: 8.3.3 + micromatch: 4.0.8 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.8.1 + transitivePeerDependencies: + - supports-color + + listr2@8.3.3: + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + local-pkg@1.1.2: + dependencies: + mlly: 1.8.0 + pkg-types: 2.3.0 + quansync: 0.2.11 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.debounce@4.0.8: {} + + lodash.foreach@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.map@4.6.0: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.throttle@4.1.1: {} + + lodash.toarray@4.4.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.1.1 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 + + longest@2.0.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + mathml-tag-names@2.1.3: {} + + mdn-data@2.12.2: {} + + mdn-data@2.24.0: {} + + memoize-one@6.0.0: {} + + meow@12.1.1: {} + + meow@13.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-match@1.0.2: + dependencies: + wildcard: 1.1.2 + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-function@5.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.7: {} + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.2 + + mitt@3.0.1: {} + + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + mute-stream@0.0.8: {} + + namespace-emitter@2.0.1: {} + + nanoid@3.3.11: {} + + nanoid@5.1.6: {} + + natural-compare@1.4.0: {} + + next-tick@1.1.0: {} + + node-addon-api@7.1.1: + optional: true + + node-releases@2.0.21: {} + + normalize-path@3.0.0: {} + + normalize-wheel-es@1.2.0: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + ohash@2.0.11: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@10.2.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + parse-passwd@1.0.0: {} + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pidtree@0.6.0: {} + + pinia-plugin-persistedstate@4.5.0(pinia@3.0.3(typescript@5.6.3)(vue@3.5.22(typescript@5.6.3))): + dependencies: + deep-pick-omit: 1.2.1 + defu: 6.1.4 + destr: 2.0.5 + optionalDependencies: + pinia: 3.0.3(typescript@5.6.3)(vue@3.5.22(typescript@5.6.3)) + + pinia@3.0.3(typescript@5.6.3)(vue@3.5.22(typescript@5.6.3)): + dependencies: + '@vue/devtools-api': 7.7.7 + vue: 3.5.22(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.7 + pathe: 2.0.3 + + playwright-core@1.53.0: {} + + playwright@1.53.0: + dependencies: + playwright-core: 1.53.0 + optionalDependencies: + fsevents: 2.3.2 + + postcss-html@1.8.0: + dependencies: + htmlparser2: 8.0.2 + js-tokens: 9.0.1 + postcss: 8.5.6 + postcss-safe-parser: 6.0.0(postcss@8.5.6) + + postcss-media-query-parser@0.2.3: {} + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@6.0.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-scss@4.0.9(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + preact@10.27.2: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.6.2: {} + + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + + prismjs@1.30.0: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + qrcode.vue@3.6.0(vue@3.5.22(typescript@5.6.3)): + dependencies: + vue: 3.5.22(typescript@5.6.3) + + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rollup-plugin-visualizer@5.14.0(rollup@4.52.3): + dependencies: + open: 8.4.2 + picomatch: 4.0.3 + source-map: 0.7.6 + yargs: 17.7.2 + optionalDependencies: + rollup: 4.52.3 + + rollup@4.52.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sass@1.93.2: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.1 + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + scule@1.3.0: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + slash@3.0.0: {} + + slate-history@0.66.0(slate@0.72.8): + dependencies: + is-plain-object: 5.0.0 + slate: 0.72.8 + + slate@0.72.8: + dependencies: + immer: 9.0.21 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + snabbdom@3.6.2: {} + + sortablejs@1.15.7: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + speakingurl@14.0.1: {} + + split2@4.2.0: {} + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + ssr-window@3.0.0: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@4.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-json-comments@3.1.1: {} + + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + postcss-html: 1.8.0 + stylelint: 16.24.0(typescript@5.6.3) + + stylelint-config-recess-order@4.6.0(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + stylelint: 16.24.0(typescript@5.6.3) + stylelint-order: 6.0.4(stylelint@16.24.0(typescript@5.6.3)) + + stylelint-config-recommended-scss@14.1.0(postcss@8.5.6)(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + postcss-scss: 4.0.9(postcss@8.5.6) + stylelint: 16.24.0(typescript@5.6.3) + stylelint-config-recommended: 14.0.1(stylelint@16.24.0(typescript@5.6.3)) + stylelint-scss: 6.12.1(stylelint@16.24.0(typescript@5.6.3)) + optionalDependencies: + postcss: 8.5.6 + + stylelint-config-recommended-vue@1.6.1(postcss-html@1.8.0)(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + postcss-html: 1.8.0 + semver: 7.7.2 + stylelint: 16.24.0(typescript@5.6.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@16.24.0(typescript@5.6.3)) + stylelint-config-recommended: 17.0.0(stylelint@16.24.0(typescript@5.6.3)) + + stylelint-config-recommended@14.0.1(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + stylelint: 16.24.0(typescript@5.6.3) + + stylelint-config-recommended@17.0.0(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + stylelint: 16.24.0(typescript@5.6.3) + + stylelint-config-standard@36.0.1(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + stylelint: 16.24.0(typescript@5.6.3) + stylelint-config-recommended: 14.0.1(stylelint@16.24.0(typescript@5.6.3)) + + stylelint-order@6.0.4(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + postcss: 8.5.6 + postcss-sorting: 8.0.2(postcss@8.5.6) + stylelint: 16.24.0(typescript@5.6.3) + + stylelint-scss@6.12.1(stylelint@16.24.0(typescript@5.6.3)): + dependencies: + css-tree: 3.1.0 + is-plain-object: 5.0.0 + known-css-properties: 0.36.0 + mdn-data: 2.24.0 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.6 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + stylelint: 16.24.0(typescript@5.6.3) + + stylelint@16.24.0(typescript@5.6.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + '@csstools/media-query-list-parser': 4.0.3(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + '@dual-bundle/import-meta-resolve': 4.2.1 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.6.3) + css-functions-list: 3.2.3 + css-tree: 3.1.0 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 10.1.4 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 7.0.5 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.37.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.5.6) + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.2.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + superjson@2.2.2: + dependencies: + copy-anything: 3.0.5 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + svg-tags@1.0.0: {} + + synckit@0.11.11: + dependencies: + '@pkgr/core': 0.2.9 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss@4.1.14: {} + + tapable@2.3.0: {} + + tar@7.5.1: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + + terser@5.44.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-extensions@2.4.0: {} + + through@2.3.8: {} + + tiny-warning@1.0.3: {} + + tinyexec@1.0.1: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + + ts-api-utils@2.1.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + tsx@4.20.6: + dependencies: + esbuild: 0.25.10 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type@2.7.3: {} + + typescript-eslint@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.44.1(@typescript-eslint/parser@8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/parser': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.44.1(typescript@5.6.3) + '@typescript-eslint/utils': 8.44.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.6.3) + eslint: 9.36.0(jiti@2.6.0) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + typescript@5.6.3: {} + + ufo@1.6.1: {} + + undici-types@7.14.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + + unimport@5.4.0: + dependencies: + acorn: 8.15.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.1.2 + magic-string: 0.30.19 + mlly: 1.8.0 + pathe: 2.0.3 + picomatch: 4.0.3 + pkg-types: 2.3.0 + scule: 1.3.0 + strip-literal: 3.1.0 + tinyglobby: 0.2.15 + unplugin: 2.3.10 + unplugin-utils: 0.3.0 + + universalify@2.0.1: {} + + unplugin-auto-import@20.2.0(@vueuse/core@13.9.0(vue@3.5.22(typescript@5.6.3))): + dependencies: + local-pkg: 1.1.2 + magic-string: 0.30.19 + picomatch: 4.0.3 + unimport: 5.4.0 + unplugin: 2.3.10 + unplugin-utils: 0.3.0 + optionalDependencies: + '@vueuse/core': 13.9.0(vue@3.5.22(typescript@5.6.3)) + + unplugin-element-plus@0.10.0: + dependencies: + es-module-lexer: 1.7.0 + magic-string: 0.30.19 + unplugin: 2.3.10 + unplugin-utils: 0.2.5 + + unplugin-utils@0.2.5: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin-utils@0.3.0: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.3 + + unplugin-vue-components@29.1.0(@babel/parser@7.28.4)(vue@3.5.22(typescript@5.6.3)): + dependencies: + chokidar: 3.6.0 + debug: 4.4.3 + local-pkg: 1.1.2 + magic-string: 0.30.19 + mlly: 1.8.0 + tinyglobby: 0.2.15 + unplugin: 2.3.10 + unplugin-utils: 0.3.0 + vue: 3.5.22(typescript@5.6.3) + optionalDependencies: + '@babel/parser': 7.28.4 + transitivePeerDependencies: + - supports-color + + unplugin@2.3.10: + dependencies: + '@jridgewell/remapping': 2.3.5 + acorn: 8.15.0 + picomatch: 4.0.3 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.3(browserslist@4.26.2): + dependencies: + browserslist: 4.26.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + vite-hot-client@2.1.0(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + dependencies: + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + + vite-plugin-compression@0.5.1(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + fs-extra: 10.1.0 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + + vite-plugin-inspect@0.8.9(rollup@4.52.3)(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) + debug: 4.4.3 + error-stack-parser-es: 0.1.5 + fs-extra: 11.3.2 + open: 10.2.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + sirv: 3.0.2 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-vue-devtools@7.7.7(rollup@4.52.3)(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3)): + dependencies: + '@vue/devtools-core': 7.7.7(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.6.3)) + '@vue/devtools-kit': 7.7.7 + '@vue/devtools-shared': 7.7.7 + execa: 9.6.0 + sirv: 3.0.2 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-plugin-inspect: 0.8.9(rollup@4.52.3)(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + vite-plugin-vue-inspector: 5.3.2(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + transitivePeerDependencies: + - '@nuxt/kit' + - rollup + - supports-color + - vue + + vite-plugin-vue-inspector@5.3.2(vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.4) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.4) + '@vue/compiler-dom': 3.5.22 + kolorist: 1.8.0 + magic-string: 0.30.19 + vite: 7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + transitivePeerDependencies: + - supports-color + + vite@7.1.7(@types/node@24.8.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.93.2)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + dependencies: + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.52.3 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 24.8.1 + fsevents: 2.3.3 + jiti: 2.6.0 + lightningcss: 1.30.1 + sass: 1.93.2 + terser: 5.44.0 + tsx: 4.20.6 + yaml: 2.8.1 + + vscode-uri@3.1.0: {} + + vue-demi@0.14.10(vue@3.5.22(typescript@5.6.3)): + dependencies: + vue: 3.5.22(typescript@5.6.3) + + vue-draggable-plus@0.6.0(@types/sortablejs@1.15.8): + dependencies: + '@types/sortablejs': 1.15.8 + + vue-eslint-parser@9.4.3(eslint@9.36.0(jiti@2.6.0)): + dependencies: + debug: 4.4.3 + eslint: 9.36.0(jiti@2.6.0) + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.14.5(vue@3.5.22(typescript@5.6.3)): + dependencies: + '@intlify/core-base': 9.14.5 + '@intlify/shared': 9.14.5 + '@vue/devtools-api': 6.6.4 + vue: 3.5.22(typescript@5.6.3) + + vue-img-cutter@3.0.7(typescript@5.6.3): + dependencies: + core-js: 3.45.1 + vue: 3.5.22(typescript@5.6.3) + vue-i18n: 9.14.5(vue@3.5.22(typescript@5.6.3)) + transitivePeerDependencies: + - typescript + + vue-router@4.5.1(vue@3.5.22(typescript@5.6.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.22(typescript@5.6.3) + + vue-tsc@2.1.10(typescript@5.6.3): + dependencies: + '@volar/typescript': 2.4.23 + '@vue/language-core': 2.1.10(typescript@5.6.3) + semver: 7.7.2 + typescript: 5.6.3 + + vue@3.5.22(typescript@5.6.3): + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-sfc': 3.5.22 + '@vue/runtime-dom': 3.5.22 + '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.6.3)) + '@vue/shared': 3.5.22 + optionalDependencies: + typescript: 5.6.3 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-virtual-modules@0.6.2: {} + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wildcard@1.1.2: {} + + wmf@1.0.2: {} + + word-wrap@1.2.5: {} + + word@0.3.0: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + + wrappy@1.0.2: {} + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.0 + + xgplayer-subtitles@3.0.23(core-js@3.45.1): + dependencies: + core-js: 3.45.1 + eventemitter3: 4.0.7 + + xgplayer@3.0.23(core-js@3.45.1): + dependencies: + core-js: 3.45.1 + danmu.js: 1.1.13 + delegate: 3.2.0 + downloadjs: 1.4.7 + eventemitter3: 4.0.7 + xgplayer-subtitles: 3.0.23(core-js@3.45.1) + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + xml-name-validator@4.0.0: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yaml@2.8.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yocto-queue@1.2.1: {} + + yoctocolors@2.1.2: {} + + zrender@6.0.0: + dependencies: + tslib: 2.3.0 diff --git a/web-admin/public/favicon.ico b/web-admin/public/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/web-admin/public/logo1.jpg b/web-admin/public/logo1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b93ea922045dab38e229ebd2524eca8b3df0d01f GIT binary patch literal 411065 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%0D!`enTa8za7R?280SOG3$e%;?LeJ6BzW~W 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¨3EK8R|_!%&!{rqJc{EL*F#a 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%0A(oLJr6?%k9H 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 literal 0 HcmV?d00001 diff --git a/web-admin/public/logo1_副本.jpg b/web-admin/public/logo1_副本.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b93ea922045dab38e229ebd2524eca8b3df0d01f GIT binary patch literal 411065 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%0D!`enTa8za7R?280SOG3$e%;?LeJ6BzW~W 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¨3EK8R|_!%&!{rqJc{EL*F#a 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%0A(oLJr6?%k9H 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 literal 0 HcmV?d00001 diff --git a/web-admin/scripts/clean-dev.ts b/web-admin/scripts/clean-dev.ts new file mode 100644 index 00000000..cc0b9bce --- /dev/null +++ b/web-admin/scripts/clean-dev.ts @@ -0,0 +1,838 @@ +// scripts/clean-dev.ts +import fs from 'fs/promises' +import path from 'path' + +// 现代化颜色主题 +const theme = { + // 基础颜色 + reset: '\x1b[0m', + bold: '\x1b[1m', + dim: '\x1b[2m', + + // 前景色 + primary: '\x1b[38;5;75m', // 亮蓝色 + success: '\x1b[38;5;82m', // 亮绿色 + warning: '\x1b[38;5;220m', // 亮黄色 + error: '\x1b[38;5;196m', // 亮红色 + info: '\x1b[38;5;159m', // 青色 + purple: '\x1b[38;5;141m', // 紫色 + orange: '\x1b[38;5;208m', // 橙色 + gray: '\x1b[38;5;245m', // 灰色 + white: '\x1b[38;5;255m', // 白色 + + // 背景色 + bgDark: '\x1b[48;5;235m', // 深灰背景 + bgBlue: '\x1b[48;5;24m', // 蓝色背景 + bgGreen: '\x1b[48;5;22m', // 绿色背景 + bgRed: '\x1b[48;5;52m' // 红色背景 +} + +// 现代化图标集 +const icons = { + rocket: '🚀', + fire: '🔥', + star: '⭐', + gem: '💎', + crown: '👑', + magic: '✨', + warning: '⚠️', + success: '✅', + error: '❌', + info: 'ℹ️', + folder: '📁', + file: '📄', + image: '🖼️', + code: '💻', + data: '📊', + globe: '🌐', + map: '🗺️', + chat: '💬', + bolt: '⚡', + shield: '🛡️', + key: '🔑', + link: '🔗', + clean: '🧹', + trash: '🗑️', + check: '✓', + cross: '✗', + arrow: '→', + loading: '⏳' +} + +// 格式化工具 +const fmt = { + title: (text: string) => `${theme.bold}${theme.primary}${text}${theme.reset}`, + subtitle: (text: string) => `${theme.purple}${text}${theme.reset}`, + success: (text: string) => `${theme.success}${text}${theme.reset}`, + error: (text: string) => `${theme.error}${text}${theme.reset}`, + warning: (text: string) => `${theme.warning}${text}${theme.reset}`, + info: (text: string) => `${theme.info}${text}${theme.reset}`, + highlight: (text: string) => `${theme.bold}${theme.white}${text}${theme.reset}`, + dim: (text: string) => `${theme.dim}${theme.gray}${text}${theme.reset}`, + orange: (text: string) => `${theme.orange}${text}${theme.reset}`, + + // 带背景的文本 + badge: (text: string, bg: string = theme.bgBlue) => + `${bg}${theme.white}${theme.bold} ${text} ${theme.reset}`, + + // 渐变效果模拟 + gradient: (text: string) => { + const colors = ['\x1b[38;5;75m', '\x1b[38;5;81m', '\x1b[38;5;87m', '\x1b[38;5;159m'] + const chars = text.split('') + return chars.map((char, i) => `${colors[i % colors.length]}${char}`).join('') + theme.reset + } +} + +// 创建现代化标题横幅 +function createModernBanner() { + console.log() + console.log( + fmt.gradient(' ╔══════════════════════════════════════════════════════════════════╗') + ) + console.log( + fmt.gradient(' ║ ║') + ) + console.log( + ` ║ ${icons.rocket} ${fmt.title('ART DESIGN PRO')} ${fmt.subtitle('· 代码精简程序')} ${icons.magic} ║` + ) + console.log( + ` ║ ${fmt.dim('为项目移除演示数据,快速切换至开发模式')} ║` + ) + console.log( + fmt.gradient(' ║ ║') + ) + console.log( + fmt.gradient(' ╚══════════════════════════════════════════════════════════════════╝') + ) + console.log() +} + +// 创建分割线 +function createDivider(char = '─', color = theme.primary) { + console.log(`${color}${' ' + char.repeat(66)}${theme.reset}`) +} + +// 创建卡片样式容器 +function createCard(title: string, content: string[]) { + console.log(` ${fmt.badge('', theme.bgBlue)} ${fmt.title(title)}`) + console.log() + content.forEach((line) => { + console.log(` ${line}`) + }) + console.log() +} + +// 进度条动画 +function createProgressBar(current: number, total: number, text: string, width = 40) { + const percentage = Math.round((current / total) * 100) + const filled = Math.round((current / total) * width) + const empty = width - filled + + const filledBar = '█'.repeat(filled) + const emptyBar = '░'.repeat(empty) + + process.stdout.write( + `\r ${fmt.info('进度')} [${theme.success}${filledBar}${theme.gray}${emptyBar}${theme.reset}] ${fmt.highlight(percentage + '%')})}` + ) + + if (current === total) { + console.log() + } +} + +// 统计信息 +const stats = { + deletedFiles: 0, + deletedPaths: 0, + failedPaths: 0, + startTime: Date.now(), + totalFiles: 0 +} + +// 清理目标 +const targets = [ + 'README.md', + 'README.zh-CN.md', + 'CHANGELOG.md', + 'CHANGELOG.zh-CN.md', + 'src/views/change', + 'src/views/safeguard', + 'src/views/article', + 'src/views/examples', + 'src/views/system/nested', + 'src/views/widgets', + 'src/views/template', + 'src/views/dashboard/analysis', + 'src/views/dashboard/ecommerce', + 'src/mock/json', + 'src/mock/temp/articleList.ts', + 'src/mock/temp/commentDetail.ts', + 'src/mock/temp/commentList.ts', + 'src/assets/images/cover', + 'src/assets/images/safeguard', + 'src/assets/images/3d', + 'src/components/core/charts/art-map-chart', + 'src/components/business/comment-widget' +] + +// 递归统计文件数量 +async function countFiles(targetPath: string): Promise { + const fullPath = path.resolve(process.cwd(), targetPath) + + try { + const stat = await fs.stat(fullPath) + + if (stat.isFile()) { + return 1 + } else if (stat.isDirectory()) { + const entries = await fs.readdir(fullPath) + let count = 0 + + for (const entry of entries) { + const entryPath = path.join(targetPath, entry) + count += await countFiles(entryPath) + } + + return count + } + } catch { + return 0 + } + + return 0 +} + +// 统计所有目标的文件数量 +async function countAllFiles(): Promise { + let totalCount = 0 + + for (const target of targets) { + const count = await countFiles(target) + totalCount += count + } + + return totalCount +} + +// 删除文件和目录 +async function remove(targetPath: string, index: number) { + const fullPath = path.resolve(process.cwd(), targetPath) + + createProgressBar(index + 1, targets.length, targetPath) + + try { + const fileCount = await countFiles(targetPath) + await fs.rm(fullPath, { recursive: true, force: true }) + stats.deletedFiles += fileCount + stats.deletedPaths++ + await new Promise((resolve) => setTimeout(resolve, 50)) + } catch (err) { + stats.failedPaths++ + console.log() + console.log(` ${icons.error} ${fmt.error('删除失败')}: ${fmt.highlight(targetPath)}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 清理路由模块 +async function cleanRouteModules() { + const modulesPath = path.resolve(process.cwd(), 'src/router/modules') + + try { + // 删除演示相关的路由模块 + const modulesToRemove = [ + 'template.ts', + 'widgets.ts', + 'examples.ts', + 'article.ts', + 'safeguard.ts', + 'help.ts' + ] + + for (const module of modulesToRemove) { + const modulePath = path.join(modulesPath, module) + try { + await fs.rm(modulePath, { force: true }) + } catch { + // 文件不存在时忽略错误 + } + } + + // 重写 dashboard.ts - 只保留 console + const dashboardContent = `import { AppRouteRecord } from '@/types/router' + +export const dashboardRoutes: AppRouteRecord = { + name: 'Dashboard', + path: '/dashboard', + component: '/index/index', + meta: { + title: 'menus.dashboard.title', + icon: 'ri:pie-chart-line', + roles: ['R_SUPER', 'R_ADMIN'] + }, + children: [ + { + path: 'console', + name: 'Console', + component: '/dashboard/console', + meta: { + title: 'menus.dashboard.console', + keepAlive: false, + fixedTab: true + } + } + ] +} +` + await fs.writeFile(path.join(modulesPath, 'dashboard.ts'), dashboardContent, 'utf-8') + + // 重写 system.ts - 移除 nested 嵌套菜单 + const systemContent = `import { AppRouteRecord } from '@/types/router' + +export const systemRoutes: AppRouteRecord = { + path: '/system', + name: 'System', + component: '/index/index', + meta: { + title: 'menus.system.title', + icon: 'ri:user-3-line', + roles: ['R_SUPER', 'R_ADMIN'] + }, + children: [ + { + path: 'user', + name: 'User', + component: '/system/user', + meta: { + title: 'menus.system.user', + keepAlive: true, + roles: ['R_SUPER', 'R_ADMIN'] + } + }, + { + path: 'role', + name: 'Role', + component: '/system/role', + meta: { + title: 'menus.system.role', + keepAlive: true, + roles: ['R_SUPER'] + } + }, + { + path: 'user-center', + name: 'UserCenter', + component: '/system/user-center', + meta: { + title: 'menus.system.userCenter', + isHide: true, + keepAlive: true, + isHideTab: true + } + }, + { + path: 'menu', + name: 'Menus', + component: '/system/menu', + meta: { + title: 'menus.system.menu', + keepAlive: true, + roles: ['R_SUPER'], + authList: [ + { title: '新增', authMark: 'add' }, + { title: '编辑', authMark: 'edit' }, + { title: '删除', authMark: 'delete' } + ] + } + } + ] +} +` + await fs.writeFile(path.join(modulesPath, 'system.ts'), systemContent, 'utf-8') + + // 重写 index.ts - 只导入保留的模块 + const indexContent = `import { AppRouteRecord } from '@/types/router' +import { dashboardRoutes } from './dashboard' +import { systemRoutes } from './system' +import { resultRoutes } from './result' +import { exceptionRoutes } from './exception' + +/** + * 导出所有模块化路由 + */ +export const routeModules: AppRouteRecord[] = [ + dashboardRoutes, + systemRoutes, + resultRoutes, + exceptionRoutes +] +` + await fs.writeFile(path.join(modulesPath, 'index.ts'), indexContent, 'utf-8') + + console.log(` ${icons.success} ${fmt.success('清理路由模块完成')}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error('清理路由模块失败')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 清理路由别名 +async function cleanRoutesAlias() { + const routesAliasPath = path.resolve(process.cwd(), 'src/router/routesAlias.ts') + + try { + const cleanedAlias = `/** + * 公共路由别名 + # 存放系统级公共路由路径,如布局容器、登录页等 + */ +export enum RoutesAlias { + Layout = '/index/index', // 布局容器 + Login = '/auth/login' // 登录页 +} +` + + await fs.writeFile(routesAliasPath, cleanedAlias, 'utf-8') + console.log(` ${icons.success} ${fmt.success('重写路由别名配置完成')}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error('清理路由别名失败')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 清理变更日志 +async function cleanChangeLog() { + const changeLogPath = path.resolve(process.cwd(), 'src/mock/upgrade/changeLog.ts') + + try { + const cleanedChangeLog = `import { ref } from 'vue' + +interface UpgradeLog { + version: string // 版本号 + title: string // 更新标题 + date: string // 更新日期 + detail?: string[] // 更新内容 + requireReLogin?: boolean // 是否需要重新登录 + remark?: string // 备注 +} + +export const upgradeLogList = ref([]) +` + + await fs.writeFile(changeLogPath, cleanedChangeLog, 'utf-8') + console.log(` ${icons.success} ${fmt.success('清空变更日志数据完成')}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error('清理变更日志失败')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 清理语言文件 +async function cleanLanguageFiles() { + const languageFiles = [ + { path: 'src/locales/langs/zh.json', name: '中文语言文件' }, + { path: 'src/locales/langs/en.json', name: '英文语言文件' } + ] + + for (const { path: langPath, name } of languageFiles) { + try { + const fullPath = path.resolve(process.cwd(), langPath) + const content = await fs.readFile(fullPath, 'utf-8') + const langData = JSON.parse(content) + + const menusToRemove = [ + 'widgets', + 'template', + 'article', + 'examples', + 'safeguard', + 'plan', + 'help' + ] + + if (langData.menus) { + menusToRemove.forEach((menuKey) => { + if (langData.menus[menuKey]) { + delete langData.menus[menuKey] + } + }) + + if (langData.menus.dashboard) { + if (langData.menus.dashboard.analysis) { + delete langData.menus.dashboard.analysis + } + if (langData.menus.dashboard.ecommerce) { + delete langData.menus.dashboard.ecommerce + } + } + + if (langData.menus.system) { + const systemKeysToRemove = [ + 'nested', + 'menu1', + 'menu2', + 'menu21', + 'menu3', + 'menu31', + 'menu32', + 'menu321' + ] + systemKeysToRemove.forEach((key) => { + if (langData.menus.system[key]) { + delete langData.menus.system[key] + } + }) + } + } + + await fs.writeFile(fullPath, JSON.stringify(langData, null, 2), 'utf-8') + console.log(` ${icons.success} ${fmt.success(`清理${name}完成`)}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error(`清理${name}失败`)}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } + } +} + +// 清理快速入口组件 +async function cleanFastEnterComponent() { + const fastEnterPath = path.resolve(process.cwd(), 'src/config/fastEnter.ts') + + try { + const cleanedFastEnter = `/** + * 快速入口配置 + * 包含:应用列表、快速链接等配置 + */ +import { WEB_LINKS } from '@/utils/constants' +import type { FastEnterConfig } from '@/types/config' + +const fastEnterConfig: FastEnterConfig = { + // 显示条件(屏幕宽度) + minWidth: 1200, + // 应用列表 + applications: [ + { + name: '工作台', + description: '系统概览与数据统计', + icon: 'ri:pie-chart-line', + iconColor: '#377dff', + enabled: true, + order: 1, + routeName: 'Console' + }, + { + name: '官方文档', + description: '使用指南与开发文档', + icon: 'ri:bill-line', + iconColor: '#ffb100', + enabled: true, + order: 2, + link: WEB_LINKS.DOCS + }, + { + name: '技术支持', + description: '技术支持与问题反馈', + icon: 'ri:user-location-line', + iconColor: '#ff6b6b', + enabled: true, + order: 3, + link: WEB_LINKS.COMMUNITY + }, + { + name: '哔哩哔哩', + description: '技术分享与交流', + icon: 'ri:bilibili-line', + iconColor: '#FB7299', + enabled: true, + order: 4, + link: WEB_LINKS.BILIBILI + } + ], + // 快速链接 + quickLinks: [ + { + name: '登录', + enabled: true, + order: 1, + routeName: 'Login' + }, + { + name: '注册', + enabled: true, + order: 2, + routeName: 'Register' + }, + { + name: '忘记密码', + enabled: true, + order: 3, + routeName: 'ForgetPassword' + }, + { + name: '个人中心', + enabled: true, + order: 4, + routeName: 'UserCenter' + } + ] +} + +export default Object.freeze(fastEnterConfig) +` + + await fs.writeFile(fastEnterPath, cleanedFastEnter, 'utf-8') + console.log(` ${icons.success} ${fmt.success('清理快速入口配置完成')}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error('清理快速入口配置失败')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 更新菜单接口 +async function updateMenuApi() { + const apiPath = path.resolve(process.cwd(), 'src/api/system-manage.ts') + + try { + const content = await fs.readFile(apiPath, 'utf-8') + const updatedContent = content.replace( + "url: '/api/v3/system/menus'", + "url: '/api/v3/system/menus/simple'" + ) + + await fs.writeFile(apiPath, updatedContent, 'utf-8') + console.log(` ${icons.success} ${fmt.success('更新菜单接口完成')}`) + } catch (err) { + console.log(` ${icons.error} ${fmt.error('更新菜单接口失败')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + } +} + +// 用户确认函数 +async function getUserConfirmation(): Promise { + const { createInterface } = await import('readline') + + return new Promise((resolve) => { + const rl = createInterface({ + input: process.stdin, + output: process.stdout + }) + + console.log( + ` ${fmt.highlight('请输入')} ${fmt.success('yes')} ${fmt.highlight('确认执行清理操作,或按 Enter 取消')}` + ) + console.log() + process.stdout.write(` ${icons.arrow} `) + + rl.question('', (answer: string) => { + rl.close() + resolve(answer.toLowerCase().trim() === 'yes') + }) + }) +} + +// 显示清理警告 +async function showCleanupWarning() { + createCard('安全警告', [ + `${fmt.warning('此操作将永久删除以下演示内容,且无法恢复!')}`, + `${fmt.dim('请仔细阅读清理列表,确认后再继续操作')}` + ]) + + const cleanupItems = [ + { + icon: icons.image, + name: '图片资源', + desc: '演示用的封面图片、3D图片、运维图片等', + color: theme.orange + }, + { + icon: icons.file, + name: '演示页面', + desc: 'widgets、template、article、examples、safeguard等页面', + color: theme.purple + }, + { + icon: icons.code, + name: '路由模块文件', + desc: '删除演示路由模块,只保留核心模块(dashboard、system、result、exception)', + color: theme.primary + }, + { + icon: icons.link, + name: '路由别名', + desc: '重写routesAlias.ts,移除演示路由别名', + color: theme.info + }, + { + icon: icons.data, + name: 'Mock数据', + desc: '演示用的JSON数据、文章列表、评论数据等', + color: theme.success + }, + { + icon: icons.globe, + name: '多语言文件', + desc: '清理中英文语言包中的演示菜单项', + color: theme.warning + }, + { icon: icons.map, name: '地图组件', desc: '移除art-map-chart地图组件', color: theme.error }, + { icon: icons.chat, name: '评论组件', desc: '移除comment-widget评论组件', color: theme.orange }, + { + icon: icons.bolt, + name: '快速入口', + desc: '移除分析页、礼花效果、聊天、更新日志、定价、留言管理等无效项目', + color: theme.purple + } + ] + + console.log(` ${fmt.badge('', theme.bgRed)} ${fmt.title('将要清理的内容')}`) + console.log() + + cleanupItems.forEach((item, index) => { + console.log(` ${item.color}${theme.reset} ${fmt.highlight(`${index + 1}. ${item.name}`)}`) + console.log(` ${fmt.dim(item.desc)}`) + }) + + console.log() + console.log(` ${fmt.badge('', theme.bgGreen)} ${fmt.title('保留的功能模块')}`) + console.log() + + const preservedModules = [ + { name: 'Dashboard', desc: '工作台页面' }, + { name: 'System', desc: '系统管理模块' }, + { name: 'Result', desc: '结果页面' }, + { name: 'Exception', desc: '异常页面' }, + { name: 'Auth', desc: '登录注册功能' }, + { name: 'Core Components', desc: '核心组件库' } + ] + + preservedModules.forEach((module) => { + console.log(` ${icons.check} ${fmt.success(module.name)} ${fmt.dim(`- ${module.desc}`)}`) + }) + + console.log() + createDivider() + console.log() +} + +// 显示统计信息 +async function showStats() { + const duration = Date.now() - stats.startTime + const seconds = (duration / 1000).toFixed(2) + + console.log() + createCard('清理统计', [ + `${fmt.success('成功删除')}: ${fmt.highlight(stats.deletedFiles.toString())} 个文件`, + `${fmt.info('涉及路径')}: ${fmt.highlight(stats.deletedPaths.toString())} 个目录/文件`, + ...(stats.failedPaths > 0 + ? [ + `${icons.error} ${fmt.error('删除失败')}: ${fmt.highlight(stats.failedPaths.toString())} 个路径` + ] + : []), + `${fmt.info('耗时')}: ${fmt.highlight(seconds)} 秒` + ]) +} + +// 创建成功横幅 +function createSuccessBanner() { + console.log() + console.log( + fmt.gradient(' ╔══════════════════════════════════════════════════════════════════╗') + ) + console.log( + fmt.gradient(' ║ ║') + ) + console.log( + ` ║ ${icons.star} ${fmt.success('清理完成!项目已准备就绪')} ${icons.rocket} ║` + ) + console.log( + ` ║ ${fmt.dim('现在可以开始您的开发之旅了!')} ║` + ) + console.log( + fmt.gradient(' ║ ║') + ) + console.log( + fmt.gradient(' ╚══════════════════════════════════════════════════════════════════╝') + ) + console.log() +} + +// 主函数 +async function main() { + // 清屏并显示横幅 + console.clear() + createModernBanner() + + // 显示清理警告 + await showCleanupWarning() + + // 统计文件数量 + console.log(` ${fmt.info('正在统计文件数量...')}`) + stats.totalFiles = await countAllFiles() + + console.log(` ${fmt.info('即将清理')}: ${fmt.highlight(stats.totalFiles.toString())} 个文件`) + console.log(` ${fmt.dim(`涉及 ${targets.length} 个目录/文件路径`)}`) + console.log() + + // 用户确认 + const confirmed = await getUserConfirmation() + + if (!confirmed) { + console.log(` ${fmt.warning('操作已取消,清理中止')}`) + console.log() + return + } + + console.log() + console.log(` ${icons.check} ${fmt.success('确认成功,开始清理...')}`) + console.log() + + // 开始清理过程 + console.log(` ${fmt.badge('步骤 1/6', theme.bgBlue)} ${fmt.title('删除演示文件')}`) + console.log() + for (let i = 0; i < targets.length; i++) { + await remove(targets[i], i) + } + console.log() + + console.log(` ${fmt.badge('步骤 2/6', theme.bgBlue)} ${fmt.title('清理路由模块')}`) + console.log() + await cleanRouteModules() + console.log() + + console.log(` ${fmt.badge('步骤 3/6', theme.bgBlue)} ${fmt.title('重写路由别名')}`) + console.log() + await cleanRoutesAlias() + console.log() + + console.log(` ${fmt.badge('步骤 4/6', theme.bgBlue)} ${fmt.title('清空变更日志')}`) + console.log() + await cleanChangeLog() + console.log() + + console.log(` ${fmt.badge('步骤 5/6', theme.bgBlue)} ${fmt.title('清理语言文件')}`) + console.log() + await cleanLanguageFiles() + console.log() + + console.log(` ${fmt.badge('步骤 6/7', theme.bgBlue)} ${fmt.title('清理快速入口')}`) + console.log() + await cleanFastEnterComponent() + console.log() + + console.log(` ${fmt.badge('步骤 7/7', theme.bgBlue)} ${fmt.title('更新菜单接口')}`) + console.log() + await updateMenuApi() + + // 显示统计信息 + await showStats() + + // 显示成功横幅 + createSuccessBanner() +} + +main().catch((err) => { + console.log() + console.log(` ${icons.error} ${fmt.error('清理脚本执行出错')}`) + console.log(` ${fmt.dim('错误详情: ' + err)}`) + console.log() + process.exit(1) +}) diff --git a/web-admin/src/App.vue b/web-admin/src/App.vue new file mode 100644 index 00000000..436b5fff --- /dev/null +++ b/web-admin/src/App.vue @@ -0,0 +1,153 @@ + + + diff --git a/web-admin/src/api/admin.ts b/web-admin/src/api/admin.ts new file mode 100644 index 00000000..21f8647d --- /dev/null +++ b/web-admin/src/api/admin.ts @@ -0,0 +1,825 @@ +import request from '@/utils/http' + +/** + * 获取用户列表 + */ +export function fetchUserList(params: { + page?: number + pageSize?: number + keyword?: string + role?: string + roleIn?: string + regionId?: string + isActive?: boolean +}) { + return request.get<{ + list: Api.User.UserItem[] + total: number + page: number + pageSize: number + totalPages: number + }>({ + url: '/web/admin/users', + params + }) +} + +/** + * 获取用户详情 + */ +export function fetchUserDetail(id: string) { + return request.get({ + url: `/web/admin/users/${id}` + }) +} + +/** + * 创建用户 + */ +export function fetchCreateUser(data: { + username: string + password: string + realName: string + phone?: string + role: string + regionId?: string + regionIds?: string[] + avatarUrl?: string | null +}) { + return request.post({ + url: '/web/admin/users', + data + }) +} + +/** + * 更新用户 + */ +export function fetchUpdateUser(id: string, data: Partial<{ + realName: string + phone?: string + role: string + regionId?: string + regionIds?: string[] + isActive: boolean + avatarUrl?: string | null +}>) { + return request.put({ + url: `/web/admin/users/${id}`, + params: data + }) +} + +/** + * 可授权菜单 code 列表 + */ +export function fetchAssignableMenuCodes() { + return request.get<{ + list: Array<{ + id: string + code: string + name: string + parentId?: string + sortOrder?: number + }> + }>({ + url: '/web/admin/menus/assignable-codes' + }) +} + +/** + * 获取用户菜单授权 + */ +export function fetchUserMenuScopes(userId: string) { + return request.get<{ + userId: string + menuCodes: string[] + }>({ + url: `/web/admin/users/${userId}/menu-scopes` + }) +} + +/** + * 更新用户菜单授权(全量覆盖) + */ +export function fetchUpdateUserMenuScopes(userId: string, menuCodes: string[]) { + return request.post({ + url: `/web/admin/users/${userId}/menu-scopes`, + data: { menuCodes } + }) +} + +/** + * 删除用户 + */ +export function fetchDeleteUser(id: string) { + return request.del({ + url: `/web/admin/users/${id}` + }) +} + +/** + * 重置用户密码 + */ +export function fetchResetPassword(id: string) { + return request.post({ + url: `/web/admin/users/${id}/reset-password` + }) +} + +/** + * 修改用户密码 + */ +export function fetchChangePassword(data: { + oldPassword: string + newPassword: string +}) { + return request.post({ + url: '/web/admin/users/change-password', + params: data + }) +} + +/** + * 获取区域列表 + */ +export function fetchRegionList(params?: { + page?: number + pageSize?: number + keyword?: string + isActive?: boolean +}) { + return request.get<{ + list: Api.Region.RegionItem[] + total: number + page: number + pageSize: number + totalPages: number + }>({ + url: '/web/admin/regions', + params + }) +} + +/** + * 获取启用的区域列表 + */ +export function fetchActiveRegions() { + // 简单缓存:区域列表变化频率低,避免页面间重复请求导致“区域加载慢” + // 5 分钟 TTL;需要实时刷新时可在调用方自行绕过(后续可升级为 Pinia store) + const now = Date.now() + const anyFn = fetchActiveRegions as any + const cache = anyFn.__cache as undefined | { ts: number; data: Api.Region.RegionItem[] } + if (cache && now - cache.ts < 5 * 60 * 1000) return Promise.resolve(cache.data) + + return request.get({ + url: '/web/admin/regions/active' + }).then((data) => { + anyFn.__cache = { ts: now, data: data || [] } + return data + }) +} + +/** + * 获取所有未删除的区域(包含禁用态 isActive=0) + * 用于后台各模块“区域 tab”展示全量范围。 + */ +export async function fetchNotDeletedRegions() { + const now = Date.now() + const anyFn = fetchNotDeletedRegions as any + const cache = anyFn.__cache as undefined | { ts: number; data: Api.Region.RegionItem[] } + if (cache && now - cache.ts < 5 * 60 * 1000) return cache.data + + // 注意:后端 `GET /web/admin/regions` 的 pageSize 有上限(<=100),不能一次性拉太大。 + const pageSize = 100 + const all: Api.Region.RegionItem[] = [] + let page = 1 + + while (true) { + const res: any = await fetchRegionList({ page, pageSize }) + const list: Api.Region.RegionItem[] = Array.isArray(res?.list) ? res.list : [] + all.push(...list) + + const total = Number(res?.total ?? 0) + // 没有更多数据:直接退出(避免死循环) + if (!total || all.length >= total || list.length < pageSize) break + page++ + } + + anyFn.__cache = { ts: now, data: all } + return all +} + +/** + * 获取区域详情 + */ +export function fetchRegionDetail(id: string) { + return request.get({ + url: `/web/admin/regions/${id}` + }) +} + +/** + * 创建区域 + */ +export function fetchCreateRegion(data: { + name: string + code: string + description?: string + sortOrder?: number + /** 预计配送时长(分钟) */ + expectedDeliveryMinutes?: number | null + /** 计划到货前未送达时预警提前时间(分钟) */ + deliveryWarnAdvanceMinutes?: number | null +}) { + return request.post({ + url: '/web/admin/regions', + params: data + }) +} + +/** + * 更新区域 + */ +export function fetchUpdateRegion(id: string, data: Partial<{ + name: string + code: string + description?: string + sortOrder?: number + isActive?: boolean + expectedDeliveryMinutes?: number | null + deliveryWarnAdvanceMinutes?: number | null +}>) { + return request.put({ + url: `/web/admin/regions/${id}`, + params: data + }) +} + +/** + * 删除区域 + */ +export function fetchDeleteRegion(id: string) { + return request.del({ + url: `/web/admin/regions/${id}` + }) +} + +/** + * 获取商品分类列表 + */ +export function fetchCategoryList(params?: { + page?: number + pageSize?: number + keyword?: string + isActive?: boolean +}) { + return request.get<{ + list: Api.Category.CategoryItem[] + total: number + page: number + pageSize: number + totalPages: number + }>({ + url: '/web/admin/categories', + params + }) +} + +/** + * 获取商品分类树 + */ +export function fetchCategoryTree() { + return request.get({ + url: '/web/admin/categories/tree' + }) +} + +/** + * 创建商品分类 + */ +export function fetchCreateCategory(data: { + name: string + parentId?: string + sortOrder?: number + imageUrl?: string + /** 价格系数,百分比点数(如 5 表示 5%) */ + priceCoefficient?: number +}) { + return request.post({ + url: '/web/admin/categories', + params: data + }) +} + +/** + * 更新商品分类 + */ +export function fetchUpdateCategory(id: string, data: Partial<{ + name: string + parentId?: string + sortOrder?: number + isActive?: boolean + imageUrl?: string + priceCoefficient?: number +}>) { + return request.put({ + url: `/web/admin/categories/${id}`, + params: data + }) +} + +/** + * 删除商品分类 + */ +export function fetchDeleteCategory(id: string) { + return request.del({ + url: `/web/admin/categories/${id}` + }) +} + +/** + * 上传商品分类图片(MinIO)并返回图片URL + */ +export function fetchUploadCategoryImage(data: FormData) { + return request.post({ + url: '/web/admin/categories/upload-image', + data + }) +} + +/** 上传用户头像,返回 MinIO 等存储后的 URL,供写入 avatarUrl */ +export function fetchUploadUserAvatar(data: FormData) { + return request.post<{ url: string }>({ + url: '/web/admin/users/upload-avatar', + data + }) +} + +/** + * 获取商品单位列表 + */ +export function fetchUnitList(params?: { + page?: number + pageSize?: number + keyword?: string + isActive?: boolean +}) { + return request.get<{ + list: Api.Unit.UnitItem[] + total: number + page: number + pageSize: number + totalPages: number + }>({ + url: '/web/admin/units', + params + }) +} + +/** + * 创建商品单位 + */ +export function fetchCreateUnit(data: { + name: string + code: string +}) { + return request.post({ + url: '/web/admin/units', + params: data + }) +} + +/** + * 更新商品单位 + */ +export function fetchUpdateUnit(id: string, data: Partial<{ + name: string + code: string + isActive?: boolean +}>) { + return request.put({ + url: `/web/admin/units/${id}`, + params: data + }) +} + +/** + * 删除商品单位 + */ +export function fetchDeleteUnit(id: string) { + return request.del({ + url: `/web/admin/units/${id}` + }) +} + +/** + * 获取商品列表 + */ +export function fetchProductList(params?: { + page?: number + pageSize?: number + keyword?: string + categoryId?: string + isActive?: boolean +}) { + return request.get<{ + list: Api.Product.ProductItem[] + total: number + page: number + pageSize: number + totalPages: number + }>({ + url: '/web/admin/products', + params + }) +} + +/** + * 获取商品详情 + */ +export function fetchProductDetail(id: string) { + return request.get({ + url: `/web/admin/products/${id}` + }) +} + +/** + * 商品在各启用区域的当前生效价(来自该区域生效中的价格清单) + */ +export function fetchProductRegionPrices(productId: string) { + return request.get<{ + list: Array<{ + regionId: string + regionName: string + price: number | null + unitId?: string | null + unitName?: string | null + }> + }>({ + url: `/web/admin/products/${productId}/region-prices` + }) +} + +/** + * 创建商品 + */ +export function fetchCreateProduct(data: { + name: string + skuCode?: string + categoryId?: string + unitId?: string + measureValue?: number | null + description?: string + imageUrl?: string + /** 调价系数(%):百分比点数,5 表示 5% */ + priceCoefficient?: number + isActive?: boolean + detailContent?: string +}) { + return request.post({ + url: '/web/admin/products', + params: data + }) +} + +/** + * 更新商品 + */ +export function fetchUpdateProduct(id: string, data: Partial<{ + name: string + skuCode?: string + categoryId?: string + unitId?: string + measureValue?: number | null + description?: string + imageUrl?: string + priceCoefficient?: number + isActive?: boolean + detailContent?: string +}>) { + return request.put({ + url: `/web/admin/products/${id}`, + params: data + }) +} + +/** + * 删除商品 + */ +export function fetchDeleteProduct(id: string) { + return request.del({ + url: `/web/admin/products/${id}` + }) +} + +// ========== 商品轮播图 ========== + +/** + * 获取商品轮播图列表 + */ +export function fetchProductBannerList(productId: string) { + return request.get<{ + list: Api.Product.ProductBanner[] + total: number + }>({ + url: `/web/admin/product-banners/product/${productId}` + }) +} + +/** + * 批量添加商品轮播图 + */ +export function fetchCreateProductBanners(productId: string, items: Api.Product.ProductBannerCreate[]) { + return request.post({ + url: `/web/admin/product-banners/product/${productId}`, + params: items + }) +} + +/** + * 更新轮播图 + */ +export function fetchUpdateProductBanner(id: string, data: Partial) { + return request.put({ + url: `/web/admin/product-banners/${id}`, + params: data + }) +} + +/** + * 更新轮播图排序 + */ +export function fetchUpdateProductBannerSort(productId: string, items: { id: string; sortOrder: number }[]) { + return request.put({ + url: `/web/admin/product-banners/product/${productId}/sort`, + params: { items } + }) +} + +/** + * 删除轮播图 + */ +export function fetchDeleteProductBanner(id: string) { + return request.del({ + url: `/web/admin/product-banners/${id}` + }) +} + +// ========== 商品详情媒体 ========== + +/** + * 获取商品详情媒体列表 + */ +export function fetchProductDetailMediaList(productId: string) { + return request.get<{ + list: Api.Product.ProductDetailMedia[] + total: number + }>({ + url: `/web/admin/product-detail-media/product/${productId}` + }) +} + +/** + * 批量添加商品详情媒体 + */ +export function fetchCreateProductDetailMedia(productId: string, items: Api.Product.ProductDetailMediaCreate[]) { + return request.post({ + url: `/web/admin/product-detail-media/product/${productId}`, + params: items + }) +} + +/** + * 更新详情媒体 + */ +export function fetchUpdateProductDetailMedia(id: string, data: Partial) { + return request.put({ + url: `/web/admin/product-detail-media/${id}`, + params: data + }) +} + +/** + * 更新详情媒体排序 + */ +export function fetchUpdateProductDetailMediaSort(productId: string, items: { id: string; sortOrder: number }[]) { + return request.put({ + url: `/web/admin/product-detail-media/product/${productId}/sort`, + params: { items } + }) +} + +/** + * 删除详情媒体 + */ +export function fetchDeleteProductDetailMedia(id: string) { + return request.del({ + url: `/web/admin/product-detail-media/${id}` + }) +} + +// ========== 商品参数模板 ========== + +/** + * 获取参数模板列表 + */ +export function fetchProductParameterList(params?: { + page?: number + pageSize?: number + keyword?: string + isActive?: number +}) { + return request.get<{ + list: Api.Product.ProductParameter[] + total: number + page: number + pageSize: number + }>({ + url: '/web/admin/product-parameters', + params + }) +} + +/** + * 获取参数模板简洁列表 + */ +export function fetchProductParameterSimple() { + return request.get<{ + list: Api.Product.ProductParameterSimple[] + total: number + }>({ + url: '/web/admin/product-parameters/simple' + }) +} + +/** + * 获取参数模板详情 + */ +export function fetchProductParameterDetail(id: string) { + return request.get({ + url: `/web/admin/product-parameters/${id}` + }) +} + +/** + * 创建参数模板 + */ +export function fetchCreateProductParameter(data: Api.Product.ProductParameterCreate) { + return request.post({ + url: '/web/admin/product-parameters', + params: data + }) +} + +/** + * 更新参数模板 + */ +export function fetchUpdateProductParameter(id: string, data: Partial) { + return request.put({ + url: `/web/admin/product-parameters/${id}`, + params: data + }) +} + +/** + * 删除参数模板 + */ +export function fetchDeleteProductParameter(id: string) { + return request.del({ + url: `/web/admin/product-parameters/${id}` + }) +} + +// ========== 分类参数关联 ========== + +/** + * 获取分类关联的参数列表 + */ +export function fetchCategoryParameters(categoryId: string) { + return request.get<{ + list: Api.Product.CategoryParameter[] + total: number + }>({ + url: `/web/admin/categories/${categoryId}/parameters` + }) +} + +/** + * 更新分类关联的参数 + */ +export function fetchUpdateCategoryParameters(categoryId: string, items: Api.Product.CategoryParameterCreate[]) { + return request.put({ + url: `/web/admin/categories/${categoryId}/parameters`, + params: { items } + }) +} + +// ========== 商品参数值 ========== + +/** + * 获取商品参数值列表 + */ +export function fetchProductParameterValues(productId: string) { + return request.get<{ + list: Api.Product.ProductParameterValue[] + total: number + }>({ + url: `/web/admin/product-parameter-values/product/${productId}` + }) +} + +/** + * 批量保存商品参数值 + */ +export function fetchSaveProductParameterValues(productId: string, values: Api.Product.ProductParameterValueCreate[]) { + return request.post({ + url: `/web/admin/product-parameter-values/product/${productId}`, + params: { productId, values } + }) +} + +// ========== 售后评价 ========== + +/** + * 获取评价列表 + */ +export function fetchReviewList(params?: { + page?: number + pageSize?: number + productId?: string + productName?: string + userName?: string + status?: string + rating?: number + startDate?: string + endDate?: string +}) { + return request.get<{ + list: Api.Product.ProductReview[] + total: number + page: number + pageSize: number + }>({ + url: '/web/admin/reviews', + params + }) +} + +/** + * 获取评价统计 + */ +export function fetchReviewStatistics(productId?: string) { + return request.get({ + url: '/web/admin/reviews/statistics', + params: { productId } + }) +} + +/** + * 获取评价详情 + */ +export function fetchReviewDetail(id: string) { + return request.get({ + url: `/web/admin/reviews/${id}` + }) +} + +/** + * 审核通过评价 + */ +export function fetchApproveReview(id: string) { + return request.put({ + url: `/web/admin/reviews/${id}/approve` + }) +} + +/** + * 拒绝评价 + */ +export function fetchRejectReview(id: string, rejectReason: string) { + return request.put({ + url: `/web/admin/reviews/${id}/reject`, + params: { rejectReason } + }) +} + +/** + * 回复评价 + */ +export function fetchReplyReview(id: string, replyContent: string) { + return request.put({ + url: `/web/admin/reviews/${id}/reply`, + params: { replyContent } + }) +} + +/** + * 置顶/取消置顶评价 + */ +export function fetchToggleReviewTop(id: string, isTop: number) { + return request.put({ + url: `/web/admin/reviews/${id}/top`, + params: { isTop } + }) +} diff --git a/web-admin/src/api/auth.ts b/web-admin/src/api/auth.ts new file mode 100644 index 00000000..16e477ee --- /dev/null +++ b/web-admin/src/api/auth.ts @@ -0,0 +1,89 @@ +import request from '@/utils/http' +import { buildWebEncryptedLoginBody } from '@/utils/loginRsa' + +/** + * Web端登录(RSA 加密传输账号密码) + * @param params 登录参数 { username, password } + * @returns 登录响应 + */ +export async function fetchLogin(params: { username: string; password: string }) { + const body = await buildWebEncryptedLoginBody(params.username, params.password) + return request.post<{ + token: string + refreshToken: string + expiresIn: number + userInfo: { + id: string + username: string + realName: string + phone: string + role: string + regionId: string + regionName: string + avatarUrl?: string | null + } + }>({ + url: '/web/auth/login', + data: body + }) +} + +/** + * 获取当前用户信息 + * @returns 用户信息 + */ +export function fetchGetUserInfo() { + return request.get<{ + id: string + username: string + realName: string + phone: string + role: string + regionId: string + regionName: string + regionIds?: string[] + isSuperAdmin?: boolean + isActive: boolean + avatarUrl?: string | null + }>({ + url: '/web/auth/current-user' + }) +} + +/** + * 获取当前用户菜单 code 权限 + */ +export function fetchGetMenuCodes() { + return request.get<{ + isSuperAdmin: boolean + all: boolean + menuCodes: string[] + }>({ + url: '/web/auth/menu-codes' + }) +} + +/** + * 刷新Token + * @param refreshToken 刷新令牌 + * @returns 新令牌 + */ +export function fetchRefreshToken(refreshToken: string) { + return request.post<{ + token: string + refreshToken: string + expiresIn: number + }>({ + url: '/web/auth/refresh-token', + params: { refreshToken } + }) +} + +/** + * 登出 + */ +export function fetchLogout() { + return request.post({ + url: '/web/auth/logout' + }) +} diff --git a/web-admin/src/api/chinaRegion.ts b/web-admin/src/api/chinaRegion.ts new file mode 100644 index 00000000..2420238f --- /dev/null +++ b/web-admin/src/api/chinaRegion.ts @@ -0,0 +1,15 @@ +import request from '@/utils/http' + +/** 与小程序端一致:value=区划代码,label=名称,children=下级 */ +export interface ChinaRegionTreeNode { + value: string + label: string + children?: ChinaRegionTreeNode[] +} + +/** 运营端:数据源 bas_china_region */ +export function fetchChinaRegionTree() { + return request.get<{ tree: ChinaRegionTreeNode[] }>({ + url: '/web/admin/china-region-tree' + }) +} diff --git a/web-admin/src/api/system-manage.ts b/web-admin/src/api/system-manage.ts new file mode 100644 index 00000000..8de96912 --- /dev/null +++ b/web-admin/src/api/system-manage.ts @@ -0,0 +1,39 @@ +import request from '@/utils/http' +import type { AppRouteRecord } from '@/types/router' + +/** + * 获取菜单列表 + * 从后端获取运营端菜单 + */ +export async function fetchGetMenuList() { + const res = await request.get({ + url: '/web/menu/list' + }) + if (Array.isArray(res)) return res + return res?.menuList || [] +} + +/** + * 获取角色列表 + */ +export function fetchGetRoleList() { + return request.get>({ + url: '/web/admin/roles' + }) +} + +/** + * 示例表格用户列表(兼容旧示例页调用) + */ +export function fetchGetUserList(params?: Record) { + return request.get<{ + list: any[] + total: number + page?: number + pageSize?: number + }>({ + url: '/web/admin/users', + params + }) +} + diff --git a/web-admin/src/api/system.ts b/web-admin/src/api/system.ts new file mode 100644 index 00000000..37ab3853 --- /dev/null +++ b/web-admin/src/api/system.ts @@ -0,0 +1,206 @@ +import request from '@/utils/http' + +/** + * 更新日志相关 API + */ + +/** + * 获取更新日志列表 + */ +export function fetchGetUpgradeLogs(params: { page?: number; pageSize?: number }) { + return request.get<{ + list: Array<{ + id: string + version: string + title: string + date: string + detail: string[] + requireReLogin: boolean + remark?: string + createAt: string + }> + total: number + page: number + pageSize: number + }>({ + url: '/web/system/upgrade-logs', + params + }) +} + +/** + * 获取所有更新日志(用于变更日志页面展示) + */ +export function fetchGetAllUpgradeLogs() { + return request.get>({ + url: '/web/system/upgrade-logs/all' + }) +} + +/** + * 获取最新一条更新日志(用于升级检测) + */ +export function fetchGetLatestUpgradeLog() { + return request.get<{ + version: string + title: string + date: string + detail: string[] + requireReLogin: boolean + remark?: string + } | null>({ + url: '/web/system/upgrade-logs/latest' + }) +} + +/** + * 创建更新日志 + */ +export function fetchCreateUpgradeLog(data: { + version: string + title: string + date: string + detail?: string + require_re_login?: boolean + remark?: string +}) { + return request.post<{ id: string }>({ + url: '/web/system/upgrade-logs', + data + }) +} + +/** + * 更新更新日志 + */ +export function fetchUpdateUpgradeLog( + logId: string, + data: { + version?: string + title?: string + date?: string + detail?: string + require_re_login?: boolean + remark?: string + } +) { + return request.put<{ id: string }>({ + url: `/web/system/upgrade-logs/${logId}`, + data + }) +} + +/** + * 删除更新日志 + */ +export function fetchDeleteUpgradeLog(logId: string) { + return request.delete<{ id: string }>({ + url: `/web/system/upgrade-logs/${logId}` + }) +} + +/** + * 评论相关 API + */ + +/** + * 获取评论列表 + */ +export function fetchGetComments(params: { + target_type?: string + target_id?: string + page?: number + pageSize?: number +}) { + return request.get<{ + list: CommentItem[] + total: number + page: number + pageSize: number + }>({ + url: '/web/system/comments', + params + }) +} + +export interface CommentItem { + id: string + parentId?: string + author: string + authorId?: string + content: string + targetType?: string + targetId?: string + timestamp: string + replies: CommentItem[] +} + +/** + * 创建评论 + */ +export function fetchCreateComment(data: { + author: string + content: string + parent_id?: string + author_id?: string + target_type?: string + target_id?: string +}) { + return request.post({ + url: '/web/system/comments', + data + }) +} + +/** + * 删除评论 + */ +export function fetchDeleteComment(commentId: string) { + return request.delete<{ id: string }>({ + url: `/web/system/comments/${commentId}` + }) +} + +/** + * 系统配置相关 API + */ + +/** + * 获取中国地图GeoJSON数据 + */ +export function fetchGetChinaMapData() { + return request.get({ + url: '/web/system/china-map' + }) +} + +/** + * 获取系统配置 + */ +export function fetchGetSystemConfig(configKey: string) { + return request.get<{ + key: string + value: unknown + name: string + type: string + description?: string + } | null>({ + url: `/web/system/config/${configKey}` + }) +} + +/** + * 获取当前系统版本号 + */ +export function fetchGetCurrentVersion() { + return request.get<{ version: string }>({ + url: '/web/system/version' + }) +} diff --git a/web-admin/src/assets/data/china-region-cascader.json b/web-admin/src/assets/data/china-region-cascader.json new file mode 100644 index 00000000..5f81054f --- /dev/null +++ b/web-admin/src/assets/data/china-region-cascader.json @@ -0,0 +1 @@ +[{"value":"110000","label":"北京市","children":[{"value":"110100","label":"北京市辖区","children":[{"value":"110101","label":"东城区"},{"value":"110102","label":"西城区"},{"value":"110105","label":"北京市朝阳区"},{"value":"110106","label":"丰台区"},{"value":"110107","label":"石景山区"},{"value":"110108","label":"海淀区"},{"value":"110109","label":"门头沟区"},{"value":"110111","label":"房山区"},{"value":"110112","label":"北京市通州区"},{"value":"110113","label":"顺义区"},{"value":"110114","label":"昌平区"},{"value":"110115","label":"大兴区"},{"value":"110116","label":"怀柔区"},{"value":"110117","label":"平谷区"}]},{"value":"110200","label":"北京市县","children":[{"value":"110228","label":"密云县"},{"value":"110229","label":"延庆县"}]}]},{"value":"120000","label":"天津市","children":[{"value":"120100","label":"天津市辖区","children":[{"value":"120101","label":"天津市和平区"},{"value":"120102","label":"天津市河东区"},{"value":"120103","label":"河西区"},{"value":"120104","label":"南开区"},{"value":"120105","label":"河北区"},{"value":"120106","label":"红桥区"},{"value":"120110","label":"东丽区"},{"value":"120111","label":"西青区"},{"value":"120112","label":"津南区"},{"value":"120113","label":"北辰区"},{"value":"120114","label":"武清区"},{"value":"120115","label":"宝坻区"},{"value":"120116","label":"滨海新区"}]},{"value":"120200","label":"天津市县","children":[{"value":"120221","label":"宁河县"},{"value":"120223","label":"静海县"},{"value":"120225","label":"蓟县"}]}]},{"value":"130000","label":"河北省","children":[{"value":"130100","label":"石家庄市","children":[{"value":"130101","label":"石家庄市辖区"},{"value":"130102","label":"石家庄市长安区"},{"value":"130103","label":"石家庄市桥东区"},{"value":"130104","label":"石家庄市桥西区"},{"value":"130105","label":"石家庄市新华区"},{"value":"130107","label":"井陉矿区"},{"value":"130108","label":"裕华区"},{"value":"130121","label":"井陉县"},{"value":"130123","label":"正定县"},{"value":"130124","label":"栾城县"},{"value":"130125","label":"行唐县"},{"value":"130126","label":"灵寿县"},{"value":"130127","label":"高邑县"},{"value":"130128","label":"深泽县"},{"value":"130129","label":"赞皇县"},{"value":"130130","label":"无极县"},{"value":"130131","label":"平山县"},{"value":"130132","label":"元氏县"},{"value":"130133","label":"赵县"},{"value":"130181","label":"辛集市"},{"value":"130182","label":"藁城市"},{"value":"130183","label":"晋州市"},{"value":"130184","label":"新乐市"},{"value":"130185","label":"鹿泉市"}]},{"value":"130200","label":"唐山市","children":[{"value":"130201","label":"唐山市辖区"},{"value":"130202","label":"路南区"},{"value":"130203","label":"路北区"},{"value":"130204","label":"古冶区"},{"value":"130205","label":"开平区"},{"value":"130207","label":"丰南区"},{"value":"130208","label":"丰润区"},{"value":"130223","label":"滦县"},{"value":"130224","label":"滦南县"},{"value":"130225","label":"乐亭县"},{"value":"130227","label":"迁西县"},{"value":"130229","label":"玉田县"},{"value":"130230","label":"唐海县"},{"value":"130281","label":"遵化市"},{"value":"130283","label":"迁安市"}]},{"value":"130300","label":"秦皇岛市","children":[{"value":"130301","label":"秦皇岛市辖区"},{"value":"130302","label":"海港区"},{"value":"130303","label":"山海关区"},{"value":"130304","label":"北戴河区"},{"value":"130321","label":"青龙满族自治县"},{"value":"130322","label":"昌黎县"},{"value":"130323","label":"抚宁县"},{"value":"130324","label":"卢龙县"}]},{"value":"130400","label":"邯郸市","children":[{"value":"130401","label":"邯郸市辖区"},{"value":"130402","label":"邯山区"},{"value":"130403","label":"丛台区"},{"value":"130404","label":"复兴区"},{"value":"130406","label":"峰峰矿区"},{"value":"130421","label":"邯郸县"},{"value":"130423","label":"临漳县"},{"value":"130424","label":"成安县"},{"value":"130425","label":"大名县"},{"value":"130426","label":"涉县"},{"value":"130427","label":"磁县"},{"value":"130428","label":"肥乡县"},{"value":"130429","label":"永年县"},{"value":"130430","label":"邱县"},{"value":"130431","label":"鸡泽县"},{"value":"130432","label":"广平县"},{"value":"130433","label":"馆陶县"},{"value":"130434","label":"魏县"},{"value":"130435","label":"曲周县"},{"value":"130481","label":"武安市"}]},{"value":"130500","label":"邢台市","children":[{"value":"130501","label":"邢台市辖区"},{"value":"130502","label":"邢台市桥东区"},{"value":"130503","label":"邢台市桥西区"},{"value":"130521","label":"邢台县"},{"value":"130522","label":"临城县"},{"value":"130523","label":"内丘县"},{"value":"130524","label":"柏乡县"},{"value":"130525","label":"隆尧县"},{"value":"130526","label":"任县"},{"value":"130527","label":"南和县"},{"value":"130528","label":"宁晋县"},{"value":"130529","label":"巨鹿县"},{"value":"130530","label":"新河县"},{"value":"130531","label":"广宗县"},{"value":"130532","label":"平乡县"},{"value":"130533","label":"威县"},{"value":"130534","label":"清河县"},{"value":"130535","label":"临西县"},{"value":"130581","label":"南宫市"},{"value":"130582","label":"沙河市"}]},{"value":"130600","label":"保定市","children":[{"value":"130601","label":"保定市辖区"},{"value":"130602","label":"保定市新市区"},{"value":"130603","label":"北市区"},{"value":"130604","label":"南市区"},{"value":"130621","label":"满城县"},{"value":"130622","label":"清苑县"},{"value":"130623","label":"涞水县"},{"value":"130624","label":"阜平县"},{"value":"130625","label":"徐水县"},{"value":"130626","label":"定兴县"},{"value":"130627","label":"唐县"},{"value":"130628","label":"高阳县"},{"value":"130629","label":"容城县"},{"value":"130630","label":"涞源县"},{"value":"130631","label":"望都县"},{"value":"130632","label":"安新县"},{"value":"130633","label":"易县"},{"value":"130634","label":"曲阳县"},{"value":"130635","label":"蠡县"},{"value":"130636","label":"顺平县"},{"value":"130637","label":"博野县"},{"value":"130638","label":"雄县"},{"value":"130681","label":"涿州市"},{"value":"130682","label":"定州市"},{"value":"130683","label":"安国市"},{"value":"130684","label":"高碑店市"}]},{"value":"130700","label":"张家口市","children":[{"value":"130701","label":"张家口市市辖区"},{"value":"130702","label":"桥东区"},{"value":"130703","label":"桥西区"},{"value":"130705","label":"宣化区"},{"value":"130706","label":"下花园区"},{"value":"130721","label":"宣化县"},{"value":"130722","label":"张北县"},{"value":"130723","label":"康保县"},{"value":"130724","label":"沽源县"},{"value":"130725","label":"尚义县"},{"value":"130726","label":"蔚县"},{"value":"130727","label":"阳原县"},{"value":"130728","label":"怀安县"},{"value":"130729","label":"万全县"},{"value":"130730","label":"怀来县"},{"value":"130731","label":"涿鹿县"},{"value":"130732","label":"赤城县"},{"value":"130733","label":"崇礼县"}]},{"value":"130800","label":"承德市","children":[{"value":"130801","label":"承德市市辖区"},{"value":"130802","label":"承德市双桥区"},{"value":"130803","label":"双滦区"},{"value":"130804","label":"鹰手营子矿区"},{"value":"130821","label":"承德县"},{"value":"130822","label":"兴隆县"},{"value":"130823","label":"平泉县"},{"value":"130824","label":"滦平县"},{"value":"130825","label":"隆化县"},{"value":"130826","label":"丰宁满族自治县"},{"value":"130827","label":"宽城满族自治县"},{"value":"130828","label":"围场满族蒙古族自治县"}]},{"value":"130900","label":"沧州市","children":[{"value":"130901","label":"沧州市市辖区"},{"value":"130902","label":"沧州市新华区"},{"value":"130903","label":"运河区"},{"value":"130921","label":"沧县"},{"value":"130922","label":"青县"},{"value":"130923","label":"东光县"},{"value":"130924","label":"海兴县"},{"value":"130925","label":"盐山县"},{"value":"130926","label":"肃宁县"},{"value":"130927","label":"南皮县"},{"value":"130928","label":"吴桥县"},{"value":"130929","label":"献县"},{"value":"130930","label":"孟村回族自治县"},{"value":"130981","label":"泊头市"},{"value":"130982","label":"任丘市"},{"value":"130983","label":"黄骅市"},{"value":"130984","label":"河间市"}]},{"value":"131000","label":"廊坊市","children":[{"value":"131001","label":"廊坊市市辖区"},{"value":"131002","label":"安次区"},{"value":"131003","label":"广阳区"},{"value":"131022","label":"固安县"},{"value":"131023","label":"永清县"},{"value":"131024","label":"香河县"},{"value":"131025","label":"大城县"},{"value":"131026","label":"文安县"},{"value":"131028","label":"大厂回族自治县"},{"value":"131081","label":"霸州市"},{"value":"131082","label":"三河市"}]},{"value":"131100","label":"衡水市","children":[{"value":"131101","label":"衡水市市辖区"},{"value":"131102","label":"桃城区"},{"value":"131121","label":"枣强县"},{"value":"131122","label":"武邑县"},{"value":"131123","label":"武强县"},{"value":"131124","label":"饶阳县"},{"value":"131125","label":"安平县"},{"value":"131126","label":"故城县"},{"value":"131127","label":"景县"},{"value":"131128","label":"阜城县"},{"value":"131181","label":"冀州市"},{"value":"131182","label":"深州市"}]}]},{"value":"140000","label":"山西省","children":[{"value":"140100","label":"太原市","children":[{"value":"140101","label":"太原市市辖区"},{"value":"140105","label":"小店区"},{"value":"140106","label":"迎泽区"},{"value":"140107","label":"杏花岭区"},{"value":"140108","label":"尖草坪区"},{"value":"140109","label":"万柏林区"},{"value":"140110","label":"晋源区"},{"value":"140121","label":"清徐县"},{"value":"140122","label":"阳曲县"},{"value":"140123","label":"娄烦县"},{"value":"140181","label":"古交市"}]},{"value":"140200","label":"大同市","children":[{"value":"140201","label":"大同市市辖区"},{"value":"140202","label":"大同市城区"},{"value":"140203","label":"大同市矿区"},{"value":"140211","label":"南郊区"},{"value":"140212","label":"新荣区"},{"value":"140221","label":"阳高县"},{"value":"140222","label":"天镇县"},{"value":"140223","label":"广灵县"},{"value":"140224","label":"灵丘县"},{"value":"140225","label":"浑源县"},{"value":"140226","label":"左云县"},{"value":"140227","label":"大同县"}]},{"value":"140300","label":"阳泉市","children":[{"value":"140301","label":"阳泉市市辖区"},{"value":"140302","label":"阳泉市城区"},{"value":"140303","label":"矿区"},{"value":"140311","label":"阳泉市郊区"},{"value":"140321","label":"平定县"},{"value":"140322","label":"盂县"}]},{"value":"140400","label":"长治市","children":[{"value":"140401","label":"长治市市辖区"},{"value":"140402","label":"长治市城区"},{"value":"140411","label":"长治市郊区"},{"value":"140421","label":"长治县"},{"value":"140423","label":"襄垣县"},{"value":"140424","label":"屯留县"},{"value":"140425","label":"平顺县"},{"value":"140426","label":"黎城县"},{"value":"140427","label":"壶关县"},{"value":"140428","label":"长子县"},{"value":"140429","label":"武乡县"},{"value":"140430","label":"沁县"},{"value":"140431","label":"沁源县"},{"value":"140481","label":"潞城市"}]},{"value":"140500","label":"晋城市","children":[{"value":"140501","label":"晋城市市辖区"},{"value":"140502","label":"晋城市城区"},{"value":"140521","label":"沁水县"},{"value":"140522","label":"阳城县"},{"value":"140524","label":"陵川县"},{"value":"140525","label":"泽州县"},{"value":"140581","label":"高平市"}]},{"value":"140600","label":"朔州市","children":[{"value":"140601","label":"朔州市市辖区"},{"value":"140602","label":"朔城区"},{"value":"140603","label":"平鲁区"},{"value":"140621","label":"山阴县"},{"value":"140622","label":"应县"},{"value":"140623","label":"右玉县"},{"value":"140624","label":"怀仁县"}]},{"value":"140700","label":"晋中市","children":[{"value":"140701","label":"晋中市市辖区"},{"value":"140702","label":"榆次区"},{"value":"140721","label":"榆社县"},{"value":"140722","label":"左权县"},{"value":"140723","label":"和顺县"},{"value":"140724","label":"昔阳县"},{"value":"140725","label":"寿阳县"},{"value":"140726","label":"太谷县"},{"value":"140727","label":"祁县"},{"value":"140728","label":"平遥县"},{"value":"140729","label":"灵石县"},{"value":"140781","label":"介休市"}]},{"value":"140800","label":"运城市","children":[{"value":"140801","label":"运城市市辖区"},{"value":"140802","label":"盐湖区"},{"value":"140821","label":"临猗县"},{"value":"140822","label":"万荣县"},{"value":"140823","label":"闻喜县"},{"value":"140824","label":"稷山县"},{"value":"140825","label":"新绛县"},{"value":"140826","label":"绛县"},{"value":"140827","label":"垣曲县"},{"value":"140828","label":"夏县"},{"value":"140829","label":"平陆县"},{"value":"140830","label":"芮城县"},{"value":"140881","label":"永济市"},{"value":"140882","label":"河津市"}]},{"value":"140900","label":"忻州市","children":[{"value":"140901","label":"忻州市市辖区"},{"value":"140902","label":"忻府区"},{"value":"140921","label":"定襄县"},{"value":"140922","label":"五台县"},{"value":"140923","label":"代县"},{"value":"140924","label":"繁峙县"},{"value":"140925","label":"宁武县"},{"value":"140926","label":"静乐县"},{"value":"140927","label":"神池县"},{"value":"140928","label":"五寨县"},{"value":"140929","label":"岢岚县"},{"value":"140930","label":"河曲县"},{"value":"140931","label":"保德县"},{"value":"140932","label":"偏关县"},{"value":"140981","label":"原平市"}]},{"value":"141000","label":"临汾市","children":[{"value":"141001","label":"临汾市市辖区"},{"value":"141002","label":"尧都区"},{"value":"141021","label":"曲沃县"},{"value":"141022","label":"翼城县"},{"value":"141023","label":"襄汾县"},{"value":"141024","label":"洪洞县"},{"value":"141025","label":"古县"},{"value":"141026","label":"安泽县"},{"value":"141027","label":"浮山县"},{"value":"141028","label":"吉县"},{"value":"141029","label":"乡宁县"},{"value":"141030","label":"大宁县"},{"value":"141031","label":"隰县"},{"value":"141032","label":"永和县"},{"value":"141033","label":"蒲县"},{"value":"141034","label":"汾西县"},{"value":"141081","label":"侯马市"},{"value":"141082","label":"霍州市"}]},{"value":"141100","label":"吕梁市","children":[{"value":"141101","label":"吕梁市市辖区"},{"value":"141102","label":"离石区"},{"value":"141121","label":"文水县"},{"value":"141122","label":"交城县"},{"value":"141123","label":"兴县"},{"value":"141124","label":"临县"},{"value":"141125","label":"柳林县"},{"value":"141126","label":"石楼县"},{"value":"141127","label":"岚县"},{"value":"141128","label":"方山县"},{"value":"141129","label":"中阳县"},{"value":"141130","label":"交口县"},{"value":"141181","label":"孝义市"},{"value":"141182","label":"汾阳市"}]}]},{"value":"150000","label":"内蒙古自治区","children":[{"value":"150100","label":"呼和浩特市","children":[{"value":"150101","label":"呼和浩特市市辖区"},{"value":"150102","label":"呼和浩特市新城区"},{"value":"150103","label":"回民区"},{"value":"150104","label":"玉泉区"},{"value":"150105","label":"赛罕区"},{"value":"150121","label":"土默特左旗"},{"value":"150122","label":"托克托县"},{"value":"150123","label":"和林格尔县"},{"value":"150124","label":"清水河县"},{"value":"150125","label":"武川县"}]},{"value":"150200","label":"包头市","children":[{"value":"150201","label":"包头市市辖区"},{"value":"150202","label":"东河区"},{"value":"150203","label":"昆都仑区"},{"value":"150204","label":"包头市青山区"},{"value":"150205","label":"石拐区"},{"value":"150206","label":"白云鄂博矿区"},{"value":"150207","label":"九原区"},{"value":"150221","label":"土默特右旗"},{"value":"150222","label":"固阳县"},{"value":"150223","label":"达尔罕茂明安联合旗"}]},{"value":"150300","label":"乌海市","children":[{"value":"150301","label":"乌海市市辖区"},{"value":"150302","label":"海勃湾区"},{"value":"150303","label":"海南区"},{"value":"150304","label":"乌达区"}]},{"value":"150400","label":"赤峰市","children":[{"value":"150401","label":"赤峰市市辖区"},{"value":"150402","label":"红山区"},{"value":"150403","label":"元宝山区"},{"value":"150404","label":"松山区"},{"value":"150421","label":"阿鲁科尔沁旗"},{"value":"150422","label":"巴林左旗"},{"value":"150423","label":"巴林右旗"},{"value":"150424","label":"林西县"},{"value":"150425","label":"克什克腾旗"},{"value":"150426","label":"翁牛特旗"},{"value":"150428","label":"喀喇沁旗"},{"value":"150429","label":"宁城县"},{"value":"150430","label":"敖汉旗"}]},{"value":"150500","label":"通辽市","children":[{"value":"150501","label":"通辽市市辖区"},{"value":"150502","label":"科尔沁区"},{"value":"150521","label":"科尔沁左翼中旗"},{"value":"150522","label":"科尔沁左翼后旗"},{"value":"150523","label":"开鲁县"},{"value":"150524","label":"库伦旗"},{"value":"150525","label":"奈曼旗"},{"value":"150526","label":"扎鲁特旗"},{"value":"150581","label":"霍林郭勒市"}]},{"value":"150600","label":"鄂尔多斯市","children":[{"value":"150601","label":"鄂尔多斯市市辖区"},{"value":"150602","label":"东胜区"},{"value":"150621","label":"达拉特旗"},{"value":"150622","label":"准格尔旗"},{"value":"150623","label":"鄂托克前旗"},{"value":"150624","label":"鄂托克旗"},{"value":"150625","label":"杭锦旗"},{"value":"150626","label":"乌审旗"},{"value":"150627","label":"伊金霍洛旗"}]},{"value":"150700","label":"呼伦贝尔市","children":[{"value":"150701","label":"呼伦贝尔市市辖区"},{"value":"150702","label":"海拉尔区"},{"value":"150721","label":"阿荣旗"},{"value":"150722","label":"莫力达瓦达斡尔族自治旗"},{"value":"150723","label":"鄂伦春自治旗"},{"value":"150724","label":"鄂温克族自治旗"},{"value":"150725","label":"陈巴尔虎旗"},{"value":"150726","label":"新巴尔虎左旗"},{"value":"150727","label":"新巴尔虎右旗"},{"value":"150781","label":"满洲里市"},{"value":"150782","label":"牙克石市"},{"value":"150783","label":"扎兰屯市"},{"value":"150784","label":"额尔古纳市"},{"value":"150785","label":"根河市"}]},{"value":"150800","label":"巴彦淖尔市","children":[{"value":"150801","label":"巴彦淖尔市市辖区"},{"value":"150802","label":"临河区"},{"value":"150821","label":"五原县"},{"value":"150822","label":"磴口县"},{"value":"150823","label":"乌拉特前旗"},{"value":"150824","label":"乌拉特中旗"},{"value":"150825","label":"乌拉特后旗"},{"value":"150826","label":"杭锦后旗"}]},{"value":"150900","label":"乌兰察布市","children":[{"value":"150901","label":"乌兰察布市市辖区"},{"value":"150902","label":"集宁区"},{"value":"150921","label":"卓资县"},{"value":"150922","label":"化德县"},{"value":"150923","label":"商都县"},{"value":"150924","label":"兴和县"},{"value":"150925","label":"凉城县"},{"value":"150926","label":"察哈尔右翼前旗"},{"value":"150927","label":"察哈尔右翼中旗"},{"value":"150928","label":"察哈尔右翼后旗"},{"value":"150929","label":"四子王旗"},{"value":"150981","label":"丰镇市"}]},{"value":"152200","label":"兴安盟","children":[{"value":"152201","label":"乌兰浩特市"},{"value":"152202","label":"阿尔山市"},{"value":"152221","label":"科尔沁右翼前旗"},{"value":"152222","label":"科尔沁右翼中旗"},{"value":"152223","label":"扎赉特旗"},{"value":"152224","label":"突泉县"}]},{"value":"152500","label":"锡林郭勒盟","children":[{"value":"152501","label":"二连浩特市"},{"value":"152502","label":"锡林浩特市"},{"value":"152522","label":"阿巴嘎旗"},{"value":"152523","label":"苏尼特左旗"},{"value":"152524","label":"苏尼特右旗"},{"value":"152525","label":"东乌珠穆沁旗"},{"value":"152526","label":"西乌珠穆沁旗"},{"value":"152527","label":"太仆寺旗"},{"value":"152528","label":"镶黄旗"},{"value":"152529","label":"正镶白旗"},{"value":"152530","label":"正蓝旗"},{"value":"152531","label":"多伦县"}]},{"value":"152900","label":"阿拉善盟","children":[{"value":"152921","label":"阿拉善左旗"},{"value":"152922","label":"阿拉善右旗"},{"value":"152923","label":"额济纳旗"}]}]},{"value":"210000","label":"辽宁省","children":[{"value":"210100","label":"沈阳市","children":[{"value":"210101","label":"沈阳市市辖区"},{"value":"210102","label":"和平区"},{"value":"210103","label":"沈河区"},{"value":"210104","label":"大东区"},{"value":"210105","label":"皇姑区"},{"value":"210106","label":"沈阳市铁西区"},{"value":"210111","label":"苏家屯区"},{"value":"210112","label":"东陵区"},{"value":"210113","label":"沈北新区"},{"value":"210114","label":"于洪区"},{"value":"210122","label":"辽中县"},{"value":"210123","label":"康平县"},{"value":"210124","label":"法库县"},{"value":"210181","label":"新民市"}]},{"value":"210200","label":"大连市","children":[{"value":"210201","label":"大连市市辖区"},{"value":"210202","label":"中山区"},{"value":"210203","label":"西岗区"},{"value":"210204","label":"沙河口区"},{"value":"210211","label":"甘井子区"},{"value":"210212","label":"旅顺口区"},{"value":"210213","label":"金州区"},{"value":"210224","label":"长海县"},{"value":"210281","label":"瓦房店市"},{"value":"210282","label":"普兰店市"},{"value":"210283","label":"庄河市"}]},{"value":"210300","label":"鞍山市","children":[{"value":"210301","label":"鞍山市市辖区"},{"value":"210302","label":"鞍山市铁东区"},{"value":"210303","label":"鞍山市铁西区"},{"value":"210304","label":"立山区"},{"value":"210311","label":"千山区"},{"value":"210321","label":"台安县"},{"value":"210323","label":"岫岩满族自治县"},{"value":"210381","label":"海城市"}]},{"value":"210400","label":"抚顺市","children":[{"value":"210401","label":"抚顺市市辖区"},{"value":"210402","label":"新抚区"},{"value":"210403","label":"东洲区"},{"value":"210404","label":"望花区"},{"value":"210411","label":"顺城区"},{"value":"210421","label":"抚顺县"},{"value":"210422","label":"新宾满族自治县"},{"value":"210423","label":"清原满族自治县"}]},{"value":"210500","label":"本溪市","children":[{"value":"210501","label":"本溪市市辖区"},{"value":"210502","label":"平山区"},{"value":"210503","label":"溪湖区"},{"value":"210504","label":"明山区"},{"value":"210505","label":"南芬区"},{"value":"210521","label":"本溪满族自治县"},{"value":"210522","label":"桓仁满族自治县"}]},{"value":"210600","label":"丹东市","children":[{"value":"210601","label":"丹东市市辖区"},{"value":"210602","label":"元宝区"},{"value":"210603","label":"振兴区"},{"value":"210604","label":"振安区"},{"value":"210624","label":"宽甸满族自治县"},{"value":"210681","label":"东港市"},{"value":"210682","label":"凤城市"}]},{"value":"210700","label":"锦州市","children":[{"value":"210701","label":"锦州市市辖区"},{"value":"210702","label":"古塔区"},{"value":"210703","label":"凌河区"},{"value":"210711","label":"太和区"},{"value":"210726","label":"黑山县"},{"value":"210727","label":"义县"},{"value":"210781","label":"凌海市"},{"value":"210782","label":"北镇市"}]},{"value":"210800","label":"营口市","children":[{"value":"210801","label":"营口市市辖区"},{"value":"210802","label":"站前区"},{"value":"210803","label":"西市区"},{"value":"210804","label":"鲅鱼圈区"},{"value":"210811","label":"老边区"},{"value":"210881","label":"盖州市"},{"value":"210882","label":"大石桥市"}]},{"value":"210900","label":"阜新市","children":[{"value":"210901","label":"阜新市市辖区"},{"value":"210902","label":"阜新市海州区"},{"value":"210903","label":"新邱区"},{"value":"210904","label":"太平区"},{"value":"210905","label":"清河门区"},{"value":"210911","label":"细河区"},{"value":"210921","label":"阜新蒙古族自治县"},{"value":"210922","label":"彰武县"}]},{"value":"211000","label":"辽阳市","children":[{"value":"211001","label":"辽阳市市辖区"},{"value":"211002","label":"白塔区"},{"value":"211003","label":"文圣区"},{"value":"211004","label":"宏伟区"},{"value":"211005","label":"弓长岭区"},{"value":"211011","label":"太子河区"},{"value":"211021","label":"辽阳县"},{"value":"211081","label":"灯塔市"}]},{"value":"211100","label":"盘锦市","children":[{"value":"211101","label":"盘锦市市辖区"},{"value":"211102","label":"双台子区"},{"value":"211103","label":"兴隆台区"},{"value":"211121","label":"大洼县"},{"value":"211122","label":"盘山县"}]},{"value":"211200","label":"铁岭市","children":[{"value":"211201","label":"铁岭市市辖区"},{"value":"211202","label":"银州区"},{"value":"211204","label":"铁岭市清河区"},{"value":"211221","label":"铁岭县"},{"value":"211223","label":"西丰县"},{"value":"211224","label":"昌图县"},{"value":"211281","label":"调兵山市"},{"value":"211282","label":"开原市"}]},{"value":"211300","label":"朝阳市","children":[{"value":"211301","label":"朝阳市市辖区"},{"value":"211302","label":"双塔区"},{"value":"211303","label":"龙城区"},{"value":"211321","label":"朝阳县"},{"value":"211322","label":"建平县"},{"value":"211324","label":"喀喇沁左翼蒙古族自治县"},{"value":"211381","label":"北票市"},{"value":"211382","label":"凌源市"}]},{"value":"211400","label":"葫芦岛市","children":[{"value":"211401","label":"葫芦岛市市辖区"},{"value":"211402","label":"连山区"},{"value":"211403","label":"龙港区"},{"value":"211404","label":"南票区"},{"value":"211421","label":"绥中县"},{"value":"211422","label":"建昌县"},{"value":"211481","label":"兴城市"}]}]},{"value":"220000","label":"吉林省","children":[{"value":"220100","label":"长春市","children":[{"value":"220101","label":"长春市市辖区"},{"value":"220102","label":"南关区"},{"value":"220103","label":"宽城区"},{"value":"220104","label":"朝阳区"},{"value":"220105","label":"二道区"},{"value":"220106","label":"绿园区"},{"value":"220112","label":"双阳区"},{"value":"220122","label":"农安县"},{"value":"220181","label":"九台市"},{"value":"220182","label":"榆树市"},{"value":"220183","label":"德惠市"}]},{"value":"220200","label":"吉林市","children":[{"value":"220201","label":"吉林市市辖区"},{"value":"220202","label":"昌邑区"},{"value":"220203","label":"龙潭区"},{"value":"220204","label":"船营区"},{"value":"220211","label":"丰满区"},{"value":"220221","label":"永吉县"},{"value":"220281","label":"蛟河市"},{"value":"220282","label":"桦甸市"},{"value":"220283","label":"舒兰市"},{"value":"220284","label":"磐石市"}]},{"value":"220300","label":"四平市","children":[{"value":"220301","label":"四平市市辖区"},{"value":"220302","label":"铁西区"},{"value":"220303","label":"铁东区"},{"value":"220322","label":"梨树县"},{"value":"220323","label":"伊通满族自治县"},{"value":"220381","label":"公主岭市"},{"value":"220382","label":"双辽市"}]},{"value":"220400","label":"辽源市","children":[{"value":"220401","label":"辽源市市辖区"},{"value":"220402","label":"龙山区"},{"value":"220403","label":"辽源市西安区"},{"value":"220421","label":"东丰县"},{"value":"220422","label":"东辽县"}]},{"value":"220500","label":"通化市","children":[{"value":"220501","label":"通化市市辖区"},{"value":"220502","label":"东昌区"},{"value":"220503","label":"二道江区"},{"value":"220521","label":"通化县"},{"value":"220523","label":"辉南县"},{"value":"220524","label":"柳河县"},{"value":"220581","label":"梅河口市"},{"value":"220582","label":"集安市"}]},{"value":"220600","label":"白山市","children":[{"value":"220601","label":"白山市市辖区"},{"value":"220602","label":"八道江区"},{"value":"220605","label":"江源区"},{"value":"220621","label":"抚松县"},{"value":"220622","label":"靖宇县"},{"value":"220623","label":"长白朝鲜族自治县"},{"value":"220681","label":"临江市"}]},{"value":"220700","label":"松原市","children":[{"value":"220701","label":"松原市市辖区"},{"value":"220702","label":"宁江区"},{"value":"220721","label":"前郭尔罗斯蒙古族自治县"},{"value":"220722","label":"长岭县"},{"value":"220723","label":"乾安县"},{"value":"220724","label":"扶余县"}]},{"value":"220800","label":"白城市","children":[{"value":"220801","label":"白城市市辖区"},{"value":"220802","label":"洮北区"},{"value":"220821","label":"镇赉县"},{"value":"220822","label":"通榆县"},{"value":"220881","label":"洮南市"},{"value":"220882","label":"大安市"}]},{"value":"222400","label":"延边朝鲜族自治州","children":[{"value":"222401","label":"延吉市"},{"value":"222402","label":"图们市"},{"value":"222403","label":"敦化市"},{"value":"222404","label":"珲春市"},{"value":"222405","label":"龙井市"},{"value":"222406","label":"和龙市"},{"value":"222424","label":"汪清县"},{"value":"222426","label":"安图县"}]}]},{"value":"230000","label":"黑龙江省","children":[{"value":"230100","label":"哈尔滨市","children":[{"value":"230101","label":"哈尔滨市市辖区"},{"value":"230102","label":"道里区"},{"value":"230103","label":"南岗区"},{"value":"230104","label":"道外区"},{"value":"230108","label":"平房区"},{"value":"230109","label":"松北区"},{"value":"230110","label":"香坊区"},{"value":"230111","label":"呼兰区"},{"value":"230112","label":"阿城区"},{"value":"230123","label":"依兰县"},{"value":"230124","label":"方正县"},{"value":"230125","label":"宾县"},{"value":"230126","label":"巴彦县"},{"value":"230127","label":"木兰县"},{"value":"230128","label":"通河县"},{"value":"230129","label":"延寿县"},{"value":"230182","label":"双城市"},{"value":"230183","label":"尚志市"},{"value":"230184","label":"五常市"}]},{"value":"230200","label":"齐齐哈尔市","children":[{"value":"230201","label":"齐齐哈尔市市辖区"},{"value":"230202","label":"龙沙区"},{"value":"230203","label":"建华区"},{"value":"230204","label":"铁锋区"},{"value":"230205","label":"昂昂溪区"},{"value":"230206","label":"富拉尔基区"},{"value":"230207","label":"碾子山区"},{"value":"230208","label":"梅里斯达斡尔族区"},{"value":"230221","label":"龙江县"},{"value":"230223","label":"依安县"},{"value":"230224","label":"泰来县"},{"value":"230225","label":"甘南县"},{"value":"230227","label":"富裕县"},{"value":"230229","label":"克山县"},{"value":"230230","label":"克东县"},{"value":"230231","label":"拜泉县"},{"value":"230281","label":"讷河市"}]},{"value":"230300","label":"鸡西市","children":[{"value":"230301","label":"鸡西市市辖区"},{"value":"230302","label":"鸡冠区"},{"value":"230303","label":"恒山区"},{"value":"230304","label":"滴道区"},{"value":"230305","label":"梨树区"},{"value":"230306","label":"城子河区"},{"value":"230307","label":"麻山区"},{"value":"230321","label":"鸡东县"},{"value":"230381","label":"虎林市"},{"value":"230382","label":"密山市"}]},{"value":"230400","label":"鹤岗市","children":[{"value":"230401","label":"鹤岗市市辖区"},{"value":"230402","label":"鹤岗市向阳区"},{"value":"230403","label":"工农区"},{"value":"230404","label":"鹤岗市南山区"},{"value":"230405","label":"兴安区"},{"value":"230406","label":"东山区"},{"value":"230407","label":"兴山区"},{"value":"230421","label":"萝北县"},{"value":"230422","label":"绥滨县"}]},{"value":"230500","label":"双鸭山市","children":[{"value":"230501","label":"双鸭山市市辖区"},{"value":"230502","label":"尖山区"},{"value":"230503","label":"岭东区"},{"value":"230505","label":"四方台区"},{"value":"230506","label":"双鸭山市宝山区"},{"value":"230521","label":"集贤县"},{"value":"230522","label":"友谊县"},{"value":"230523","label":"宝清县"},{"value":"230524","label":"饶河县"}]},{"value":"230600","label":"大庆市","children":[{"value":"230601","label":"大庆市市辖区"},{"value":"230602","label":"萨尔图区"},{"value":"230603","label":"龙凤区"},{"value":"230604","label":"让胡路区"},{"value":"230605","label":"红岗区"},{"value":"230606","label":"大同区"},{"value":"230621","label":"肇州县"},{"value":"230622","label":"肇源县"},{"value":"230623","label":"林甸县"},{"value":"230624","label":"杜尔伯特蒙古族自治县"}]},{"value":"230700","label":"伊春市","children":[{"value":"230701","label":"伊春市市辖区"},{"value":"230702","label":"伊春区"},{"value":"230703","label":"南岔区"},{"value":"230704","label":"友好区"},{"value":"230705","label":"西林区"},{"value":"230706","label":"翠峦区"},{"value":"230707","label":"新青区"},{"value":"230708","label":"美溪区"},{"value":"230709","label":"金山屯区"},{"value":"230710","label":"五营区"},{"value":"230711","label":"乌马河区"},{"value":"230712","label":"汤旺河区"},{"value":"230713","label":"带岭区"},{"value":"230714","label":"乌伊岭区"},{"value":"230715","label":"红星区"},{"value":"230716","label":"上甘岭区"},{"value":"230722","label":"嘉荫县"},{"value":"230781","label":"铁力市"}]},{"value":"230800","label":"佳木斯市","children":[{"value":"230801","label":"佳木斯市市辖区"},{"value":"230803","label":"向阳区"},{"value":"230804","label":"前进区"},{"value":"230805","label":"东风区"},{"value":"230811","label":"佳木斯市郊区"},{"value":"230822","label":"桦南县"},{"value":"230826","label":"桦川县"},{"value":"230828","label":"汤原县"},{"value":"230833","label":"抚远县"},{"value":"230881","label":"同江市"},{"value":"230882","label":"富锦市"}]},{"value":"230900","label":"七台河市","children":[{"value":"230901","label":"七台河市市辖区"},{"value":"230902","label":"新兴区"},{"value":"230903","label":"桃山区"},{"value":"230904","label":"茄子河区"},{"value":"230921","label":"勃利县"}]},{"value":"231000","label":"牡丹江市","children":[{"value":"231001","label":"牡丹江市市辖区"},{"value":"231002","label":"东安区"},{"value":"231003","label":"阳明区"},{"value":"231004","label":"爱民区"},{"value":"231005","label":"西安区"},{"value":"231024","label":"东宁县"},{"value":"231025","label":"林口县"},{"value":"231081","label":"绥芬河市"},{"value":"231083","label":"海林市"},{"value":"231084","label":"宁安市"},{"value":"231085","label":"穆棱市"}]},{"value":"231100","label":"黑河市","children":[{"value":"231101","label":"黑河市市辖区"},{"value":"231102","label":"爱辉区"},{"value":"231121","label":"嫩江县"},{"value":"231123","label":"逊克县"},{"value":"231124","label":"孙吴县"},{"value":"231181","label":"北安市"},{"value":"231182","label":"五大连池市"}]},{"value":"231200","label":"绥化市","children":[{"value":"231201","label":"绥化市市辖区"},{"value":"231202","label":"北林区"},{"value":"231221","label":"望奎县"},{"value":"231222","label":"兰西县"},{"value":"231223","label":"青冈县"},{"value":"231224","label":"庆安县"},{"value":"231225","label":"明水县"},{"value":"231226","label":"绥棱县"},{"value":"231281","label":"安达市"},{"value":"231282","label":"肇东市"},{"value":"231283","label":"海伦市"}]},{"value":"232700","label":"大兴安岭地区","children":[{"value":"232701","label":"加格达奇区"},{"value":"232702","label":"松岭区"},{"value":"232703","label":"新林区"},{"value":"232704","label":"呼中区"},{"value":"232721","label":"呼玛县"},{"value":"232722","label":"塔河县"},{"value":"232723","label":"漠河县"}]}]},{"value":"310000","label":"上海市","children":[{"value":"310100","label":"上海市市辖区","children":[{"value":"310101","label":"黄浦区"},{"value":"310103","label":"卢湾区"},{"value":"310104","label":"徐汇区"},{"value":"310105","label":"长宁区"},{"value":"310106","label":"静安区"},{"value":"310107","label":"上海市普陀区"},{"value":"310108","label":"闸北区"},{"value":"310109","label":"虹口区"},{"value":"310110","label":"杨浦区"},{"value":"310112","label":"闵行区"},{"value":"310113","label":"宝山区"},{"value":"310114","label":"嘉定区"},{"value":"310115","label":"浦东新区"},{"value":"310116","label":"金山区"},{"value":"310117","label":"松江区"},{"value":"310118","label":"青浦区"},{"value":"310120","label":"奉贤区"}]},{"value":"310200","label":"上海市县","children":[{"value":"310230","label":"崇明县"}]}]},{"value":"320000","label":"江苏省","children":[{"value":"320100","label":"南京市","children":[{"value":"320101","label":"南京市市辖区"},{"value":"320102","label":"玄武区"},{"value":"320103","label":"白下区"},{"value":"320104","label":"秦淮区"},{"value":"320105","label":"建邺区"},{"value":"320106","label":"南京市鼓楼区"},{"value":"320107","label":"下关区"},{"value":"320111","label":"浦口区"},{"value":"320113","label":"栖霞区"},{"value":"320114","label":"雨花台区"},{"value":"320115","label":"江宁区"},{"value":"320116","label":"六合区"},{"value":"320124","label":"溧水县"},{"value":"320125","label":"高淳县"}]},{"value":"320200","label":"无锡市","children":[{"value":"320201","label":"无锡市市辖区"},{"value":"320202","label":"崇安区"},{"value":"320203","label":"南长区"},{"value":"320204","label":"北塘区"},{"value":"320205","label":"锡山区"},{"value":"320206","label":"惠山区"},{"value":"320211","label":"滨湖区"},{"value":"320281","label":"江阴市"},{"value":"320282","label":"宜兴市"}]},{"value":"320300","label":"徐州市","children":[{"value":"320301","label":"徐州市市辖区"},{"value":"320302","label":"徐州市鼓楼区"},{"value":"320303","label":"云龙区"},{"value":"320305","label":"贾汪区"},{"value":"320311","label":"泉山区"},{"value":"320312","label":"铜山区"},{"value":"320321","label":"丰县"},{"value":"320322","label":"沛县"},{"value":"320324","label":"睢宁县"},{"value":"320381","label":"新沂市"},{"value":"320382","label":"邳州市"}]},{"value":"320400","label":"常州市","children":[{"value":"320401","label":"常州市市辖区"},{"value":"320402","label":"天宁区"},{"value":"320404","label":"钟楼区"},{"value":"320405","label":"戚墅堰区"},{"value":"320411","label":"新北区"},{"value":"320412","label":"武进区"},{"value":"320481","label":"溧阳市"},{"value":"320482","label":"金坛市"}]},{"value":"320500","label":"苏州市","children":[{"value":"320501","label":"苏州市市辖区"},{"value":"320502","label":"沧浪区"},{"value":"320503","label":"平江区"},{"value":"320504","label":"金阊区"},{"value":"320505","label":"虎丘区"},{"value":"320506","label":"吴中区"},{"value":"320507","label":"相城区"},{"value":"320581","label":"常熟市"},{"value":"320582","label":"张家港市"},{"value":"320583","label":"昆山市"},{"value":"320584","label":"吴江市"},{"value":"320585","label":"太仓市"}]},{"value":"320600","label":"南通市","children":[{"value":"320601","label":"南通市市辖区"},{"value":"320602","label":"崇川区"},{"value":"320611","label":"港闸区"},{"value":"320612","label":"通州区"},{"value":"320621","label":"海安县"},{"value":"320623","label":"如东县"},{"value":"320681","label":"启东市"},{"value":"320682","label":"如皋市"},{"value":"320684","label":"海门市"}]},{"value":"320700","label":"连云港市","children":[{"value":"320701","label":"连云港市市辖区"},{"value":"320703","label":"连云区"},{"value":"320705","label":"新浦区"},{"value":"320706","label":"海州区"},{"value":"320721","label":"赣榆县"},{"value":"320722","label":"东海县"},{"value":"320723","label":"灌云县"},{"value":"320724","label":"灌南县"}]},{"value":"320800","label":"淮安市","children":[{"value":"320801","label":"淮安市市辖区"},{"value":"320802","label":"清河区"},{"value":"320803","label":"楚州区"},{"value":"320804","label":"淮阴区"},{"value":"320811","label":"清浦区"},{"value":"320826","label":"涟水县"},{"value":"320829","label":"洪泽县"},{"value":"320830","label":"盱眙县"},{"value":"320831","label":"金湖县"}]},{"value":"320900","label":"盐城市","children":[{"value":"320901","label":"盐城市市辖区"},{"value":"320902","label":"亭湖区"},{"value":"320903","label":"盐都区"},{"value":"320921","label":"响水县"},{"value":"320922","label":"滨海县"},{"value":"320923","label":"阜宁县"},{"value":"320924","label":"射阳县"},{"value":"320925","label":"建湖县"},{"value":"320981","label":"东台市"},{"value":"320982","label":"大丰市"}]},{"value":"321000","label":"扬州市","children":[{"value":"321001","label":"扬州市市辖区"},{"value":"321002","label":"广陵区"},{"value":"321003","label":"邗江区"},{"value":"321011","label":"维扬区"},{"value":"321023","label":"宝应县"},{"value":"321081","label":"仪征市"},{"value":"321084","label":"高邮市"},{"value":"321088","label":"江都市"}]},{"value":"321100","label":"镇江市","children":[{"value":"321101","label":"镇江市市辖区"},{"value":"321102","label":"京口区"},{"value":"321111","label":"润州区"},{"value":"321112","label":"丹徒区"},{"value":"321181","label":"丹阳市"},{"value":"321182","label":"扬中市"},{"value":"321183","label":"句容市"}]},{"value":"321200","label":"泰州市","children":[{"value":"321201","label":"泰州市市辖区"},{"value":"321202","label":"海陵区"},{"value":"321203","label":"高港区"},{"value":"321281","label":"兴化市"},{"value":"321282","label":"靖江市"},{"value":"321283","label":"泰兴市"},{"value":"321284","label":"姜堰市"}]},{"value":"321300","label":"宿迁市","children":[{"value":"321301","label":"宿迁市市辖区"},{"value":"321302","label":"宿城区"},{"value":"321311","label":"宿豫区"},{"value":"321322","label":"沭阳县"},{"value":"321323","label":"泗阳县"},{"value":"321324","label":"泗洪县"}]}]},{"value":"330000","label":"浙江省","children":[{"value":"330100","label":"杭州市","children":[{"value":"330101","label":"杭州市市辖区"},{"value":"330102","label":"上城区"},{"value":"330103","label":"下城区"},{"value":"330104","label":"江干区"},{"value":"330105","label":"拱墅区"},{"value":"330106","label":"杭州市西湖区"},{"value":"330108","label":"滨江区"},{"value":"330109","label":"萧山区"},{"value":"330110","label":"余杭区"},{"value":"330122","label":"桐庐县"},{"value":"330127","label":"淳安县"},{"value":"330182","label":"建德市"},{"value":"330183","label":"富阳市"},{"value":"330185","label":"临安市"}]},{"value":"330200","label":"宁波市","children":[{"value":"330201","label":"宁波市市辖区"},{"value":"330203","label":"海曙区"},{"value":"330204","label":"江东区"},{"value":"330205","label":"宁波市江北区"},{"value":"330206","label":"北仑区"},{"value":"330211","label":"镇海区"},{"value":"330212","label":"鄞州区"},{"value":"330225","label":"象山县"},{"value":"330226","label":"宁海县"},{"value":"330281","label":"余姚市"},{"value":"330282","label":"慈溪市"},{"value":"330283","label":"奉化市"}]},{"value":"330300","label":"温州市","children":[{"value":"330301","label":"温州市市辖区"},{"value":"330302","label":"鹿城区"},{"value":"330303","label":"龙湾区"},{"value":"330304","label":"瓯海区"},{"value":"330322","label":"洞头县"},{"value":"330324","label":"永嘉县"},{"value":"330326","label":"平阳县"},{"value":"330327","label":"苍南县"},{"value":"330328","label":"文成县"},{"value":"330329","label":"泰顺县"},{"value":"330381","label":"瑞安市"},{"value":"330382","label":"乐清市"}]},{"value":"330400","label":"嘉兴市","children":[{"value":"330401","label":"嘉兴市市辖区"},{"value":"330402","label":"南湖区"},{"value":"330411","label":"秀洲区"},{"value":"330421","label":"嘉善县"},{"value":"330424","label":"海盐县"},{"value":"330481","label":"海宁市"},{"value":"330482","label":"平湖市"},{"value":"330483","label":"桐乡市"}]},{"value":"330500","label":"湖州市","children":[{"value":"330501","label":"湖州市市辖区"},{"value":"330502","label":"吴兴区"},{"value":"330503","label":"南浔区"},{"value":"330521","label":"德清县"},{"value":"330522","label":"长兴县"},{"value":"330523","label":"安吉县"}]},{"value":"330600","label":"绍兴市","children":[{"value":"330601","label":"绍兴市市辖区"},{"value":"330602","label":"越城区"},{"value":"330621","label":"绍兴县"},{"value":"330624","label":"新昌县"},{"value":"330681","label":"诸暨市"},{"value":"330682","label":"上虞市"},{"value":"330683","label":"嵊州市"}]},{"value":"330700","label":"金华市","children":[{"value":"330701","label":"金华市市辖区"},{"value":"330702","label":"婺城区"},{"value":"330703","label":"金东区"},{"value":"330723","label":"武义县"},{"value":"330726","label":"浦江县"},{"value":"330727","label":"磐安县"},{"value":"330781","label":"兰溪市"},{"value":"330782","label":"义乌市"},{"value":"330783","label":"东阳市"},{"value":"330784","label":"永康市"}]},{"value":"330800","label":"衢州市","children":[{"value":"330801","label":"衢州市市辖区"},{"value":"330802","label":"柯城区"},{"value":"330803","label":"衢江区"},{"value":"330822","label":"常山县"},{"value":"330824","label":"开化县"},{"value":"330825","label":"龙游县"},{"value":"330881","label":"江山市"}]},{"value":"330900","label":"舟山市","children":[{"value":"330901","label":"舟山市市辖区"},{"value":"330902","label":"定海区"},{"value":"330903","label":"普陀区"},{"value":"330921","label":"岱山县"},{"value":"330922","label":"嵊泗县"}]},{"value":"331000","label":"台州市","children":[{"value":"331001","label":"台州市市辖区"},{"value":"331002","label":"椒江区"},{"value":"331003","label":"黄岩区"},{"value":"331004","label":"路桥区"},{"value":"331021","label":"玉环县"},{"value":"331022","label":"三门县"},{"value":"331023","label":"天台县"},{"value":"331024","label":"仙居县"},{"value":"331081","label":"温岭市"},{"value":"331082","label":"临海市"}]},{"value":"331100","label":"丽水市","children":[{"value":"331101","label":"丽水市市辖区"},{"value":"331102","label":"莲都区"},{"value":"331121","label":"青田县"},{"value":"331122","label":"缙云县"},{"value":"331123","label":"遂昌县"},{"value":"331124","label":"松阳县"},{"value":"331125","label":"云和县"},{"value":"331126","label":"庆元县"},{"value":"331127","label":"景宁畲族自治县"},{"value":"331181","label":"龙泉市"}]}]},{"value":"340000","label":"安徽省","children":[{"value":"340100","label":"合肥市","children":[{"value":"340101","label":"合肥市市辖区"},{"value":"340102","label":"瑶海区"},{"value":"340103","label":"庐阳区"},{"value":"340104","label":"蜀山区"},{"value":"340111","label":"包河区"},{"value":"340121","label":"长丰县"},{"value":"340122","label":"肥东县"},{"value":"340123","label":"肥西县"}]},{"value":"340200","label":"芜湖市","children":[{"value":"340201","label":"芜湖市市辖区"},{"value":"340202","label":"镜湖区"},{"value":"340203","label":"弋江区"},{"value":"340207","label":"鸠江区"},{"value":"340208","label":"三山区"},{"value":"340221","label":"芜湖县"},{"value":"340222","label":"繁昌县"},{"value":"340223","label":"南陵县"}]},{"value":"340300","label":"蚌埠市","children":[{"value":"340301","label":"蚌埠市市辖区"},{"value":"340302","label":"龙子湖区"},{"value":"340303","label":"蚌山区"},{"value":"340304","label":"禹会区"},{"value":"340311","label":"淮上区"},{"value":"340321","label":"怀远县"},{"value":"340322","label":"五河县"},{"value":"340323","label":"固镇县"}]},{"value":"340400","label":"淮南市","children":[{"value":"340401","label":"淮南市市辖区"},{"value":"340402","label":"大通区"},{"value":"340403","label":"田家庵区"},{"value":"340404","label":"谢家集区"},{"value":"340405","label":"八公山区"},{"value":"340406","label":"潘集区"},{"value":"340421","label":"凤台县"}]},{"value":"340500","label":"马鞍山市","children":[{"value":"340501","label":"马鞍山市市辖区"},{"value":"340502","label":"金家庄区"},{"value":"340503","label":"花山区"},{"value":"340504","label":"雨山区"},{"value":"340521","label":"当涂县"}]},{"value":"340600","label":"淮北市","children":[{"value":"340601","label":"淮北市市辖区"},{"value":"340602","label":"杜集区"},{"value":"340603","label":"相山区"},{"value":"340604","label":"烈山区"},{"value":"340621","label":"濉溪县"}]},{"value":"340700","label":"铜陵市","children":[{"value":"340701","label":"铜陵市市辖区"},{"value":"340702","label":"铜官山区"},{"value":"340703","label":"狮子山区"},{"value":"340711","label":"郊区"},{"value":"340721","label":"铜陵县"}]},{"value":"340800","label":"安庆市","children":[{"value":"340801","label":"安庆市市辖区"},{"value":"340802","label":"迎江区"},{"value":"340803","label":"大观区"},{"value":"340811","label":"宜秀区"},{"value":"340822","label":"怀宁县"},{"value":"340823","label":"枞阳县"},{"value":"340824","label":"潜山县"},{"value":"340825","label":"太湖县"},{"value":"340826","label":"宿松县"},{"value":"340827","label":"望江县"},{"value":"340828","label":"岳西县"},{"value":"340881","label":"桐城市"}]},{"value":"341000","label":"黄山市","children":[{"value":"341001","label":"黄山市市辖区"},{"value":"341002","label":"屯溪区"},{"value":"341003","label":"黄山区"},{"value":"341004","label":"徽州区"},{"value":"341021","label":"歙县"},{"value":"341022","label":"休宁县"},{"value":"341023","label":"黟县"},{"value":"341024","label":"祁门县"}]},{"value":"341100","label":"滁州市","children":[{"value":"341101","label":"滁州市市辖区"},{"value":"341102","label":"琅琊区"},{"value":"341103","label":"南谯区"},{"value":"341122","label":"来安县"},{"value":"341124","label":"全椒县"},{"value":"341125","label":"定远县"},{"value":"341126","label":"凤阳县"},{"value":"341181","label":"天长市"},{"value":"341182","label":"明光市"}]},{"value":"341200","label":"阜阳市","children":[{"value":"341201","label":"阜阳市市辖区"},{"value":"341202","label":"颍州区"},{"value":"341203","label":"颍东区"},{"value":"341204","label":"颍泉区"},{"value":"341221","label":"临泉县"},{"value":"341222","label":"太和县"},{"value":"341225","label":"阜南县"},{"value":"341226","label":"颍上县"},{"value":"341282","label":"界首市"}]},{"value":"341300","label":"宿州市","children":[{"value":"341301","label":"宿州市市辖区"},{"value":"341302","label":"埇桥区"},{"value":"341321","label":"砀山县"},{"value":"341322","label":"萧县"},{"value":"341323","label":"灵璧县"},{"value":"341324","label":"泗县"}]},{"value":"341400","label":"巢湖市","children":[{"value":"341401","label":"巢湖市市辖区"},{"value":"341402","label":"居巢区"},{"value":"341421","label":"庐江县"},{"value":"341422","label":"无为县"},{"value":"341423","label":"含山县"},{"value":"341424","label":"和县"}]},{"value":"341500","label":"六安市","children":[{"value":"341501","label":"六安市市辖区"},{"value":"341502","label":"金安区"},{"value":"341503","label":"裕安区"},{"value":"341521","label":"寿县"},{"value":"341522","label":"霍邱县"},{"value":"341523","label":"舒城县"},{"value":"341524","label":"金寨县"},{"value":"341525","label":"霍山县"}]},{"value":"341600","label":"亳州市","children":[{"value":"341601","label":"亳州市市辖区"},{"value":"341602","label":"谯城区"},{"value":"341621","label":"涡阳县"},{"value":"341622","label":"蒙城县"},{"value":"341623","label":"利辛县"}]},{"value":"341700","label":"池州市","children":[{"value":"341701","label":"池州市市辖区"},{"value":"341702","label":"贵池区"},{"value":"341721","label":"东至县"},{"value":"341722","label":"石台县"},{"value":"341723","label":"青阳县"}]},{"value":"341800","label":"宣城市","children":[{"value":"341801","label":"宣城市市辖区"},{"value":"341802","label":"宣州区"},{"value":"341821","label":"郎溪县"},{"value":"341822","label":"广德县"},{"value":"341823","label":"泾县"},{"value":"341824","label":"绩溪县"},{"value":"341825","label":"旌德县"},{"value":"341881","label":"宁国市"}]}]},{"value":"350000","label":"福建省","children":[{"value":"350100","label":"福州市","children":[{"value":"350101","label":"福州市市辖区"},{"value":"350102","label":"福州市鼓楼区"},{"value":"350103","label":"台江区"},{"value":"350104","label":"仓山区"},{"value":"350105","label":"马尾区"},{"value":"350111","label":"晋安区"},{"value":"350121","label":"闽侯县"},{"value":"350122","label":"连江县"},{"value":"350123","label":"罗源县"},{"value":"350124","label":"闽清县"},{"value":"350125","label":"永泰县"},{"value":"350128","label":"平潭县"},{"value":"350181","label":"福清市"},{"value":"350182","label":"长乐市"}]},{"value":"350200","label":"厦门市","children":[{"value":"350201","label":"厦门市市辖区"},{"value":"350203","label":"思明区"},{"value":"350205","label":"海沧区"},{"value":"350206","label":"湖里区"},{"value":"350211","label":"集美区"},{"value":"350212","label":"同安区"},{"value":"350213","label":"翔安区"}]},{"value":"350300","label":"莆田市","children":[{"value":"350301","label":"莆田市市辖区"},{"value":"350302","label":"城厢区"},{"value":"350303","label":"涵江区"},{"value":"350304","label":"荔城区"},{"value":"350305","label":"秀屿区"},{"value":"350322","label":"仙游县"}]},{"value":"350400","label":"三明市","children":[{"value":"350401","label":"三明市市辖区"},{"value":"350402","label":"梅列区"},{"value":"350403","label":"三元区"},{"value":"350421","label":"明溪县"},{"value":"350423","label":"清流县"},{"value":"350424","label":"宁化县"},{"value":"350425","label":"大田县"},{"value":"350426","label":"尤溪县"},{"value":"350427","label":"沙县"},{"value":"350428","label":"将乐县"},{"value":"350429","label":"泰宁县"},{"value":"350430","label":"建宁县"},{"value":"350481","label":"永安市"}]},{"value":"350500","label":"泉州市","children":[{"value":"350501","label":"泉州市市辖区"},{"value":"350502","label":"鲤城区"},{"value":"350503","label":"丰泽区"},{"value":"350504","label":"洛江区"},{"value":"350505","label":"泉港区"},{"value":"350521","label":"惠安县"},{"value":"350524","label":"安溪县"},{"value":"350525","label":"永春县"},{"value":"350526","label":"德化县"},{"value":"350527","label":"金门县"},{"value":"350581","label":"石狮市"},{"value":"350582","label":"晋江市"},{"value":"350583","label":"南安市"}]},{"value":"350600","label":"漳州市","children":[{"value":"350601","label":"漳州市市辖区"},{"value":"350602","label":"芗城区"},{"value":"350603","label":"龙文区"},{"value":"350622","label":"云霄县"},{"value":"350623","label":"漳浦县"},{"value":"350624","label":"诏安县"},{"value":"350625","label":"长泰县"},{"value":"350626","label":"东山县"},{"value":"350627","label":"南靖县"},{"value":"350628","label":"平和县"},{"value":"350629","label":"华安县"},{"value":"350681","label":"龙海市"}]},{"value":"350700","label":"南平市","children":[{"value":"350701","label":"南平市市辖区"},{"value":"350702","label":"延平区"},{"value":"350721","label":"顺昌县"},{"value":"350722","label":"浦城县"},{"value":"350723","label":"光泽县"},{"value":"350724","label":"松溪县"},{"value":"350725","label":"政和县"},{"value":"350781","label":"邵武市"},{"value":"350782","label":"武夷山市"},{"value":"350783","label":"建瓯市"},{"value":"350784","label":"建阳市"}]},{"value":"350800","label":"龙岩市","children":[{"value":"350801","label":"龙岩市市辖区"},{"value":"350802","label":"新罗区"},{"value":"350821","label":"长汀县"},{"value":"350822","label":"永定县"},{"value":"350823","label":"上杭县"},{"value":"350824","label":"武平县"},{"value":"350825","label":"连城县"},{"value":"350881","label":"漳平市"}]},{"value":"350900","label":"宁德市","children":[{"value":"350901","label":"宁德市市辖区"},{"value":"350902","label":"蕉城区"},{"value":"350921","label":"霞浦县"},{"value":"350922","label":"古田县"},{"value":"350923","label":"屏南县"},{"value":"350924","label":"寿宁县"},{"value":"350925","label":"周宁县"},{"value":"350926","label":"柘荣县"},{"value":"350981","label":"福安市"},{"value":"350982","label":"福鼎市"}]}]},{"value":"360000","label":"江西省","children":[{"value":"360100","label":"南昌市","children":[{"value":"360101","label":"南昌市市辖区"},{"value":"360102","label":"东湖区"},{"value":"360103","label":"西湖区"},{"value":"360104","label":"青云谱区"},{"value":"360105","label":"湾里区"},{"value":"360111","label":"青山湖区"},{"value":"360121","label":"南昌县"},{"value":"360122","label":"新建县"},{"value":"360123","label":"安义县"},{"value":"360124","label":"进贤县"}]},{"value":"360200","label":"景德镇市","children":[{"value":"360201","label":"景德镇市市辖区"},{"value":"360202","label":"昌江区"},{"value":"360203","label":"珠山区"},{"value":"360222","label":"浮梁县"},{"value":"360281","label":"乐平市"}]},{"value":"360300","label":"萍乡市","children":[{"value":"360301","label":"萍乡市市辖区"},{"value":"360302","label":"安源区"},{"value":"360313","label":"湘东区"},{"value":"360321","label":"莲花县"},{"value":"360322","label":"上栗县"},{"value":"360323","label":"芦溪县"}]},{"value":"360400","label":"九江市","children":[{"value":"360401","label":"九江市市辖区"},{"value":"360402","label":"庐山区"},{"value":"360403","label":"浔阳区"},{"value":"360421","label":"九江县"},{"value":"360423","label":"武宁县"},{"value":"360424","label":"修水县"},{"value":"360425","label":"永修县"},{"value":"360426","label":"德安县"},{"value":"360427","label":"星子县"},{"value":"360428","label":"都昌县"},{"value":"360429","label":"湖口县"},{"value":"360430","label":"彭泽县"},{"value":"360481","label":"瑞昌市"},{"value":"360482","label":"共青城市"}]},{"value":"360500","label":"新余市","children":[{"value":"360501","label":"新余市市辖区"},{"value":"360502","label":"渝水区"},{"value":"360521","label":"分宜县"}]},{"value":"360600","label":"鹰潭市","children":[{"value":"360601","label":"鹰潭市市辖区"},{"value":"360602","label":"月湖区"},{"value":"360622","label":"余江县"},{"value":"360681","label":"贵溪市"}]},{"value":"360700","label":"赣州市","children":[{"value":"360701","label":"赣州市市辖区"},{"value":"360702","label":"章贡区"},{"value":"360721","label":"赣县"},{"value":"360722","label":"信丰县"},{"value":"360723","label":"大余县"},{"value":"360724","label":"上犹县"},{"value":"360725","label":"崇义县"},{"value":"360726","label":"安远县"},{"value":"360727","label":"龙南县"},{"value":"360728","label":"定南县"},{"value":"360729","label":"全南县"},{"value":"360730","label":"宁都县"},{"value":"360731","label":"于都县"},{"value":"360732","label":"兴国县"},{"value":"360733","label":"会昌县"},{"value":"360734","label":"寻乌县"},{"value":"360735","label":"石城县"},{"value":"360781","label":"瑞金市"},{"value":"360782","label":"南康市"}]},{"value":"360800","label":"吉安市","children":[{"value":"360801","label":"吉安市市辖区"},{"value":"360802","label":"吉州区"},{"value":"360803","label":"青原区"},{"value":"360821","label":"吉安县"},{"value":"360822","label":"吉水县"},{"value":"360823","label":"峡江县"},{"value":"360824","label":"新干县"},{"value":"360825","label":"永丰县"},{"value":"360826","label":"泰和县"},{"value":"360827","label":"遂川县"},{"value":"360828","label":"万安县"},{"value":"360829","label":"安福县"},{"value":"360830","label":"永新县"},{"value":"360881","label":"井冈山市"}]},{"value":"360900","label":"宜春市","children":[{"value":"360901","label":"宜春市市辖区"},{"value":"360902","label":"袁州区"},{"value":"360921","label":"奉新县"},{"value":"360922","label":"万载县"},{"value":"360923","label":"上高县"},{"value":"360924","label":"宜丰县"},{"value":"360925","label":"靖安县"},{"value":"360926","label":"铜鼓县"},{"value":"360981","label":"丰城市"},{"value":"360982","label":"樟树市"},{"value":"360983","label":"高安市"}]},{"value":"361000","label":"抚州市","children":[{"value":"361001","label":"抚州市市辖区"},{"value":"361002","label":"临川区"},{"value":"361021","label":"南城县"},{"value":"361022","label":"黎川县"},{"value":"361023","label":"南丰县"},{"value":"361024","label":"崇仁县"},{"value":"361025","label":"乐安县"},{"value":"361026","label":"宜黄县"},{"value":"361027","label":"金溪县"},{"value":"361028","label":"资溪县"},{"value":"361029","label":"东乡县"},{"value":"361030","label":"广昌县"}]},{"value":"361100","label":"上饶市","children":[{"value":"361101","label":"上饶市市辖区"},{"value":"361102","label":"信州区"},{"value":"361121","label":"上饶县"},{"value":"361122","label":"广丰县"},{"value":"361123","label":"玉山县"},{"value":"361124","label":"铅山县"},{"value":"361125","label":"横峰县"},{"value":"361126","label":"弋阳县"},{"value":"361127","label":"余干县"},{"value":"361128","label":"鄱阳县"},{"value":"361129","label":"万年县"},{"value":"361130","label":"婺源县"},{"value":"361181","label":"德兴市"}]}]},{"value":"370000","label":"山东省","children":[{"value":"370100","label":"济南市","children":[{"value":"370101","label":"济南市市辖区"},{"value":"370102","label":"历下区"},{"value":"370103","label":"济南市市中区"},{"value":"370104","label":"槐荫区"},{"value":"370105","label":"天桥区"},{"value":"370112","label":"历城区"},{"value":"370113","label":"长清区"},{"value":"370124","label":"平阴县"},{"value":"370125","label":"济阳县"},{"value":"370126","label":"商河县"},{"value":"370181","label":"章丘市"}]},{"value":"370200","label":"青岛市","children":[{"value":"370201","label":"青岛市市辖区"},{"value":"370202","label":"市南区"},{"value":"370203","label":"市北区"},{"value":"370205","label":"四方区"},{"value":"370211","label":"黄岛区"},{"value":"370212","label":"崂山区"},{"value":"370213","label":"李沧区"},{"value":"370214","label":"城阳区"},{"value":"370281","label":"胶州市"},{"value":"370282","label":"即墨市"},{"value":"370283","label":"平度市"},{"value":"370284","label":"胶南市"},{"value":"370285","label":"莱西市"}]},{"value":"370300","label":"淄博市","children":[{"value":"370301","label":"淄博市市辖区"},{"value":"370302","label":"淄川区"},{"value":"370303","label":"张店区"},{"value":"370304","label":"博山区"},{"value":"370305","label":"临淄区"},{"value":"370306","label":"周村区"},{"value":"370321","label":"桓台县"},{"value":"370322","label":"高青县"},{"value":"370323","label":"沂源县"}]},{"value":"370400","label":"枣庄市","children":[{"value":"370401","label":"枣庄市市辖区"},{"value":"370402","label":"枣庄市市中区"},{"value":"370403","label":"薛城区"},{"value":"370404","label":"峄城区"},{"value":"370405","label":"台儿庄区"},{"value":"370406","label":"山亭区"},{"value":"370481","label":"滕州市"}]},{"value":"370500","label":"东营市","children":[{"value":"370501","label":"东营市市辖区"},{"value":"370502","label":"东营区"},{"value":"370503","label":"河口区"},{"value":"370521","label":"垦利县"},{"value":"370522","label":"利津县"},{"value":"370523","label":"广饶县"}]},{"value":"370600","label":"烟台市","children":[{"value":"370601","label":"烟台市市辖区"},{"value":"370602","label":"芝罘区"},{"value":"370611","label":"福山区"},{"value":"370612","label":"牟平区"},{"value":"370613","label":"莱山区"},{"value":"370634","label":"长岛县"},{"value":"370681","label":"龙口市"},{"value":"370682","label":"莱阳市"},{"value":"370683","label":"莱州市"},{"value":"370684","label":"蓬莱市"},{"value":"370685","label":"招远市"},{"value":"370686","label":"栖霞市"},{"value":"370687","label":"海阳市"}]},{"value":"370700","label":"潍坊市","children":[{"value":"370701","label":"潍坊市市辖区"},{"value":"370702","label":"潍城区"},{"value":"370703","label":"寒亭区"},{"value":"370704","label":"坊子区"},{"value":"370705","label":"奎文区"},{"value":"370724","label":"临朐县"},{"value":"370725","label":"昌乐县"},{"value":"370781","label":"青州市"},{"value":"370782","label":"诸城市"},{"value":"370783","label":"寿光市"},{"value":"370784","label":"安丘市"},{"value":"370785","label":"高密市"},{"value":"370786","label":"昌邑市"}]},{"value":"370800","label":"济宁市","children":[{"value":"370801","label":"济宁市市辖区"},{"value":"370802","label":"济宁市市中区"},{"value":"370811","label":"任城区"},{"value":"370826","label":"微山县"},{"value":"370827","label":"鱼台县"},{"value":"370828","label":"金乡县"},{"value":"370829","label":"嘉祥县"},{"value":"370830","label":"汶上县"},{"value":"370831","label":"泗水县"},{"value":"370832","label":"梁山县"},{"value":"370881","label":"曲阜市"},{"value":"370882","label":"兖州市"},{"value":"370883","label":"邹城市"}]},{"value":"370900","label":"泰安市","children":[{"value":"370901","label":"泰安市市辖区"},{"value":"370902","label":"泰山区"},{"value":"370911","label":"岱岳区"},{"value":"370921","label":"宁阳县"},{"value":"370923","label":"东平县"},{"value":"370982","label":"新泰市"},{"value":"370983","label":"肥城市"}]},{"value":"371000","label":"威海市","children":[{"value":"371001","label":"威海市市辖区"},{"value":"371002","label":"环翠区"},{"value":"371081","label":"文登市"},{"value":"371082","label":"荣成市"},{"value":"371083","label":"乳山市"}]},{"value":"371100","label":"日照市","children":[{"value":"371101","label":"日照市市辖区"},{"value":"371102","label":"东港区"},{"value":"371103","label":"岚山区"},{"value":"371121","label":"五莲县"},{"value":"371122","label":"莒县"}]},{"value":"371200","label":"莱芜市","children":[{"value":"371201","label":"莱芜市市辖区"},{"value":"371202","label":"莱城区"},{"value":"371203","label":"钢城区"}]},{"value":"371300","label":"临沂市","children":[{"value":"371301","label":"临沂市市辖区"},{"value":"371302","label":"兰山区"},{"value":"371311","label":"罗庄区"},{"value":"371312","label":"河东区"},{"value":"371321","label":"沂南县"},{"value":"371322","label":"郯城县"},{"value":"371323","label":"沂水县"},{"value":"371324","label":"苍山县"},{"value":"371325","label":"费县"},{"value":"371326","label":"平邑县"},{"value":"371327","label":"莒南县"},{"value":"371328","label":"蒙阴县"},{"value":"371329","label":"临沭县"}]},{"value":"371400","label":"德州市","children":[{"value":"371401","label":"德州市市辖区"},{"value":"371402","label":"德城区"},{"value":"371421","label":"陵县"},{"value":"371422","label":"宁津县"},{"value":"371423","label":"庆云县"},{"value":"371424","label":"临邑县"},{"value":"371425","label":"齐河县"},{"value":"371426","label":"平原县"},{"value":"371427","label":"夏津县"},{"value":"371428","label":"武城县"},{"value":"371481","label":"乐陵市"},{"value":"371482","label":"禹城市"}]},{"value":"371500","label":"聊城市","children":[{"value":"371501","label":"聊城市市辖区"},{"value":"371502","label":"东昌府区"},{"value":"371521","label":"阳谷县"},{"value":"371522","label":"莘县"},{"value":"371523","label":"茌平县"},{"value":"371524","label":"东阿县"},{"value":"371525","label":"冠县"},{"value":"371526","label":"高唐县"},{"value":"371581","label":"临清市"}]},{"value":"371600","label":"滨州市","children":[{"value":"371601","label":"滨州市市辖区"},{"value":"371602","label":"滨城区"},{"value":"371621","label":"惠民县"},{"value":"371622","label":"阳信县"},{"value":"371623","label":"无棣县"},{"value":"371624","label":"沾化县"},{"value":"371625","label":"博兴县"},{"value":"371626","label":"邹平县"}]},{"value":"371700","label":"菏泽市","children":[{"value":"371701","label":"菏泽市市辖区"},{"value":"371702","label":"牡丹区"},{"value":"371721","label":"曹县"},{"value":"371722","label":"单县"},{"value":"371723","label":"成武县"},{"value":"371724","label":"巨野县"},{"value":"371725","label":"郓城县"},{"value":"371726","label":"鄄城县"},{"value":"371727","label":"定陶县"},{"value":"371728","label":"东明县"}]}]},{"value":"410000","label":"河南省","children":[{"value":"410100","label":"郑州市","children":[{"value":"410101","label":"郑州市市辖区"},{"value":"410102","label":"中原区"},{"value":"410103","label":"二七区"},{"value":"410104","label":"管城回族区"},{"value":"410105","label":"金水区"},{"value":"410106","label":"上街区"},{"value":"410108","label":"惠济区"},{"value":"410122","label":"中牟县"},{"value":"410181","label":"巩义市"},{"value":"410182","label":"荥阳市"},{"value":"410183","label":"新密市"},{"value":"410184","label":"新郑市"},{"value":"410185","label":"登封市"}]},{"value":"410200","label":"开封市","children":[{"value":"410201","label":"开封市市辖区"},{"value":"410202","label":"龙亭区"},{"value":"410203","label":"顺河回族区"},{"value":"410204","label":"鼓楼区"},{"value":"410205","label":"禹王台区"},{"value":"410211","label":"金明区"},{"value":"410221","label":"杞县"},{"value":"410222","label":"通许县"},{"value":"410223","label":"尉氏县"},{"value":"410224","label":"开封县"},{"value":"410225","label":"兰考县"}]},{"value":"410300","label":"洛阳市","children":[{"value":"410301","label":"洛阳市市辖区"},{"value":"410302","label":"老城区"},{"value":"410303","label":"西工区"},{"value":"410304","label":"瀍河回族区"},{"value":"410305","label":"涧西区"},{"value":"410306","label":"吉利区"},{"value":"410311","label":"洛龙区"},{"value":"410322","label":"孟津县"},{"value":"410323","label":"新安县"},{"value":"410324","label":"栾川县"},{"value":"410325","label":"嵩县"},{"value":"410326","label":"汝阳县"},{"value":"410327","label":"宜阳县"},{"value":"410328","label":"洛宁县"},{"value":"410329","label":"伊川县"},{"value":"410381","label":"偃师市"}]},{"value":"410400","label":"平顶山市","children":[{"value":"410401","label":"平顶山市市辖区"},{"value":"410402","label":"新华区"},{"value":"410403","label":"卫东区"},{"value":"410404","label":"石龙区"},{"value":"410411","label":"湛河区"},{"value":"410421","label":"宝丰县"},{"value":"410422","label":"叶县"},{"value":"410423","label":"鲁山县"},{"value":"410425","label":"郏县"},{"value":"410481","label":"舞钢市"},{"value":"410482","label":"汝州市"}]},{"value":"410500","label":"安阳市","children":[{"value":"410501","label":"安阳市市辖区"},{"value":"410502","label":"文峰区"},{"value":"410503","label":"北关区"},{"value":"410505","label":"殷都区"},{"value":"410506","label":"龙安区"},{"value":"410522","label":"安阳县"},{"value":"410523","label":"汤阴县"},{"value":"410526","label":"滑县"},{"value":"410527","label":"内黄县"},{"value":"410581","label":"林州市"}]},{"value":"410600","label":"鹤壁市","children":[{"value":"410601","label":"鹤壁市市辖区"},{"value":"410602","label":"鹤山区"},{"value":"410603","label":"山城区"},{"value":"410611","label":"淇滨区"},{"value":"410621","label":"浚县"},{"value":"410622","label":"淇县"}]},{"value":"410700","label":"新乡市","children":[{"value":"410701","label":"新乡市市辖区"},{"value":"410702","label":"红旗区"},{"value":"410703","label":"卫滨区"},{"value":"410704","label":"凤泉区"},{"value":"410711","label":"牧野区"},{"value":"410721","label":"新乡县"},{"value":"410724","label":"获嘉县"},{"value":"410725","label":"原阳县"},{"value":"410726","label":"延津县"},{"value":"410727","label":"封丘县"},{"value":"410728","label":"长垣县"},{"value":"410781","label":"卫辉市"},{"value":"410782","label":"辉县市"}]},{"value":"410800","label":"焦作市","children":[{"value":"410801","label":"焦作市市辖区"},{"value":"410802","label":"解放区"},{"value":"410803","label":"中站区"},{"value":"410804","label":"马村区"},{"value":"410811","label":"山阳区"},{"value":"410821","label":"修武县"},{"value":"410822","label":"博爱县"},{"value":"410823","label":"武陟县"},{"value":"410825","label":"温县"},{"value":"410882","label":"沁阳市"},{"value":"410883","label":"孟州市"}]},{"value":"410900","label":"濮阳市","children":[{"value":"410901","label":"濮阳市市辖区"},{"value":"410902","label":"华龙区"},{"value":"410922","label":"清丰县"},{"value":"410923","label":"南乐县"},{"value":"410926","label":"范县"},{"value":"410927","label":"台前县"},{"value":"410928","label":"濮阳县"}]},{"value":"411000","label":"许昌市","children":[{"value":"411001","label":"许昌市市辖区"},{"value":"411002","label":"魏都区"},{"value":"411023","label":"许昌县"},{"value":"411024","label":"鄢陵县"},{"value":"411025","label":"襄城县"},{"value":"411081","label":"禹州市"},{"value":"411082","label":"长葛市"}]},{"value":"411100","label":"漯河市","children":[{"value":"411101","label":"漯河市市辖区"},{"value":"411102","label":"源汇区"},{"value":"411103","label":"郾城区"},{"value":"411104","label":"召陵区"},{"value":"411121","label":"舞阳县"},{"value":"411122","label":"临颍县"}]},{"value":"411200","label":"三门峡市","children":[{"value":"411201","label":"三门峡市市辖区"},{"value":"411202","label":"湖滨区"},{"value":"411221","label":"渑池县"},{"value":"411222","label":"陕县"},{"value":"411224","label":"卢氏县"},{"value":"411281","label":"义马市"},{"value":"411282","label":"灵宝市"}]},{"value":"411300","label":"南阳市","children":[{"value":"411301","label":"南阳市市辖区"},{"value":"411302","label":"宛城区"},{"value":"411303","label":"卧龙区"},{"value":"411321","label":"南召县"},{"value":"411322","label":"方城县"},{"value":"411323","label":"西峡县"},{"value":"411324","label":"镇平县"},{"value":"411325","label":"内乡县"},{"value":"411326","label":"淅川县"},{"value":"411327","label":"社旗县"},{"value":"411328","label":"唐河县"},{"value":"411329","label":"新野县"},{"value":"411330","label":"桐柏县"},{"value":"411381","label":"邓州市"}]},{"value":"411400","label":"商丘市","children":[{"value":"411401","label":"商丘市市辖区"},{"value":"411402","label":"梁园区"},{"value":"411403","label":"睢阳区"},{"value":"411421","label":"民权县"},{"value":"411422","label":"睢县"},{"value":"411423","label":"宁陵县"},{"value":"411424","label":"柘城县"},{"value":"411425","label":"虞城县"},{"value":"411426","label":"夏邑县"},{"value":"411481","label":"永城市"}]},{"value":"411500","label":"信阳市","children":[{"value":"411501","label":"信阳市市辖区"},{"value":"411502","label":"浉河区"},{"value":"411503","label":"平桥区"},{"value":"411521","label":"罗山县"},{"value":"411522","label":"光山县"},{"value":"411523","label":"新县"},{"value":"411524","label":"商城县"},{"value":"411525","label":"固始县"},{"value":"411526","label":"潢川县"},{"value":"411527","label":"淮滨县"},{"value":"411528","label":"息县"}]},{"value":"411600","label":"周口市","children":[{"value":"411601","label":"周口市市辖区"},{"value":"411602","label":"川汇区"},{"value":"411621","label":"扶沟县"},{"value":"411622","label":"西华县"},{"value":"411623","label":"商水县"},{"value":"411624","label":"沈丘县"},{"value":"411625","label":"郸城县"},{"value":"411626","label":"淮阳县"},{"value":"411627","label":"太康县"},{"value":"411628","label":"鹿邑县"},{"value":"411681","label":"项城市"}]},{"value":"411700","label":"驻马店市","children":[{"value":"411701","label":"驻马店市市辖区"},{"value":"411702","label":"驿城区"},{"value":"411721","label":"西平县"},{"value":"411722","label":"上蔡县"},{"value":"411723","label":"平舆县"},{"value":"411724","label":"正阳县"},{"value":"411725","label":"确山县"},{"value":"411726","label":"泌阳县"},{"value":"411727","label":"汝南县"},{"value":"411728","label":"遂平县"},{"value":"411729","label":"新蔡县"}]},{"value":"419000","label":"河南省省直辖县级行政区划","children":[{"value":"419001","label":"济源市"}]}]},{"value":"420000","label":"湖北省","children":[{"value":"420100","label":"武汉市","children":[{"value":"420101","label":"武汉市市辖区"},{"value":"420102","label":"江岸区"},{"value":"420103","label":"江汉区"},{"value":"420104","label":"硚口区"},{"value":"420105","label":"汉阳区"},{"value":"420106","label":"武昌区"},{"value":"420107","label":"青山区"},{"value":"420111","label":"洪山区"},{"value":"420112","label":"东西湖区"},{"value":"420113","label":"汉南区"},{"value":"420114","label":"蔡甸区"},{"value":"420115","label":"江夏区"},{"value":"420116","label":"黄陂区"},{"value":"420117","label":"新洲区"}]},{"value":"420200","label":"黄石市","children":[{"value":"420201","label":"黄石市市辖区"},{"value":"420202","label":"黄石港区"},{"value":"420203","label":"西塞山区"},{"value":"420204","label":"下陆区"},{"value":"420205","label":"铁山区"},{"value":"420222","label":"阳新县"},{"value":"420281","label":"大冶市"}]},{"value":"420300","label":"十堰市","children":[{"value":"420301","label":"十堰市市辖区"},{"value":"420302","label":"茅箭区"},{"value":"420303","label":"张湾区"},{"value":"420321","label":"郧县"},{"value":"420322","label":"郧西县"},{"value":"420323","label":"竹山县"},{"value":"420324","label":"竹溪县"},{"value":"420325","label":"房县"},{"value":"420381","label":"丹江口市"}]},{"value":"420500","label":"宜昌市","children":[{"value":"420501","label":"宜昌市市辖区"},{"value":"420502","label":"西陵区"},{"value":"420503","label":"伍家岗区"},{"value":"420504","label":"点军区"},{"value":"420505","label":"猇亭区"},{"value":"420506","label":"夷陵区"},{"value":"420525","label":"远安县"},{"value":"420526","label":"兴山县"},{"value":"420527","label":"秭归县"},{"value":"420528","label":"长阳土家族自治县"},{"value":"420529","label":"五峰土家族自治县"},{"value":"420581","label":"宜都市"},{"value":"420582","label":"当阳市"},{"value":"420583","label":"枝江市"}]},{"value":"420600","label":"襄樊市","children":[{"value":"420601","label":"襄樊市市辖区"},{"value":"420602","label":"襄城区"},{"value":"420606","label":"樊城区"},{"value":"420607","label":"襄阳区"},{"value":"420624","label":"南漳县"},{"value":"420625","label":"谷城县"},{"value":"420626","label":"保康县"},{"value":"420682","label":"老河口市"},{"value":"420683","label":"枣阳市"},{"value":"420684","label":"宜城市"}]},{"value":"420700","label":"鄂州市","children":[{"value":"420701","label":"鄂州市市辖区"},{"value":"420702","label":"梁子湖区"},{"value":"420703","label":"华容区"},{"value":"420704","label":"鄂城区"}]},{"value":"420800","label":"荆门市","children":[{"value":"420801","label":"荆门市市辖区"},{"value":"420802","label":"东宝区"},{"value":"420804","label":"掇刀区"},{"value":"420821","label":"京山县"},{"value":"420822","label":"沙洋县"},{"value":"420881","label":"钟祥市"}]},{"value":"420900","label":"孝感市","children":[{"value":"420901","label":"孝感市市辖区"},{"value":"420902","label":"孝南区"},{"value":"420921","label":"孝昌县"},{"value":"420922","label":"大悟县"},{"value":"420923","label":"云梦县"},{"value":"420981","label":"应城市"},{"value":"420982","label":"安陆市"},{"value":"420984","label":"汉川市"}]},{"value":"421000","label":"荆州市","children":[{"value":"421001","label":"荆州市市辖区"},{"value":"421002","label":"沙市区"},{"value":"421003","label":"荆州区"},{"value":"421022","label":"公安县"},{"value":"421023","label":"监利县"},{"value":"421024","label":"江陵县"},{"value":"421081","label":"石首市"},{"value":"421083","label":"洪湖市"},{"value":"421087","label":"松滋市"}]},{"value":"421100","label":"黄冈市","children":[{"value":"421101","label":"黄冈市市辖区"},{"value":"421102","label":"黄州区"},{"value":"421121","label":"团风县"},{"value":"421122","label":"红安县"},{"value":"421123","label":"罗田县"},{"value":"421124","label":"英山县"},{"value":"421125","label":"浠水县"},{"value":"421126","label":"蕲春县"},{"value":"421127","label":"黄梅县"},{"value":"421181","label":"麻城市"},{"value":"421182","label":"武穴市"}]},{"value":"421200","label":"咸宁市","children":[{"value":"421201","label":"咸宁市市辖区"},{"value":"421202","label":"咸安区"},{"value":"421221","label":"嘉鱼县"},{"value":"421222","label":"通城县"},{"value":"421223","label":"崇阳县"},{"value":"421224","label":"通山县"},{"value":"421281","label":"赤壁市"}]},{"value":"421300","label":"随州市","children":[{"value":"421301","label":"随州市市辖区"},{"value":"421303","label":"曾都区"},{"value":"421321","label":"随县"},{"value":"421381","label":"广水市"}]},{"value":"422800","label":"恩施土家族苗族自治州","children":[{"value":"422801","label":"恩施市"},{"value":"422802","label":"利川市"},{"value":"422822","label":"建始县"},{"value":"422823","label":"巴东县"},{"value":"422825","label":"宣恩县"},{"value":"422826","label":"咸丰县"},{"value":"422827","label":"来凤县"},{"value":"422828","label":"鹤峰县"}]},{"value":"429000","label":"湖北省省直辖县级行政区划","children":[{"value":"429004","label":"仙桃市"},{"value":"429005","label":"潜江市"},{"value":"429006","label":"天门市"},{"value":"429021","label":"神农架林区"}]}]},{"value":"430000","label":"湖南省","children":[{"value":"430100","label":"长沙市","children":[{"value":"430101","label":"长沙市市辖区"},{"value":"430102","label":"芙蓉区"},{"value":"430103","label":"天心区"},{"value":"430104","label":"岳麓区"},{"value":"430105","label":"开福区"},{"value":"430111","label":"雨花区"},{"value":"430121","label":"长沙县"},{"value":"430122","label":"望城县"},{"value":"430124","label":"宁乡县"},{"value":"430181","label":"浏阳市"}]},{"value":"430200","label":"株洲市","children":[{"value":"430201","label":"株洲市市辖区"},{"value":"430202","label":"荷塘区"},{"value":"430203","label":"芦淞区"},{"value":"430204","label":"石峰区"},{"value":"430211","label":"天元区"},{"value":"430221","label":"株洲县"},{"value":"430223","label":"攸县"},{"value":"430224","label":"茶陵县"},{"value":"430225","label":"炎陵县"},{"value":"430281","label":"醴陵市"}]},{"value":"430300","label":"湘潭市","children":[{"value":"430301","label":"湘潭市市辖区"},{"value":"430302","label":"雨湖区"},{"value":"430304","label":"岳塘区"},{"value":"430321","label":"湘潭县"},{"value":"430381","label":"湘乡市"},{"value":"430382","label":"韶山市"}]},{"value":"430400","label":"衡阳市","children":[{"value":"430401","label":"衡阳市市辖区"},{"value":"430405","label":"珠晖区"},{"value":"430406","label":"雁峰区"},{"value":"430407","label":"石鼓区"},{"value":"430408","label":"蒸湘区"},{"value":"430412","label":"南岳区"},{"value":"430421","label":"衡阳县"},{"value":"430422","label":"衡南县"},{"value":"430423","label":"衡山县"},{"value":"430424","label":"衡东县"},{"value":"430426","label":"祁东县"},{"value":"430481","label":"耒阳市"},{"value":"430482","label":"常宁市"}]},{"value":"430500","label":"邵阳市","children":[{"value":"430501","label":"邵阳市市辖区"},{"value":"430502","label":"双清区"},{"value":"430503","label":"大祥区"},{"value":"430511","label":"北塔区"},{"value":"430521","label":"邵东县"},{"value":"430522","label":"新邵县"},{"value":"430523","label":"邵阳县"},{"value":"430524","label":"隆回县"},{"value":"430525","label":"洞口县"},{"value":"430527","label":"绥宁县"},{"value":"430528","label":"新宁县"},{"value":"430529","label":"城步苗族自治县"},{"value":"430581","label":"武冈市"}]},{"value":"430600","label":"岳阳市","children":[{"value":"430601","label":"岳阳市市辖区"},{"value":"430602","label":"岳阳楼区"},{"value":"430603","label":"云溪区"},{"value":"430611","label":"君山区"},{"value":"430621","label":"岳阳县"},{"value":"430623","label":"华容县"},{"value":"430624","label":"湘阴县"},{"value":"430626","label":"平江县"},{"value":"430681","label":"汨罗市"},{"value":"430682","label":"临湘市"}]},{"value":"430700","label":"常德市","children":[{"value":"430701","label":"常德市市辖区"},{"value":"430702","label":"武陵区"},{"value":"430703","label":"鼎城区"},{"value":"430721","label":"安乡县"},{"value":"430722","label":"汉寿县"},{"value":"430723","label":"澧县"},{"value":"430724","label":"临澧县"},{"value":"430725","label":"桃源县"},{"value":"430726","label":"石门县"},{"value":"430781","label":"津市市"}]},{"value":"430800","label":"张家界市","children":[{"value":"430801","label":"张家界市市辖区"},{"value":"430802","label":"永定区"},{"value":"430811","label":"武陵源区"},{"value":"430821","label":"慈利县"},{"value":"430822","label":"桑植县"}]},{"value":"430900","label":"益阳市","children":[{"value":"430901","label":"益阳市市辖区"},{"value":"430902","label":"资阳区"},{"value":"430903","label":"赫山区"},{"value":"430921","label":"南县"},{"value":"430922","label":"桃江县"},{"value":"430923","label":"安化县"},{"value":"430981","label":"沅江市"}]},{"value":"431000","label":"郴州市","children":[{"value":"431001","label":"郴州市市辖区"},{"value":"431002","label":"北湖区"},{"value":"431003","label":"苏仙区"},{"value":"431021","label":"桂阳县"},{"value":"431022","label":"宜章县"},{"value":"431023","label":"永兴县"},{"value":"431024","label":"嘉禾县"},{"value":"431025","label":"临武县"},{"value":"431026","label":"汝城县"},{"value":"431027","label":"桂东县"},{"value":"431028","label":"安仁县"},{"value":"431081","label":"资兴市"}]},{"value":"431100","label":"永州市","children":[{"value":"431101","label":"永州市市辖区"},{"value":"431102","label":"零陵区"},{"value":"431103","label":"冷水滩区"},{"value":"431121","label":"祁阳县"},{"value":"431122","label":"东安县"},{"value":"431123","label":"双牌县"},{"value":"431124","label":"道县"},{"value":"431125","label":"江永县"},{"value":"431126","label":"宁远县"},{"value":"431127","label":"蓝山县"},{"value":"431128","label":"新田县"},{"value":"431129","label":"江华瑶族自治县"}]},{"value":"431200","label":"怀化市","children":[{"value":"431201","label":"怀化市市辖区"},{"value":"431202","label":"鹤城区"},{"value":"431221","label":"中方县"},{"value":"431222","label":"沅陵县"},{"value":"431223","label":"辰溪县"},{"value":"431224","label":"溆浦县"},{"value":"431225","label":"会同县"},{"value":"431226","label":"麻阳苗族自治县"},{"value":"431227","label":"新晃侗族自治县"},{"value":"431228","label":"芷江侗族自治县"},{"value":"431229","label":"靖州苗族侗族自治县"},{"value":"431230","label":"通道侗族自治县"},{"value":"431281","label":"洪江市"}]},{"value":"431300","label":"娄底市","children":[{"value":"431301","label":"娄底市市辖区"},{"value":"431302","label":"娄星区"},{"value":"431321","label":"双峰县"},{"value":"431322","label":"新化县"},{"value":"431381","label":"冷水江市"},{"value":"431382","label":"涟源市"}]},{"value":"433100","label":"湘西土家族苗族自治州","children":[{"value":"433101","label":"吉首市"},{"value":"433122","label":"泸溪县"},{"value":"433123","label":"凤凰县"},{"value":"433124","label":"花垣县"},{"value":"433125","label":"保靖县"},{"value":"433126","label":"古丈县"},{"value":"433127","label":"永顺县"},{"value":"433130","label":"龙山县"}]}]},{"value":"440000","label":"广东省","children":[{"value":"440100","label":"广州市","children":[{"value":"440101","label":"广州市市辖区"},{"value":"440103","label":"荔湾区"},{"value":"440104","label":"越秀区"},{"value":"440105","label":"海珠区"},{"value":"440106","label":"天河区"},{"value":"440111","label":"广州市白云区"},{"value":"440112","label":"黄埔区"},{"value":"440113","label":"番禺区"},{"value":"440114","label":"花都区"},{"value":"440115","label":"南沙区"},{"value":"440116","label":"萝岗区"},{"value":"440183","label":"增城市"},{"value":"440184","label":"从化市"}]},{"value":"440200","label":"韶关市","children":[{"value":"440201","label":"韶关市市辖区"},{"value":"440203","label":"武江区"},{"value":"440204","label":"浈江区"},{"value":"440205","label":"曲江区"},{"value":"440222","label":"始兴县"},{"value":"440224","label":"仁化县"},{"value":"440229","label":"翁源县"},{"value":"440232","label":"乳源瑶族自治县"},{"value":"440233","label":"新丰县"},{"value":"440281","label":"乐昌市"},{"value":"440282","label":"南雄市"}]},{"value":"440300","label":"深圳市","children":[{"value":"440301","label":"深圳市市辖区"},{"value":"440303","label":"罗湖区"},{"value":"440304","label":"福田区"},{"value":"440305","label":"南山区"},{"value":"440306","label":"宝安区"},{"value":"440307","label":"龙岗区"},{"value":"440308","label":"盐田区"}]},{"value":"440400","label":"珠海市","children":[{"value":"440401","label":"珠海市市辖区"},{"value":"440402","label":"香洲区"},{"value":"440403","label":"斗门区"},{"value":"440404","label":"金湾区"}]},{"value":"440500","label":"汕头市","children":[{"value":"440501","label":"汕头市市辖区"},{"value":"440507","label":"龙湖区"},{"value":"440511","label":"金平区"},{"value":"440512","label":"濠江区"},{"value":"440513","label":"潮阳区"},{"value":"440514","label":"潮南区"},{"value":"440515","label":"澄海区"},{"value":"440523","label":"南澳县"}]},{"value":"440600","label":"佛山市","children":[{"value":"440601","label":"佛山市市辖区"},{"value":"440604","label":"禅城区"},{"value":"440605","label":"南海区"},{"value":"440606","label":"顺德区"},{"value":"440607","label":"三水区"},{"value":"440608","label":"高明区"}]},{"value":"440700","label":"江门市","children":[{"value":"440701","label":"江门市市辖区"},{"value":"440703","label":"蓬江区"},{"value":"440704","label":"江海区"},{"value":"440705","label":"新会区"},{"value":"440781","label":"台山市"},{"value":"440783","label":"开平市"},{"value":"440784","label":"鹤山市"},{"value":"440785","label":"恩平市"}]},{"value":"440800","label":"湛江市","children":[{"value":"440801","label":"湛江市市辖区"},{"value":"440802","label":"赤坎区"},{"value":"440803","label":"霞山区"},{"value":"440804","label":"坡头区"},{"value":"440811","label":"麻章区"},{"value":"440823","label":"遂溪县"},{"value":"440825","label":"徐闻县"},{"value":"440881","label":"廉江市"},{"value":"440882","label":"雷州市"},{"value":"440883","label":"吴川市"}]},{"value":"440900","label":"茂名市","children":[{"value":"440901","label":"茂名市市辖区"},{"value":"440902","label":"茂南区"},{"value":"440903","label":"茂港区"},{"value":"440923","label":"电白县"},{"value":"440981","label":"高州市"},{"value":"440982","label":"化州市"},{"value":"440983","label":"信宜市"}]},{"value":"441200","label":"肇庆市","children":[{"value":"441201","label":"肇庆市市辖区"},{"value":"441202","label":"端州区"},{"value":"441203","label":"鼎湖区"},{"value":"441223","label":"广宁县"},{"value":"441224","label":"怀集县"},{"value":"441225","label":"封开县"},{"value":"441226","label":"德庆县"},{"value":"441283","label":"高要市"},{"value":"441284","label":"四会市"}]},{"value":"441300","label":"惠州市","children":[{"value":"441301","label":"惠州市市辖区"},{"value":"441302","label":"惠城区"},{"value":"441303","label":"惠阳区"},{"value":"441322","label":"博罗县"},{"value":"441323","label":"惠东县"},{"value":"441324","label":"龙门县"}]},{"value":"441400","label":"梅州市","children":[{"value":"441401","label":"梅州市市辖区"},{"value":"441402","label":"梅江区"},{"value":"441421","label":"梅县"},{"value":"441422","label":"大埔县"},{"value":"441423","label":"丰顺县"},{"value":"441424","label":"五华县"},{"value":"441426","label":"平远县"},{"value":"441427","label":"蕉岭县"},{"value":"441481","label":"兴宁市"}]},{"value":"441500","label":"汕尾市","children":[{"value":"441501","label":"汕尾市市辖区"},{"value":"441502","label":"城区"},{"value":"441521","label":"海丰县"},{"value":"441523","label":"陆河县"},{"value":"441581","label":"陆丰市"}]},{"value":"441600","label":"河源市","children":[{"value":"441601","label":"河源市市辖区"},{"value":"441602","label":"源城区"},{"value":"441621","label":"紫金县"},{"value":"441622","label":"龙川县"},{"value":"441623","label":"连平县"},{"value":"441624","label":"和平县"},{"value":"441625","label":"东源县"}]},{"value":"441700","label":"阳江市","children":[{"value":"441701","label":"阳江市市辖区"},{"value":"441702","label":"江城区"},{"value":"441721","label":"阳西县"},{"value":"441723","label":"阳东县"},{"value":"441781","label":"阳春市"}]},{"value":"441800","label":"清远市","children":[{"value":"441801","label":"清远市市辖区"},{"value":"441802","label":"清城区"},{"value":"441821","label":"佛冈县"},{"value":"441823","label":"阳山县"},{"value":"441825","label":"连山壮族瑶族自治县"},{"value":"441826","label":"连南瑶族自治县"},{"value":"441827","label":"清新县"},{"value":"441881","label":"英德市"},{"value":"441882","label":"连州市"}]},{"value":"441900","label":"东莞市"},{"value":"442000","label":"中山市"},{"value":"445100","label":"潮州市","children":[{"value":"445101","label":"潮州市市辖区"},{"value":"445102","label":"湘桥区"},{"value":"445121","label":"潮安县"},{"value":"445122","label":"饶平县"}]},{"value":"445200","label":"揭阳市","children":[{"value":"445201","label":"揭阳市市辖区"},{"value":"445202","label":"榕城区"},{"value":"445221","label":"揭东县"},{"value":"445222","label":"揭西县"},{"value":"445224","label":"惠来县"},{"value":"445281","label":"普宁市"}]},{"value":"445300","label":"云浮市","children":[{"value":"445301","label":"云浮市市辖区"},{"value":"445302","label":"云城区"},{"value":"445321","label":"新兴县"},{"value":"445322","label":"郁南县"},{"value":"445323","label":"云安县"},{"value":"445381","label":"罗定市"}]}]},{"value":"450000","label":"广西壮族自治区","children":[{"value":"450100","label":"南宁市","children":[{"value":"450101","label":"南宁市市辖区"},{"value":"450102","label":"兴宁区"},{"value":"450103","label":"青秀区"},{"value":"450105","label":"江南区"},{"value":"450107","label":"西乡塘区"},{"value":"450108","label":"良庆区"},{"value":"450109","label":"邕宁区"},{"value":"450122","label":"武鸣县"},{"value":"450123","label":"隆安县"},{"value":"450124","label":"马山县"},{"value":"450125","label":"上林县"},{"value":"450126","label":"宾阳县"},{"value":"450127","label":"横县"}]},{"value":"450200","label":"柳州市","children":[{"value":"450201","label":"柳州市市辖区"},{"value":"450202","label":"柳州市城中区"},{"value":"450203","label":"鱼峰区"},{"value":"450204","label":"柳南区"},{"value":"450205","label":"柳北区"},{"value":"450221","label":"柳江县"},{"value":"450222","label":"柳城县"},{"value":"450223","label":"鹿寨县"},{"value":"450224","label":"融安县"},{"value":"450225","label":"融水苗族自治县"},{"value":"450226","label":"三江侗族自治县"}]},{"value":"450300","label":"桂林市","children":[{"value":"450301","label":"桂林市市辖区"},{"value":"450302","label":"秀峰区"},{"value":"450303","label":"叠彩区"},{"value":"450304","label":"象山区"},{"value":"450305","label":"七星区"},{"value":"450311","label":"雁山区"},{"value":"450321","label":"阳朔县"},{"value":"450322","label":"临桂县"},{"value":"450323","label":"灵川县"},{"value":"450324","label":"全州县"},{"value":"450325","label":"兴安县"},{"value":"450326","label":"永福县"},{"value":"450327","label":"灌阳县"},{"value":"450328","label":"龙胜各族自治县"},{"value":"450329","label":"资源县"},{"value":"450330","label":"平乐县"},{"value":"450331","label":"荔蒲县"},{"value":"450332","label":"恭城瑶族自治县"}]},{"value":"450400","label":"梧州市","children":[{"value":"450401","label":"梧州市市辖区"},{"value":"450403","label":"万秀区"},{"value":"450404","label":"蝶山区"},{"value":"450405","label":"长洲区"},{"value":"450421","label":"苍梧县"},{"value":"450422","label":"藤县"},{"value":"450423","label":"蒙山县"},{"value":"450481","label":"岑溪市"}]},{"value":"450500","label":"北海市","children":[{"value":"450501","label":"北海市市辖区"},{"value":"450502","label":"海城区"},{"value":"450503","label":"银海区"},{"value":"450512","label":"铁山港区"},{"value":"450521","label":"合浦县"}]},{"value":"450600","label":"防城港市","children":[{"value":"450601","label":"防城港市市辖区"},{"value":"450602","label":"港口区"},{"value":"450603","label":"防城区"},{"value":"450621","label":"上思县"},{"value":"450681","label":"东兴市"}]},{"value":"450700","label":"钦州市","children":[{"value":"450701","label":"钦州市市辖区"},{"value":"450702","label":"钦南区"},{"value":"450703","label":"钦北区"},{"value":"450721","label":"灵山县"},{"value":"450722","label":"浦北县"}]},{"value":"450800","label":"贵港市","children":[{"value":"450801","label":"贵港市市辖区"},{"value":"450802","label":"港北区"},{"value":"450803","label":"港南区"},{"value":"450804","label":"覃塘区"},{"value":"450821","label":"平南县"},{"value":"450881","label":"桂平市"}]},{"value":"450900","label":"玉林市","children":[{"value":"450901","label":"玉林市市辖区"},{"value":"450902","label":"玉州区"},{"value":"450921","label":"容县"},{"value":"450922","label":"陆川县"},{"value":"450923","label":"博白县"},{"value":"450924","label":"兴业县"},{"value":"450981","label":"北流市"}]},{"value":"451000","label":"百色市","children":[{"value":"451001","label":"百色市市辖区"},{"value":"451002","label":"右江区"},{"value":"451021","label":"田阳县"},{"value":"451022","label":"田东县"},{"value":"451023","label":"平果县"},{"value":"451024","label":"德保县"},{"value":"451025","label":"靖西县"},{"value":"451026","label":"那坡县"},{"value":"451027","label":"凌云县"},{"value":"451028","label":"乐业县"},{"value":"451029","label":"田林县"},{"value":"451030","label":"西林县"},{"value":"451031","label":"隆林各族自治县"}]},{"value":"451100","label":"贺州市","children":[{"value":"451101","label":"贺州市市辖区"},{"value":"451102","label":"八步区"},{"value":"451119","label":"平桂管理区"},{"value":"451121","label":"昭平县"},{"value":"451122","label":"钟山县"},{"value":"451123","label":"富川瑶族自治县"}]},{"value":"451200","label":"河池市","children":[{"value":"451201","label":"河池市市辖区"},{"value":"451202","label":"金城江区"},{"value":"451221","label":"南丹县"},{"value":"451222","label":"天峨县"},{"value":"451223","label":"凤山县"},{"value":"451224","label":"东兰县"},{"value":"451225","label":"罗城仫佬族自治县"},{"value":"451226","label":"环江毛南族自治县"},{"value":"451227","label":"巴马瑶族自治县"},{"value":"451228","label":"都安瑶族自治县"},{"value":"451229","label":"大化瑶族自治县"},{"value":"451281","label":"宜州市"}]},{"value":"451300","label":"来宾市","children":[{"value":"451301","label":"来宾市市辖区"},{"value":"451302","label":"兴宾区"},{"value":"451321","label":"忻城县"},{"value":"451322","label":"象州县"},{"value":"451323","label":"武宣县"},{"value":"451324","label":"金秀瑶族自治县"},{"value":"451381","label":"合山市"}]},{"value":"451400","label":"崇左市","children":[{"value":"451401","label":"崇左市市辖区"},{"value":"451402","label":"江洲区"},{"value":"451421","label":"扶绥县"},{"value":"451422","label":"宁明县"},{"value":"451423","label":"龙州县"},{"value":"451424","label":"大新县"},{"value":"451425","label":"天等县"},{"value":"451481","label":"凭祥市"}]}]},{"value":"460000","label":"海南省","children":[{"value":"460100","label":"海口市","children":[{"value":"460101","label":"海口市市辖区"},{"value":"460105","label":"秀英区"},{"value":"460106","label":"龙华区"},{"value":"460107","label":"琼山区"},{"value":"460108","label":"美兰区"}]},{"value":"460200","label":"三亚市","children":[{"value":"460201","label":"三亚市市辖区"}]},{"value":"469000","label":"省直辖县级行政区划","children":[{"value":"469001","label":"五指山市"},{"value":"469002","label":"琼海市"},{"value":"469003","label":"儋州市"},{"value":"469005","label":"文昌市"},{"value":"469006","label":"万宁市"},{"value":"469007","label":"东方市"},{"value":"469021","label":"定安县"},{"value":"469022","label":"屯昌县"},{"value":"469023","label":"澄迈县"},{"value":"469024","label":"临高县"},{"value":"469025","label":"白沙黎族自治县"},{"value":"469026","label":"昌江黎族自治县"},{"value":"469027","label":"乐东黎族自治县"},{"value":"469028","label":"陵水黎族自治县"},{"value":"469029","label":"保亭黎族苗族自治县"},{"value":"469030","label":"琼中黎族苗族自治县"},{"value":"469031","label":"西沙群岛"},{"value":"469032","label":"南沙群岛"},{"value":"469033","label":"中沙群岛的岛礁及其海域"}]}]},{"value":"500000","label":"重庆市","children":[{"value":"500100","label":"重庆市市辖区","children":[{"value":"500101","label":"万州区"},{"value":"500102","label":"涪陵区"},{"value":"500103","label":"渝中区"},{"value":"500104","label":"大渡口区"},{"value":"500105","label":"江北区"},{"value":"500106","label":"沙坪坝区"},{"value":"500107","label":"九龙坡区"},{"value":"500108","label":"南岸区"},{"value":"500109","label":"北碚区"},{"value":"500110","label":"万盛区"},{"value":"500111","label":"双桥区"},{"value":"500112","label":"渝北区"},{"value":"500113","label":"巴南区"},{"value":"500114","label":"黔江区"},{"value":"500115","label":"长寿区"},{"value":"500116","label":"江津区"},{"value":"500117","label":"合川区"},{"value":"500118","label":"永川区"},{"value":"500119","label":"南川区"}]},{"value":"500200","label":"县","children":[{"value":"500222","label":"綦江县"},{"value":"500223","label":"潼南县"},{"value":"500224","label":"铜梁县"},{"value":"500225","label":"大足县"},{"value":"500226","label":"荣昌县"},{"value":"500227","label":"璧山县"},{"value":"500228","label":"梁平县"},{"value":"500229","label":"城口县"},{"value":"500230","label":"丰都县"},{"value":"500231","label":"垫江县"},{"value":"500232","label":"武隆县"},{"value":"500233","label":"忠县"},{"value":"500234","label":"开县"},{"value":"500235","label":"云阳县"},{"value":"500236","label":"奉节县"},{"value":"500237","label":"巫山县"},{"value":"500238","label":"巫溪县"},{"value":"500240","label":"石柱土家族自治县"},{"value":"500241","label":"秀山土家族苗族自治县"},{"value":"500242","label":"酉阳土家族苗族自治县"},{"value":"500243","label":"彭水苗族土家族自治县"}]}]},{"value":"510000","label":"四川省","children":[{"value":"510100","label":"成都市","children":[{"value":"510101","label":"成都市市辖区"},{"value":"510104","label":"锦江区"},{"value":"510105","label":"青羊区"},{"value":"510106","label":"金牛区"},{"value":"510107","label":"武侯区"},{"value":"510108","label":"成华区"},{"value":"510112","label":"龙泉驿区"},{"value":"510113","label":"青白江区"},{"value":"510114","label":"新都区"},{"value":"510115","label":"温江区"},{"value":"510121","label":"金堂县"},{"value":"510122","label":"双流县"},{"value":"510124","label":"郫县"},{"value":"510129","label":"大邑县"},{"value":"510131","label":"蒲江县"},{"value":"510132","label":"新津县"},{"value":"510181","label":"都江堰市"},{"value":"510182","label":"彭州市"},{"value":"510183","label":"邛崃市"},{"value":"510184","label":"崇州市"}]},{"value":"510300","label":"自贡市","children":[{"value":"510301","label":"自贡市市辖区"},{"value":"510302","label":"自流井区"},{"value":"510303","label":"贡井区"},{"value":"510304","label":"大安区"},{"value":"510311","label":"沿滩区"},{"value":"510321","label":"荣县"},{"value":"510322","label":"富顺县"}]},{"value":"510400","label":"攀枝花市","children":[{"value":"510401","label":"攀枝花市市辖区"},{"value":"510402","label":"东区"},{"value":"510403","label":"西区"},{"value":"510411","label":"仁和区"},{"value":"510421","label":"米易县"},{"value":"510422","label":"盐边县"}]},{"value":"510500","label":"泸州市","children":[{"value":"510501","label":"泸州市市辖区"},{"value":"510502","label":"江阳区"},{"value":"510503","label":"纳溪区"},{"value":"510504","label":"龙马潭区"},{"value":"510521","label":"泸县"},{"value":"510522","label":"合江县"},{"value":"510524","label":"叙永县"},{"value":"510525","label":"古蔺县"}]},{"value":"510600","label":"德阳市","children":[{"value":"510601","label":"德阳市市辖区"},{"value":"510603","label":"旌阳区"},{"value":"510623","label":"中江县"},{"value":"510626","label":"罗江县"},{"value":"510681","label":"广汉市"},{"value":"510682","label":"什邡市"},{"value":"510683","label":"绵竹市"}]},{"value":"510700","label":"绵阳市","children":[{"value":"510701","label":"绵阳市市辖区"},{"value":"510703","label":"涪城区"},{"value":"510704","label":"游仙区"},{"value":"510722","label":"三台县"},{"value":"510723","label":"盐亭县"},{"value":"510724","label":"安县"},{"value":"510725","label":"梓潼县"},{"value":"510726","label":"北川羌族自治县"},{"value":"510727","label":"平武县"},{"value":"510781","label":"江油市"}]},{"value":"510800","label":"广元市","children":[{"value":"510801","label":"广元市市辖区"},{"value":"510802","label":"利州区"},{"value":"510811","label":"元坝区"},{"value":"510812","label":"朝天区"},{"value":"510821","label":"旺苍县"},{"value":"510822","label":"青川县"},{"value":"510823","label":"剑阁县"},{"value":"510824","label":"苍溪县"}]},{"value":"510900","label":"遂宁市","children":[{"value":"510901","label":"遂宁市市辖区"},{"value":"510903","label":"船山区"},{"value":"510904","label":"安居区"},{"value":"510921","label":"蓬溪县"},{"value":"510922","label":"射洪县"},{"value":"510923","label":"大英县"}]},{"value":"511000","label":"内江市","children":[{"value":"511001","label":"内江市市辖区"},{"value":"511002","label":"内江市市中区"},{"value":"511011","label":"东兴区"},{"value":"511024","label":"威远县"},{"value":"511025","label":"资中县"},{"value":"511028","label":"隆昌县"}]},{"value":"511100","label":"乐山市","children":[{"value":"511101","label":"乐山市市辖区"},{"value":"511102","label":"市中区"},{"value":"511111","label":"沙湾区"},{"value":"511112","label":"五通桥区"},{"value":"511113","label":"金口河区"},{"value":"511123","label":"犍为县"},{"value":"511124","label":"井研县"},{"value":"511126","label":"夹江县"},{"value":"511129","label":"沐川县"},{"value":"511132","label":"峨边彝族自治县"},{"value":"511133","label":"马边彝族自治县"},{"value":"511181","label":"峨眉山市"}]},{"value":"511300","label":"南充市","children":[{"value":"511301","label":"南充市市辖区"},{"value":"511302","label":"顺庆区"},{"value":"511303","label":"高坪区"},{"value":"511304","label":"嘉陵区"},{"value":"511321","label":"南部县"},{"value":"511322","label":"营山县"},{"value":"511323","label":"蓬安县"},{"value":"511324","label":"仪陇县"},{"value":"511325","label":"西充县"},{"value":"511381","label":"阆中市"}]},{"value":"511400","label":"眉山市","children":[{"value":"511401","label":"眉山市市辖区"},{"value":"511402","label":"东坡区"},{"value":"511421","label":"仁寿县"},{"value":"511422","label":"彭山县"},{"value":"511423","label":"洪雅县"},{"value":"511424","label":"丹棱县"},{"value":"511425","label":"青神县"}]},{"value":"511500","label":"宜宾市","children":[{"value":"511501","label":"宜宾市市辖区"},{"value":"511502","label":"翠屏区"},{"value":"511521","label":"宜宾县"},{"value":"511522","label":"南溪县"},{"value":"511523","label":"江安县"},{"value":"511524","label":"长宁县"},{"value":"511525","label":"高县"},{"value":"511526","label":"珙县"},{"value":"511527","label":"筠连县"},{"value":"511528","label":"兴文县"},{"value":"511529","label":"屏山县"}]},{"value":"511600","label":"广安市","children":[{"value":"511601","label":"广安市市辖区"},{"value":"511602","label":"广安区"},{"value":"511621","label":"岳池县"},{"value":"511622","label":"武胜县"},{"value":"511623","label":"邻水县"},{"value":"511681","label":"华蓥市"}]},{"value":"511700","label":"达州市","children":[{"value":"511701","label":"达州市市辖区"},{"value":"511702","label":"通川区"},{"value":"511721","label":"达县"},{"value":"511722","label":"宣汉县"},{"value":"511723","label":"开江县"},{"value":"511724","label":"大竹县"},{"value":"511725","label":"渠县"},{"value":"511781","label":"万源市"}]},{"value":"511800","label":"雅安市","children":[{"value":"511801","label":"雅安市市辖区"},{"value":"511802","label":"雨城区"},{"value":"511821","label":"名山县"},{"value":"511822","label":"荥经县"},{"value":"511823","label":"汉源县"},{"value":"511824","label":"石棉县"},{"value":"511825","label":"天全县"},{"value":"511826","label":"芦山县"},{"value":"511827","label":"宝兴县"}]},{"value":"511900","label":"巴中市","children":[{"value":"511901","label":"巴中市市辖区"},{"value":"511902","label":"巴州区"},{"value":"511921","label":"通江县"},{"value":"511922","label":"南江县"},{"value":"511923","label":"平昌县"}]},{"value":"512000","label":"资阳市","children":[{"value":"512001","label":"资阳市市辖区"},{"value":"512002","label":"雁江区"},{"value":"512021","label":"安岳县"},{"value":"512022","label":"乐至县"},{"value":"512081","label":"简阳市"}]},{"value":"513200","label":"阿坝藏族羌族自治州","children":[{"value":"513221","label":"汶川县"},{"value":"513222","label":"理县"},{"value":"513223","label":"茂县"},{"value":"513224","label":"松潘县"},{"value":"513225","label":"九寨沟县"},{"value":"513226","label":"金川县"},{"value":"513227","label":"小金县"},{"value":"513228","label":"黑水县"},{"value":"513229","label":"马尔康县"},{"value":"513230","label":"壤塘县"},{"value":"513231","label":"阿坝县"},{"value":"513232","label":"若尔盖县"},{"value":"513233","label":"红原县"}]},{"value":"513300","label":"甘孜藏族自治州","children":[{"value":"513321","label":"康定县"},{"value":"513322","label":"泸定县"},{"value":"513323","label":"丹巴县"},{"value":"513324","label":"九龙县"},{"value":"513325","label":"雅江县"},{"value":"513326","label":"道孚县"},{"value":"513327","label":"炉霍县"},{"value":"513328","label":"甘孜县"},{"value":"513329","label":"新龙县"},{"value":"513330","label":"德格县"},{"value":"513331","label":"白玉县"},{"value":"513332","label":"石渠县"},{"value":"513333","label":"色达县"},{"value":"513334","label":"理塘县"},{"value":"513335","label":"巴塘县"},{"value":"513336","label":"乡城县"},{"value":"513337","label":"稻城县"},{"value":"513338","label":"得荣县"}]},{"value":"513400","label":"凉山彝族自治州","children":[{"value":"513401","label":"西昌市"},{"value":"513422","label":"木里藏族自治县"},{"value":"513423","label":"盐源县"},{"value":"513424","label":"德昌县"},{"value":"513425","label":"会理县"},{"value":"513426","label":"会东县"},{"value":"513427","label":"宁南县"},{"value":"513428","label":"普格县"},{"value":"513429","label":"布拖县"},{"value":"513430","label":"金阳县"},{"value":"513431","label":"昭觉县"},{"value":"513432","label":"喜德县"},{"value":"513433","label":"冕宁县"},{"value":"513434","label":"越西县"},{"value":"513435","label":"甘洛县"},{"value":"513436","label":"美姑县"},{"value":"513437","label":"雷波县"}]}]},{"value":"520000","label":"贵州省","children":[{"value":"520100","label":"贵阳市","children":[{"value":"520101","label":"贵阳市市辖区"},{"value":"520102","label":"南明区"},{"value":"520103","label":"云岩区"},{"value":"520111","label":"花溪区"},{"value":"520112","label":"乌当区"},{"value":"520113","label":"白云区"},{"value":"520114","label":"小河区"},{"value":"520121","label":"开阳县"},{"value":"520122","label":"息烽县"},{"value":"520123","label":"修文县"},{"value":"520181","label":"清镇市"}]},{"value":"520200","label":"六盘水市","children":[{"value":"520201","label":"钟山区"},{"value":"520203","label":"六枝特区"},{"value":"520221","label":"水城县"},{"value":"520222","label":"盘县"}]},{"value":"520300","label":"遵义市","children":[{"value":"520301","label":"遵义市市辖区"},{"value":"520302","label":"红花岗区"},{"value":"520303","label":"汇川区"},{"value":"520321","label":"遵义县"},{"value":"520322","label":"桐梓县"},{"value":"520323","label":"绥阳县"},{"value":"520324","label":"正安县"},{"value":"520325","label":"道真仡佬族苗族自治县"},{"value":"520326","label":"务川仡佬族苗族自治县"},{"value":"520327","label":"凤冈县"},{"value":"520328","label":"湄潭县"},{"value":"520329","label":"余庆县"},{"value":"520330","label":"习水县"},{"value":"520381","label":"赤水市"},{"value":"520382","label":"仁怀市"}]},{"value":"520400","label":"安顺市","children":[{"value":"520401","label":"安顺市市辖区"},{"value":"520402","label":"西秀区"},{"value":"520421","label":"平坝县"},{"value":"520422","label":"普定县"},{"value":"520423","label":"镇宁布依族苗族自治县"},{"value":"520424","label":"关岭布依族苗族自治县"},{"value":"520425","label":"紫云苗族布依族自治县"}]},{"value":"522200","label":"铜仁地区","children":[{"value":"522201","label":"铜仁市"},{"value":"522222","label":"江口县"},{"value":"522223","label":"玉屏侗族自治县"},{"value":"522224","label":"石阡县"},{"value":"522225","label":"思南县"},{"value":"522226","label":"印江土家族苗族自治县"},{"value":"522227","label":"德江县"},{"value":"522228","label":"沿河土家族自治县"},{"value":"522229","label":"松桃苗族自治县"},{"value":"522230","label":"万山特区"}]},{"value":"522300","label":"黔西南布依族苗族自治州","children":[{"value":"522301","label":"兴义市"},{"value":"522322","label":"兴仁县"},{"value":"522323","label":"普安县"},{"value":"522324","label":"晴隆县"},{"value":"522325","label":"贞丰县"},{"value":"522326","label":"望谟县"},{"value":"522327","label":"册亨县"},{"value":"522328","label":"安龙县"}]},{"value":"522400","label":"毕节地区","children":[{"value":"522401","label":"毕节市"},{"value":"522422","label":"大方县"},{"value":"522423","label":"黔西县"},{"value":"522424","label":"金沙县"},{"value":"522425","label":"织金县"},{"value":"522426","label":"纳雍县"},{"value":"522427","label":"威宁彝族回族苗族自治县"},{"value":"522428","label":"赫章县"}]},{"value":"522600","label":"黔东南苗族侗族自治州","children":[{"value":"522601","label":"凯里市"},{"value":"522622","label":"黄平县"},{"value":"522623","label":"施秉县"},{"value":"522624","label":"三穗县"},{"value":"522625","label":"镇远县"},{"value":"522626","label":"岑巩县"},{"value":"522627","label":"天柱县"},{"value":"522628","label":"锦屏县"},{"value":"522629","label":"剑河县"},{"value":"522630","label":"台江县"},{"value":"522631","label":"黎平县"},{"value":"522632","label":"榕江县"},{"value":"522633","label":"从江县"},{"value":"522634","label":"雷山县"},{"value":"522635","label":"麻江县"},{"value":"522636","label":"丹寨县"}]},{"value":"522700","label":"黔南布依族苗族自治州","children":[{"value":"522701","label":"都匀市"},{"value":"522702","label":"福泉市"},{"value":"522722","label":"荔波县"},{"value":"522723","label":"贵定县"},{"value":"522725","label":"瓮安县"},{"value":"522726","label":"独山县"},{"value":"522727","label":"平塘县"},{"value":"522728","label":"罗甸县"},{"value":"522729","label":"长顺县"},{"value":"522730","label":"龙里县"},{"value":"522731","label":"惠水县"},{"value":"522732","label":"三都水族自治县"}]}]},{"value":"530000","label":"云南省","children":[{"value":"530100","label":"昆明市","children":[{"value":"530101","label":"昆明市市辖区"},{"value":"530102","label":"五华区"},{"value":"530103","label":"盘龙区"},{"value":"530111","label":"官渡区"},{"value":"530112","label":"西山区"},{"value":"530113","label":"东川区"},{"value":"530121","label":"呈贡县"},{"value":"530122","label":"晋宁县"},{"value":"530124","label":"富民县"},{"value":"530125","label":"宜良县"},{"value":"530126","label":"石林彝族自治县"},{"value":"530127","label":"嵩明县"},{"value":"530128","label":"禄劝彝族苗族自治县"},{"value":"530129","label":"寻甸回族彝族自治县"},{"value":"530181","label":"安宁市"}]},{"value":"530300","label":"曲靖市","children":[{"value":"530301","label":"曲靖市市辖区"},{"value":"530302","label":"麒麟区"},{"value":"530321","label":"马龙县"},{"value":"530322","label":"陆良县"},{"value":"530323","label":"师宗县"},{"value":"530324","label":"罗平县"},{"value":"530325","label":"富源县"},{"value":"530326","label":"会泽县"},{"value":"530328","label":"沾益县"},{"value":"530381","label":"宣威市"}]},{"value":"530400","label":"玉溪市","children":[{"value":"530401","label":"玉溪市市辖区"},{"value":"530402","label":"红塔区"},{"value":"530421","label":"江川县"},{"value":"530422","label":"澄江县"},{"value":"530423","label":"通海县"},{"value":"530424","label":"华宁县"},{"value":"530425","label":"易门县"},{"value":"530426","label":"峨山彝族自治县"},{"value":"530427","label":"新平彝族傣族自治县"},{"value":"530428","label":"元江哈尼族彝族傣族自治县"}]},{"value":"530500","label":"保山市","children":[{"value":"530501","label":"保山市市辖区"},{"value":"530502","label":"隆阳区"},{"value":"530521","label":"施甸县"},{"value":"530522","label":"腾冲县"},{"value":"530523","label":"龙陵县"},{"value":"530524","label":"昌宁县"}]},{"value":"530600","label":"昭通市","children":[{"value":"530601","label":"昭通市市辖区"},{"value":"530602","label":"昭阳区"},{"value":"530621","label":"鲁甸县"},{"value":"530622","label":"巧家县"},{"value":"530623","label":"盐津县"},{"value":"530624","label":"大关县"},{"value":"530625","label":"永善县"},{"value":"530626","label":"绥江县"},{"value":"530627","label":"镇雄县"},{"value":"530628","label":"彝良县"},{"value":"530629","label":"威信县"},{"value":"530630","label":"水富县"}]},{"value":"530700","label":"丽江市","children":[{"value":"530701","label":"丽江市市辖区"},{"value":"530702","label":"古城区"},{"value":"530721","label":"玉龙纳西族自治县"},{"value":"530722","label":"永胜县"},{"value":"530723","label":"华坪县"},{"value":"530724","label":"宁蒗彝族自治县"}]},{"value":"530800","label":"普洱市","children":[{"value":"530801","label":"普洱市市辖区"},{"value":"530802","label":"思茅区"},{"value":"530821","label":"宁洱哈尼族彝族自治县"},{"value":"530822","label":"墨江哈尼族自治县"},{"value":"530823","label":"景东彝族自治县"},{"value":"530824","label":"景谷傣族彝族自治县"},{"value":"530825","label":"镇沅彝族哈尼族拉祜族自治县"},{"value":"530826","label":"江城哈尼族彝族自治县"},{"value":"530827","label":"孟连傣族拉祜族佤族自治县"},{"value":"530828","label":"澜沧拉祜族自治县"},{"value":"530829","label":"西盟佤族自治县"}]},{"value":"530900","label":"临沧市","children":[{"value":"530901","label":"临沧市市辖区"},{"value":"530902","label":"临翔区"},{"value":"530921","label":"凤庆县"},{"value":"530922","label":"云县"},{"value":"530923","label":"永德县"},{"value":"530924","label":"镇康县"},{"value":"530925","label":"双江拉祜族佤族布朗族傣族自治县"},{"value":"530926","label":"耿马傣族佤族自治县"},{"value":"530927","label":"沧源佤族自治县"}]},{"value":"532300","label":"楚雄彝族自治州","children":[{"value":"532301","label":"楚雄市"},{"value":"532322","label":"双柏县"},{"value":"532323","label":"牟定县"},{"value":"532324","label":"南华县"},{"value":"532325","label":"姚安县"},{"value":"532326","label":"大姚县"},{"value":"532327","label":"永仁县"},{"value":"532328","label":"元谋县"},{"value":"532329","label":"武定县"},{"value":"532331","label":"禄丰县"}]},{"value":"532500","label":"红河哈尼族彝族自治州","children":[{"value":"532501","label":"个旧市"},{"value":"532502","label":"开远市"},{"value":"532503","label":"蒙自市"},{"value":"532523","label":"屏边苗族自治县"},{"value":"532524","label":"建水县"},{"value":"532525","label":"石屏县"},{"value":"532526","label":"弥勒县"},{"value":"532527","label":"泸西县"},{"value":"532528","label":"元阳县"},{"value":"532529","label":"红河县"},{"value":"532530","label":"金平苗族瑶族傣族自治县"},{"value":"532531","label":"绿春县"},{"value":"532532","label":"河口瑶族自治县"}]},{"value":"532600","label":"文山壮族苗族自治州","children":[{"value":"532621","label":"文山县"},{"value":"532622","label":"砚山县"},{"value":"532623","label":"西畴县"},{"value":"532624","label":"麻栗坡县"},{"value":"532625","label":"马关县"},{"value":"532626","label":"丘北县"},{"value":"532627","label":"广南县"},{"value":"532628","label":"富宁县"}]},{"value":"532800","label":"西双版纳傣族自治州","children":[{"value":"532801","label":"景洪市"},{"value":"532822","label":"勐海县"},{"value":"532823","label":"勐腊县"}]},{"value":"532900","label":"大理白族自治州","children":[{"value":"532901","label":"大理市"},{"value":"532922","label":"漾濞彝族自治县"},{"value":"532923","label":"祥云县"},{"value":"532924","label":"宾川县"},{"value":"532925","label":"弥渡县"},{"value":"532926","label":"南涧彝族自治县"},{"value":"532927","label":"巍山彝族回族自治县"},{"value":"532928","label":"永平县"},{"value":"532929","label":"云龙县"},{"value":"532930","label":"洱源县"},{"value":"532931","label":"剑川县"},{"value":"532932","label":"鹤庆县"}]},{"value":"533100","label":"德宏傣族景颇族自治州","children":[{"value":"533102","label":"瑞丽市"},{"value":"533103","label":"芒市"},{"value":"533122","label":"梁河县"},{"value":"533123","label":"盈江县"},{"value":"533124","label":"陇川县"}]},{"value":"533300","label":"怒江傈僳族自治州","children":[{"value":"533321","label":"泸水县"},{"value":"533323","label":"福贡县"},{"value":"533324","label":"贡山独龙族怒族自治县"},{"value":"533325","label":"兰坪白族普米族自治县"}]},{"value":"533400","label":"迪庆藏族自治州","children":[{"value":"533421","label":"香格里拉县"},{"value":"533422","label":"德钦县"},{"value":"533423","label":"维西傈僳族自治县"}]}]},{"value":"540000","label":"西藏自治区","children":[{"value":"540100","label":"拉萨市","children":[{"value":"540101","label":"拉萨市市辖区"},{"value":"540102","label":"拉萨市城关区"},{"value":"540121","label":"林周县"},{"value":"540122","label":"当雄县"},{"value":"540123","label":"尼木县"},{"value":"540124","label":"曲水县"},{"value":"540125","label":"堆龙德庆县"},{"value":"540126","label":"达孜县"},{"value":"540127","label":"墨竹工卡县"}]},{"value":"542100","label":"昌都地区","children":[{"value":"542121","label":"昌都县"},{"value":"542122","label":"江达县"},{"value":"542123","label":"贡觉县"},{"value":"542124","label":"类乌齐县"},{"value":"542125","label":"丁青县"},{"value":"542126","label":"察雅县"},{"value":"542127","label":"八宿县"},{"value":"542128","label":"左贡县"},{"value":"542129","label":"芒康县"},{"value":"542132","label":"洛隆县"},{"value":"542133","label":"边坝县"}]},{"value":"542200","label":"山南地区","children":[{"value":"542221","label":"乃东县"},{"value":"542222","label":"扎囊县"},{"value":"542223","label":"贡嘎县"},{"value":"542224","label":"桑日县"},{"value":"542225","label":"琼结县"},{"value":"542226","label":"曲松县"},{"value":"542227","label":"措美县"},{"value":"542228","label":"洛扎县"},{"value":"542229","label":"加查县"},{"value":"542231","label":"隆子县"},{"value":"542232","label":"错那县"},{"value":"542233","label":"浪卡子县"}]},{"value":"542300","label":"日喀则地区","children":[{"value":"542301","label":"日喀则市"},{"value":"542322","label":"南木林县"},{"value":"542323","label":"江孜县"},{"value":"542324","label":"定日县"},{"value":"542325","label":"萨迦县"},{"value":"542326","label":"拉孜县"},{"value":"542327","label":"昂仁县"},{"value":"542328","label":"谢通门县"},{"value":"542329","label":"白朗县"},{"value":"542330","label":"仁布县"},{"value":"542331","label":"康马县"},{"value":"542332","label":"定结县"},{"value":"542333","label":"仲巴县"},{"value":"542334","label":"亚东县"},{"value":"542335","label":"吉隆县"},{"value":"542336","label":"聂拉木县"},{"value":"542337","label":"萨嘎县"},{"value":"542338","label":"岗巴县"}]},{"value":"542400","label":"那曲地区","children":[{"value":"542421","label":"那曲县"},{"value":"542422","label":"嘉黎县"},{"value":"542423","label":"比如县"},{"value":"542424","label":"聂荣县"},{"value":"542425","label":"安多县"},{"value":"542426","label":"申扎县"},{"value":"542427","label":"索县"},{"value":"542428","label":"班戈县"},{"value":"542429","label":"巴青县"},{"value":"542430","label":"尼玛县"}]},{"value":"542500","label":"阿里地区","children":[{"value":"542521","label":"普兰县"},{"value":"542522","label":"札达县"},{"value":"542523","label":"噶尔县"},{"value":"542524","label":"日土县"},{"value":"542525","label":"革吉县"},{"value":"542526","label":"改则县"},{"value":"542527","label":"措勤县"}]},{"value":"542600","label":"林芝地区","children":[{"value":"542621","label":"林芝县"},{"value":"542622","label":"工布江达县"},{"value":"542623","label":"米林县"},{"value":"542624","label":"墨脱县"},{"value":"542625","label":"波密县"},{"value":"542626","label":"察隅县"},{"value":"542627","label":"朗县"}]}]},{"value":"610000","label":"陕西省","children":[{"value":"610100","label":"西安市","children":[{"value":"610101","label":"西安市市辖区"},{"value":"610102","label":"新城区"},{"value":"610103","label":"碑林区"},{"value":"610104","label":"莲湖区"},{"value":"610111","label":"灞桥区"},{"value":"610112","label":"未央区"},{"value":"610113","label":"雁塔区"},{"value":"610114","label":"阎良区"},{"value":"610115","label":"临潼区"},{"value":"610116","label":"长安区"},{"value":"610122","label":"蓝田县"},{"value":"610124","label":"周至县"},{"value":"610125","label":"户县"},{"value":"610126","label":"高陵县"}]},{"value":"610200","label":"铜川市","children":[{"value":"610201","label":"铜川市市辖区"},{"value":"610202","label":"王益区"},{"value":"610203","label":"印台区"},{"value":"610204","label":"耀州区"},{"value":"610222","label":"宜君县"}]},{"value":"610300","label":"宝鸡市","children":[{"value":"610301","label":"宝鸡市市辖区"},{"value":"610302","label":"渭滨区"},{"value":"610303","label":"金台区"},{"value":"610304","label":"陈仓区"},{"value":"610322","label":"凤翔县"},{"value":"610323","label":"岐山县"},{"value":"610324","label":"扶风县"},{"value":"610326","label":"眉县"},{"value":"610327","label":"陇县"},{"value":"610328","label":"千阳县"},{"value":"610329","label":"麟游县"},{"value":"610330","label":"凤县"},{"value":"610331","label":"太白县"}]},{"value":"610400","label":"咸阳市","children":[{"value":"610401","label":"咸阳市市辖区"},{"value":"610402","label":"秦都区"},{"value":"610403","label":"杨陵区"},{"value":"610404","label":"渭城区"},{"value":"610422","label":"三原县"},{"value":"610423","label":"泾阳县"},{"value":"610424","label":"乾县"},{"value":"610425","label":"礼泉县"},{"value":"610426","label":"永寿县"},{"value":"610427","label":"彬县"},{"value":"610428","label":"长武县"},{"value":"610429","label":"旬邑县"},{"value":"610430","label":"淳化县"},{"value":"610431","label":"武功县"},{"value":"610481","label":"兴平市"}]},{"value":"610500","label":"渭南市","children":[{"value":"610501","label":"渭南市市辖区"},{"value":"610502","label":"临渭区"},{"value":"610521","label":"华县"},{"value":"610522","label":"潼关县"},{"value":"610523","label":"大荔县"},{"value":"610524","label":"合阳县"},{"value":"610525","label":"澄城县"},{"value":"610526","label":"蒲城县"},{"value":"610527","label":"白水县"},{"value":"610528","label":"富平县"},{"value":"610581","label":"韩城市"},{"value":"610582","label":"华阴市"}]},{"value":"610600","label":"延安市","children":[{"value":"610601","label":"延安市市辖区"},{"value":"610602","label":"宝塔区"},{"value":"610621","label":"延长县"},{"value":"610622","label":"延川县"},{"value":"610623","label":"子长县"},{"value":"610624","label":"安塞县"},{"value":"610625","label":"志丹县"},{"value":"610626","label":"吴起县"},{"value":"610627","label":"甘泉县"},{"value":"610628","label":"富县"},{"value":"610629","label":"洛川县"},{"value":"610630","label":"宜川县"},{"value":"610631","label":"黄龙县"},{"value":"610632","label":"黄陵县"}]},{"value":"610700","label":"汉中市","children":[{"value":"610701","label":"汉中市市辖区"},{"value":"610702","label":"汉台区"},{"value":"610721","label":"南郑县"},{"value":"610722","label":"城固县"},{"value":"610723","label":"洋县"},{"value":"610724","label":"西乡县"},{"value":"610725","label":"勉县"},{"value":"610726","label":"宁强县"},{"value":"610727","label":"略阳县"},{"value":"610728","label":"镇巴县"},{"value":"610729","label":"留坝县"},{"value":"610730","label":"佛坪县"}]},{"value":"610800","label":"榆林市","children":[{"value":"610801","label":"榆林市市辖区"},{"value":"610802","label":"榆阳区"},{"value":"610821","label":"神木县"},{"value":"610822","label":"府谷县"},{"value":"610823","label":"横山县"},{"value":"610824","label":"靖边县"},{"value":"610825","label":"定边县"},{"value":"610826","label":"绥德县"},{"value":"610827","label":"米脂县"},{"value":"610828","label":"佳县"},{"value":"610829","label":"吴堡县"},{"value":"610830","label":"清涧县"},{"value":"610831","label":"子洲县"}]},{"value":"610900","label":"安康市","children":[{"value":"610901","label":"安康市市辖区"},{"value":"610902","label":"汉滨区"},{"value":"610921","label":"汉阴县"},{"value":"610922","label":"石泉县"},{"value":"610923","label":"宁陕县"},{"value":"610924","label":"紫阳县"},{"value":"610925","label":"岚皋县"},{"value":"610926","label":"平利县"},{"value":"610927","label":"镇坪县"},{"value":"610928","label":"旬阳县"},{"value":"610929","label":"白河县"}]},{"value":"611000","label":"商洛市","children":[{"value":"611001","label":"商洛市市辖区"},{"value":"611002","label":"商州区"},{"value":"611021","label":"洛南县"},{"value":"611022","label":"丹凤县"},{"value":"611023","label":"商南县"},{"value":"611024","label":"山阳县"},{"value":"611025","label":"镇安县"},{"value":"611026","label":"柞水县"}]}]},{"value":"620000","label":"甘肃省","children":[{"value":"620100","label":"兰州市","children":[{"value":"620101","label":"兰州市市辖区"},{"value":"620102","label":"城关区"},{"value":"620103","label":"七里河区"},{"value":"620104","label":"西固区"},{"value":"620105","label":"安宁区"},{"value":"620111","label":"红古区"},{"value":"620121","label":"永登县"},{"value":"620122","label":"皋兰县"},{"value":"620123","label":"榆中县"}]},{"value":"620200","label":"嘉峪关市","children":[{"value":"620201","label":"嘉峪关市市辖区"}]},{"value":"620300","label":"金昌市","children":[{"value":"620301","label":"金昌市市辖区"},{"value":"620302","label":"金川区"},{"value":"620321","label":"永昌县"}]},{"value":"620400","label":"白银市","children":[{"value":"620401","label":"白银市市辖区"},{"value":"620402","label":"白银区"},{"value":"620403","label":"平川区"},{"value":"620421","label":"靖远县"},{"value":"620422","label":"会宁县"},{"value":"620423","label":"景泰县"}]},{"value":"620500","label":"天水市","children":[{"value":"620501","label":"天水市市辖区"},{"value":"620502","label":"秦州区"},{"value":"620503","label":"麦积区"},{"value":"620521","label":"清水县"},{"value":"620522","label":"秦安县"},{"value":"620523","label":"甘谷县"},{"value":"620524","label":"武山县"},{"value":"620525","label":"张家川回族自治县"}]},{"value":"620600","label":"武威市","children":[{"value":"620601","label":"武威市市辖区"},{"value":"620602","label":"凉州区"},{"value":"620621","label":"民勤县"},{"value":"620622","label":"古浪县"},{"value":"620623","label":"天祝藏族自治县"}]},{"value":"620700","label":"张掖市","children":[{"value":"620701","label":"张掖市市辖区"},{"value":"620702","label":"甘州区"},{"value":"620721","label":"肃南裕固族自治县"},{"value":"620722","label":"民乐县"},{"value":"620723","label":"临泽县"},{"value":"620724","label":"高台县"},{"value":"620725","label":"山丹县"}]},{"value":"620800","label":"平凉市","children":[{"value":"620801","label":"平凉市市辖区"},{"value":"620802","label":"崆峒区"},{"value":"620821","label":"泾川县"},{"value":"620822","label":"灵台县"},{"value":"620823","label":"崇信县"},{"value":"620824","label":"华亭县"},{"value":"620825","label":"庄浪县"},{"value":"620826","label":"静宁县"}]},{"value":"620900","label":"酒泉市","children":[{"value":"620901","label":"酒泉市市辖区"},{"value":"620902","label":"肃州区"},{"value":"620921","label":"金塔县"},{"value":"620922","label":"瓜州县"},{"value":"620923","label":"肃北蒙古族自治县"},{"value":"620924","label":"阿克塞哈萨克族自治县"},{"value":"620981","label":"玉门市"},{"value":"620982","label":"敦煌市"}]},{"value":"621000","label":"庆阳市","children":[{"value":"621001","label":"庆阳市市辖区"},{"value":"621002","label":"西峰区"},{"value":"621021","label":"庆城县"},{"value":"621022","label":"环县"},{"value":"621023","label":"华池县"},{"value":"621024","label":"合水县"},{"value":"621025","label":"正宁县"},{"value":"621026","label":"宁县"},{"value":"621027","label":"镇原县"}]},{"value":"621100","label":"定西市","children":[{"value":"621101","label":"定西市市辖区"},{"value":"621102","label":"安定区"},{"value":"621121","label":"通渭县"},{"value":"621122","label":"陇西县"},{"value":"621123","label":"渭源县"},{"value":"621124","label":"临洮县"},{"value":"621125","label":"漳县"},{"value":"621126","label":"岷县"}]},{"value":"621200","label":"陇南市","children":[{"value":"621201","label":"陇南市市辖区"},{"value":"621202","label":"武都区"},{"value":"621221","label":"成县"},{"value":"621222","label":"文县"},{"value":"621223","label":"宕昌县"},{"value":"621224","label":"康县"},{"value":"621225","label":"西和县"},{"value":"621226","label":"礼县"},{"value":"621227","label":"徽县"},{"value":"621228","label":"两当县"}]},{"value":"622900","label":"临夏回族自治州","children":[{"value":"622901","label":"临夏市"},{"value":"622921","label":"临夏县"},{"value":"622922","label":"康乐县"},{"value":"622923","label":"永靖县"},{"value":"622924","label":"广河县"},{"value":"622925","label":"和政县"},{"value":"622926","label":"东乡族自治县"},{"value":"622927","label":"积石山保安族东乡族撒拉族自治县"}]},{"value":"623000","label":"甘南藏族自治州","children":[{"value":"623001","label":"合作市"},{"value":"623021","label":"临潭县"},{"value":"623022","label":"卓尼县"},{"value":"623023","label":"舟曲县"},{"value":"623024","label":"迭部县"},{"value":"623025","label":"玛曲县"},{"value":"623026","label":"碌曲县"},{"value":"623027","label":"夏河县"}]}]},{"value":"630000","label":"青海省","children":[{"value":"630100","label":"西宁市","children":[{"value":"630101","label":"西宁市市辖区"},{"value":"630102","label":"城东区"},{"value":"630103","label":"城中区"},{"value":"630104","label":"城西区"},{"value":"630105","label":"城北区"},{"value":"630121","label":"大通回族土族自治县"},{"value":"630122","label":"湟中县"},{"value":"630123","label":"湟源县"}]},{"value":"632100","label":"海东地区","children":[{"value":"632121","label":"平安县"},{"value":"632122","label":"民和回族土族自治县"},{"value":"632123","label":"乐都县"},{"value":"632126","label":"互助土族自治县"},{"value":"632127","label":"化隆回族自治县"},{"value":"632128","label":"循化撒拉族自治县"}]},{"value":"632200","label":"海北藏族自治州","children":[{"value":"632221","label":"门源回族自治县"},{"value":"632222","label":"祁连县"},{"value":"632223","label":"海晏县"},{"value":"632224","label":"刚察县"}]},{"value":"632300","label":"黄南藏族自治州","children":[{"value":"632321","label":"同仁县"},{"value":"632322","label":"尖扎县"},{"value":"632323","label":"泽库县"},{"value":"632324","label":"河南蒙古族自治县"}]},{"value":"632500","label":"海南藏族自治州","children":[{"value":"632521","label":"共和县"},{"value":"632522","label":"同德县"},{"value":"632523","label":"贵德县"},{"value":"632524","label":"兴海县"},{"value":"632525","label":"贵南县"}]},{"value":"632600","label":"果洛藏族自治州","children":[{"value":"632621","label":"玛沁县"},{"value":"632622","label":"班玛县"},{"value":"632623","label":"甘德县"},{"value":"632624","label":"达日县"},{"value":"632625","label":"久治县"},{"value":"632626","label":"玛多县"}]},{"value":"632700","label":"玉树藏族自治州","children":[{"value":"632721","label":"玉树县"},{"value":"632722","label":"杂多县"},{"value":"632723","label":"称多县"},{"value":"632724","label":"治多县"},{"value":"632725","label":"囊谦县"},{"value":"632726","label":"曲麻莱县"}]},{"value":"632800","label":"海西蒙古族藏族自治州","children":[{"value":"632801","label":"格尔木市"},{"value":"632802","label":"德令哈市"},{"value":"632821","label":"乌兰县"},{"value":"632822","label":"都兰县"},{"value":"632823","label":"天峻县"}]}]},{"value":"640000","label":"宁夏回族自治区","children":[{"value":"640100","label":"银川市","children":[{"value":"640101","label":"银川市市辖区"},{"value":"640104","label":"兴庆区"},{"value":"640105","label":"西夏区"},{"value":"640106","label":"金凤区"},{"value":"640121","label":"永宁县"},{"value":"640122","label":"贺兰县"},{"value":"640181","label":"灵武市"}]},{"value":"640200","label":"石嘴山市","children":[{"value":"640201","label":"石嘴山市市辖区"},{"value":"640202","label":"大武口区"},{"value":"640205","label":"惠农区"},{"value":"640221","label":"平罗县"}]},{"value":"640300","label":"吴忠市","children":[{"value":"640301","label":"吴忠市市辖区"},{"value":"640302","label":"利通区"},{"value":"640303","label":"红寺堡区"},{"value":"640323","label":"盐池县"},{"value":"640324","label":"同心县"},{"value":"640381","label":"青铜峡市"}]},{"value":"640400","label":"固原市","children":[{"value":"640401","label":"固原市市辖区"},{"value":"640402","label":"原州区"},{"value":"640422","label":"西吉县"},{"value":"640423","label":"隆德县"},{"value":"640424","label":"泾源县"},{"value":"640425","label":"彭阳县"}]},{"value":"640500","label":"中卫市","children":[{"value":"640501","label":"中卫市市辖区"},{"value":"640502","label":"沙坡头区"},{"value":"640521","label":"中宁县"},{"value":"640522","label":"海原县"}]}]},{"value":"650000","label":"新疆维吾尔自治区","children":[{"value":"650100","label":"乌鲁木齐市","children":[{"value":"650101","label":"乌鲁木齐市市辖区"},{"value":"650102","label":"天山区"},{"value":"650103","label":"沙依巴克区"},{"value":"650104","label":"新市区"},{"value":"650105","label":"水磨沟区"},{"value":"650106","label":"头屯河区"},{"value":"650107","label":"达坂城区"},{"value":"650109","label":"米东区"},{"value":"650121","label":"乌鲁木齐县"}]},{"value":"650200","label":"克拉玛依市","children":[{"value":"650201","label":"克拉玛依市市辖区"},{"value":"650202","label":"独山子区"},{"value":"650203","label":"克拉玛依区"},{"value":"650204","label":"白碱滩区"},{"value":"650205","label":"乌尔禾区"}]},{"value":"652100","label":"吐鲁番地区","children":[{"value":"652101","label":"吐鲁番市"},{"value":"652122","label":"鄯善县"},{"value":"652123","label":"托克逊县"}]},{"value":"652200","label":"哈密地区","children":[{"value":"652201","label":"哈密市"},{"value":"652222","label":"巴里坤哈萨克自治县"},{"value":"652223","label":"伊吾县"}]},{"value":"652300","label":"昌吉回族自治州","children":[{"value":"652301","label":"昌吉市"},{"value":"652302","label":"阜康市"},{"value":"652323","label":"呼图壁县"},{"value":"652324","label":"玛纳斯县"},{"value":"652325","label":"奇台县"},{"value":"652327","label":"吉木萨尔县"},{"value":"652328","label":"木垒哈萨克自治县"}]},{"value":"652700","label":"博尔塔拉蒙古自治州","children":[{"value":"652701","label":"博乐市"},{"value":"652722","label":"精河县"},{"value":"652723","label":"温泉县"}]},{"value":"652800","label":"巴音郭楞蒙古自治州","children":[{"value":"652801","label":"库尔勒市"},{"value":"652822","label":"轮台县"},{"value":"652823","label":"尉犁县"},{"value":"652824","label":"若羌县"},{"value":"652825","label":"且末县"},{"value":"652826","label":"焉耆回族自治县"},{"value":"652827","label":"和静县"},{"value":"652828","label":"和硕县"},{"value":"652829","label":"博湖县"}]},{"value":"652900","label":"阿克苏地区","children":[{"value":"652901","label":"阿克苏市"},{"value":"652922","label":"温宿县"},{"value":"652923","label":"库车县"},{"value":"652924","label":"沙雅县"},{"value":"652925","label":"新和县"},{"value":"652926","label":"拜城县"},{"value":"652927","label":"乌什县"},{"value":"652928","label":"阿瓦提县"},{"value":"652929","label":"柯坪县"}]},{"value":"653000","label":"克孜勒苏柯尔克孜自治州","children":[{"value":"653001","label":"阿图什市"},{"value":"653022","label":"阿克陶县"},{"value":"653023","label":"阿合奇县"},{"value":"653024","label":"乌恰县"}]},{"value":"653100","label":"喀什地区","children":[{"value":"653101","label":"喀什市"},{"value":"653121","label":"疏附县"},{"value":"653122","label":"疏勒县"},{"value":"653123","label":"英吉沙县"},{"value":"653124","label":"泽普县"},{"value":"653125","label":"莎车县"},{"value":"653126","label":"叶城县"},{"value":"653127","label":"麦盖提县"},{"value":"653128","label":"岳普湖县"},{"value":"653129","label":"伽师县"},{"value":"653130","label":"巴楚县"},{"value":"653131","label":"塔什库尔干塔吉克自治县"}]},{"value":"653200","label":"和田地区","children":[{"value":"653201","label":"和田市"},{"value":"653221","label":"和田县"},{"value":"653222","label":"墨玉县"},{"value":"653223","label":"皮山县"},{"value":"653224","label":"洛浦县"},{"value":"653225","label":"策勒县"},{"value":"653226","label":"于田县"},{"value":"653227","label":"民丰县"}]},{"value":"654000","label":"伊犁哈萨克自治州","children":[{"value":"654002","label":"伊宁市"},{"value":"654003","label":"奎屯市"},{"value":"654021","label":"伊宁县"},{"value":"654022","label":"察布查尔锡伯自治县"},{"value":"654023","label":"霍城县"},{"value":"654024","label":"巩留县"},{"value":"654025","label":"新源县"},{"value":"654026","label":"昭苏县"},{"value":"654027","label":"特克斯县"},{"value":"654028","label":"尼勒克县"}]},{"value":"654200","label":"塔城地区","children":[{"value":"654201","label":"塔城市"},{"value":"654202","label":"乌苏市"},{"value":"654221","label":"额敏县"},{"value":"654223","label":"沙湾县"},{"value":"654224","label":"托里县"},{"value":"654225","label":"裕民县"},{"value":"654226","label":"和布克赛尔蒙古自治县"}]},{"value":"654300","label":"阿勒泰地区","children":[{"value":"654301","label":"阿勒泰市"},{"value":"654321","label":"布尔津县"},{"value":"654322","label":"富蕴县"},{"value":"654323","label":"福海县"},{"value":"654324","label":"哈巴河县"},{"value":"654325","label":"青河县"},{"value":"654326","label":"吉木乃县"}]},{"value":"659000","label":"自治区直辖县级行政区划","children":[{"value":"659001","label":"石河子市"},{"value":"659002","label":"阿拉尔市"},{"value":"659003","label":"图木舒克市"},{"value":"659004","label":"五家渠市"}]}]},{"value":"710000","label":"台湾省"},{"value":"810000","label":"香港特别行政区"},{"value":"820000","label":"澳门特别行政区"}] \ No newline at end of file diff --git a/web-admin/src/assets/data/china-region-flat.json b/web-admin/src/assets/data/china-region-flat.json new file mode 100644 index 00000000..df739788 --- /dev/null +++ b/web-admin/src/assets/data/china-region-flat.json @@ -0,0 +1 @@ +[{"code":"110000","parentCode":null,"name":"北京市","level":1,"sort":1},{"code":"110100","parentCode":"110000","name":"北京市辖区","level":2,"sort":2},{"code":"110101","parentCode":"110100","name":"东城区","level":3,"sort":3},{"code":"110102","parentCode":"110100","name":"西城区","level":3,"sort":4},{"code":"110105","parentCode":"110100","name":"北京市朝阳区","level":3,"sort":5},{"code":"110106","parentCode":"110100","name":"丰台区","level":3,"sort":6},{"code":"110107","parentCode":"110100","name":"石景山区","level":3,"sort":7},{"code":"110108","parentCode":"110100","name":"海淀区","level":3,"sort":8},{"code":"110109","parentCode":"110100","name":"门头沟区","level":3,"sort":9},{"code":"110111","parentCode":"110100","name":"房山区","level":3,"sort":10},{"code":"110112","parentCode":"110100","name":"北京市通州区","level":3,"sort":11},{"code":"110113","parentCode":"110100","name":"顺义区","level":3,"sort":12},{"code":"110114","parentCode":"110100","name":"昌平区","level":3,"sort":13},{"code":"110115","parentCode":"110100","name":"大兴区","level":3,"sort":14},{"code":"110116","parentCode":"110100","name":"怀柔区","level":3,"sort":15},{"code":"110117","parentCode":"110100","name":"平谷区","level":3,"sort":16},{"code":"110200","parentCode":"110000","name":"北京市县","level":2,"sort":17},{"code":"110228","parentCode":"110200","name":"密云县","level":3,"sort":18},{"code":"110229","parentCode":"110200","name":"延庆县","level":3,"sort":19},{"code":"120000","parentCode":null,"name":"天津市","level":1,"sort":20},{"code":"120100","parentCode":"120000","name":"天津市辖区","level":2,"sort":21},{"code":"120101","parentCode":"120100","name":"天津市和平区","level":3,"sort":22},{"code":"120102","parentCode":"120100","name":"天津市河东区","level":3,"sort":23},{"code":"120103","parentCode":"120100","name":"河西区","level":3,"sort":24},{"code":"120104","parentCode":"120100","name":"南开区","level":3,"sort":25},{"code":"120105","parentCode":"120100","name":"河北区","level":3,"sort":26},{"code":"120106","parentCode":"120100","name":"红桥区","level":3,"sort":27},{"code":"120110","parentCode":"120100","name":"东丽区","level":3,"sort":28},{"code":"120111","parentCode":"120100","name":"西青区","level":3,"sort":29},{"code":"120112","parentCode":"120100","name":"津南区","level":3,"sort":30},{"code":"120113","parentCode":"120100","name":"北辰区","level":3,"sort":31},{"code":"120114","parentCode":"120100","name":"武清区","level":3,"sort":32},{"code":"120115","parentCode":"120100","name":"宝坻区","level":3,"sort":33},{"code":"120116","parentCode":"120100","name":"滨海新区","level":3,"sort":34},{"code":"120200","parentCode":"120000","name":"天津市县","level":2,"sort":35},{"code":"120221","parentCode":"120200","name":"宁河县","level":3,"sort":36},{"code":"120223","parentCode":"120200","name":"静海县","level":3,"sort":37},{"code":"120225","parentCode":"120200","name":"蓟县","level":3,"sort":38},{"code":"130000","parentCode":null,"name":"河北省","level":1,"sort":39},{"code":"130100","parentCode":"130000","name":"石家庄市","level":2,"sort":40},{"code":"130101","parentCode":"130100","name":"石家庄市辖区","level":3,"sort":41},{"code":"130102","parentCode":"130100","name":"石家庄市长安区","level":3,"sort":42},{"code":"130103","parentCode":"130100","name":"石家庄市桥东区","level":3,"sort":43},{"code":"130104","parentCode":"130100","name":"石家庄市桥西区","level":3,"sort":44},{"code":"130105","parentCode":"130100","name":"石家庄市新华区","level":3,"sort":45},{"code":"130107","parentCode":"130100","name":"井陉矿区","level":3,"sort":46},{"code":"130108","parentCode":"130100","name":"裕华区","level":3,"sort":47},{"code":"130121","parentCode":"130100","name":"井陉县","level":3,"sort":48},{"code":"130123","parentCode":"130100","name":"正定县","level":3,"sort":49},{"code":"130124","parentCode":"130100","name":"栾城县","level":3,"sort":50},{"code":"130125","parentCode":"130100","name":"行唐县","level":3,"sort":51},{"code":"130126","parentCode":"130100","name":"灵寿县","level":3,"sort":52},{"code":"130127","parentCode":"130100","name":"高邑县","level":3,"sort":53},{"code":"130128","parentCode":"130100","name":"深泽县","level":3,"sort":54},{"code":"130129","parentCode":"130100","name":"赞皇县","level":3,"sort":55},{"code":"130130","parentCode":"130100","name":"无极县","level":3,"sort":56},{"code":"130131","parentCode":"130100","name":"平山县","level":3,"sort":57},{"code":"130132","parentCode":"130100","name":"元氏县","level":3,"sort":58},{"code":"130133","parentCode":"130100","name":"赵县","level":3,"sort":59},{"code":"130181","parentCode":"130100","name":"辛集市","level":3,"sort":60},{"code":"130182","parentCode":"130100","name":"藁城市","level":3,"sort":61},{"code":"130183","parentCode":"130100","name":"晋州市","level":3,"sort":62},{"code":"130184","parentCode":"130100","name":"新乐市","level":3,"sort":63},{"code":"130185","parentCode":"130100","name":"鹿泉市","level":3,"sort":64},{"code":"130200","parentCode":"130000","name":"唐山市","level":2,"sort":65},{"code":"130201","parentCode":"130200","name":"唐山市辖区","level":3,"sort":66},{"code":"130202","parentCode":"130200","name":"路南区","level":3,"sort":67},{"code":"130203","parentCode":"130200","name":"路北区","level":3,"sort":68},{"code":"130204","parentCode":"130200","name":"古冶区","level":3,"sort":69},{"code":"130205","parentCode":"130200","name":"开平区","level":3,"sort":70},{"code":"130207","parentCode":"130200","name":"丰南区","level":3,"sort":71},{"code":"130208","parentCode":"130200","name":"丰润区","level":3,"sort":72},{"code":"130223","parentCode":"130200","name":"滦县","level":3,"sort":73},{"code":"130224","parentCode":"130200","name":"滦南县","level":3,"sort":74},{"code":"130225","parentCode":"130200","name":"乐亭县","level":3,"sort":75},{"code":"130227","parentCode":"130200","name":"迁西县","level":3,"sort":76},{"code":"130229","parentCode":"130200","name":"玉田县","level":3,"sort":77},{"code":"130230","parentCode":"130200","name":"唐海县","level":3,"sort":78},{"code":"130281","parentCode":"130200","name":"遵化市","level":3,"sort":79},{"code":"130283","parentCode":"130200","name":"迁安市","level":3,"sort":80},{"code":"130300","parentCode":"130000","name":"秦皇岛市","level":2,"sort":81},{"code":"130301","parentCode":"130300","name":"秦皇岛市辖区","level":3,"sort":82},{"code":"130302","parentCode":"130300","name":"海港区","level":3,"sort":83},{"code":"130303","parentCode":"130300","name":"山海关区","level":3,"sort":84},{"code":"130304","parentCode":"130300","name":"北戴河区","level":3,"sort":85},{"code":"130321","parentCode":"130300","name":"青龙满族自治县","level":3,"sort":86},{"code":"130322","parentCode":"130300","name":"昌黎县","level":3,"sort":87},{"code":"130323","parentCode":"130300","name":"抚宁县","level":3,"sort":88},{"code":"130324","parentCode":"130300","name":"卢龙县","level":3,"sort":89},{"code":"130400","parentCode":"130000","name":"邯郸市","level":2,"sort":90},{"code":"130401","parentCode":"130400","name":"邯郸市辖区","level":3,"sort":91},{"code":"130402","parentCode":"130400","name":"邯山区","level":3,"sort":92},{"code":"130403","parentCode":"130400","name":"丛台区","level":3,"sort":93},{"code":"130404","parentCode":"130400","name":"复兴区","level":3,"sort":94},{"code":"130406","parentCode":"130400","name":"峰峰矿区","level":3,"sort":95},{"code":"130421","parentCode":"130400","name":"邯郸县","level":3,"sort":96},{"code":"130423","parentCode":"130400","name":"临漳县","level":3,"sort":97},{"code":"130424","parentCode":"130400","name":"成安县","level":3,"sort":98},{"code":"130425","parentCode":"130400","name":"大名县","level":3,"sort":99},{"code":"130426","parentCode":"130400","name":"涉县","level":3,"sort":100},{"code":"130427","parentCode":"130400","name":"磁县","level":3,"sort":101},{"code":"130428","parentCode":"130400","name":"肥乡县","level":3,"sort":102},{"code":"130429","parentCode":"130400","name":"永年县","level":3,"sort":103},{"code":"130430","parentCode":"130400","name":"邱县","level":3,"sort":104},{"code":"130431","parentCode":"130400","name":"鸡泽县","level":3,"sort":105},{"code":"130432","parentCode":"130400","name":"广平县","level":3,"sort":106},{"code":"130433","parentCode":"130400","name":"馆陶县","level":3,"sort":107},{"code":"130434","parentCode":"130400","name":"魏县","level":3,"sort":108},{"code":"130435","parentCode":"130400","name":"曲周县","level":3,"sort":109},{"code":"130481","parentCode":"130400","name":"武安市","level":3,"sort":110},{"code":"130500","parentCode":"130000","name":"邢台市","level":2,"sort":111},{"code":"130501","parentCode":"130500","name":"邢台市辖区","level":3,"sort":112},{"code":"130502","parentCode":"130500","name":"邢台市桥东区","level":3,"sort":113},{"code":"130503","parentCode":"130500","name":"邢台市桥西区","level":3,"sort":114},{"code":"130521","parentCode":"130500","name":"邢台县","level":3,"sort":115},{"code":"130522","parentCode":"130500","name":"临城县","level":3,"sort":116},{"code":"130523","parentCode":"130500","name":"内丘县","level":3,"sort":117},{"code":"130524","parentCode":"130500","name":"柏乡县","level":3,"sort":118},{"code":"130525","parentCode":"130500","name":"隆尧县","level":3,"sort":119},{"code":"130526","parentCode":"130500","name":"任县","level":3,"sort":120},{"code":"130527","parentCode":"130500","name":"南和县","level":3,"sort":121},{"code":"130528","parentCode":"130500","name":"宁晋县","level":3,"sort":122},{"code":"130529","parentCode":"130500","name":"巨鹿县","level":3,"sort":123},{"code":"130530","parentCode":"130500","name":"新河县","level":3,"sort":124},{"code":"130531","parentCode":"130500","name":"广宗县","level":3,"sort":125},{"code":"130532","parentCode":"130500","name":"平乡县","level":3,"sort":126},{"code":"130533","parentCode":"130500","name":"威县","level":3,"sort":127},{"code":"130534","parentCode":"130500","name":"清河县","level":3,"sort":128},{"code":"130535","parentCode":"130500","name":"临西县","level":3,"sort":129},{"code":"130581","parentCode":"130500","name":"南宫市","level":3,"sort":130},{"code":"130582","parentCode":"130500","name":"沙河市","level":3,"sort":131},{"code":"130600","parentCode":"130000","name":"保定市","level":2,"sort":132},{"code":"130601","parentCode":"130600","name":"保定市辖区","level":3,"sort":133},{"code":"130602","parentCode":"130600","name":"保定市新市区","level":3,"sort":134},{"code":"130603","parentCode":"130600","name":"北市区","level":3,"sort":135},{"code":"130604","parentCode":"130600","name":"南市区","level":3,"sort":136},{"code":"130621","parentCode":"130600","name":"满城县","level":3,"sort":137},{"code":"130622","parentCode":"130600","name":"清苑县","level":3,"sort":138},{"code":"130623","parentCode":"130600","name":"涞水县","level":3,"sort":139},{"code":"130624","parentCode":"130600","name":"阜平县","level":3,"sort":140},{"code":"130625","parentCode":"130600","name":"徐水县","level":3,"sort":141},{"code":"130626","parentCode":"130600","name":"定兴县","level":3,"sort":142},{"code":"130627","parentCode":"130600","name":"唐县","level":3,"sort":143},{"code":"130628","parentCode":"130600","name":"高阳县","level":3,"sort":144},{"code":"130629","parentCode":"130600","name":"容城县","level":3,"sort":145},{"code":"130630","parentCode":"130600","name":"涞源县","level":3,"sort":146},{"code":"130631","parentCode":"130600","name":"望都县","level":3,"sort":147},{"code":"130632","parentCode":"130600","name":"安新县","level":3,"sort":148},{"code":"130633","parentCode":"130600","name":"易县","level":3,"sort":149},{"code":"130634","parentCode":"130600","name":"曲阳县","level":3,"sort":150},{"code":"130635","parentCode":"130600","name":"蠡县","level":3,"sort":151},{"code":"130636","parentCode":"130600","name":"顺平县","level":3,"sort":152},{"code":"130637","parentCode":"130600","name":"博野县","level":3,"sort":153},{"code":"130638","parentCode":"130600","name":"雄县","level":3,"sort":154},{"code":"130681","parentCode":"130600","name":"涿州市","level":3,"sort":155},{"code":"130682","parentCode":"130600","name":"定州市","level":3,"sort":156},{"code":"130683","parentCode":"130600","name":"安国市","level":3,"sort":157},{"code":"130684","parentCode":"130600","name":"高碑店市","level":3,"sort":158},{"code":"130700","parentCode":"130000","name":"张家口市","level":2,"sort":159},{"code":"130701","parentCode":"130700","name":"张家口市市辖区","level":3,"sort":160},{"code":"130702","parentCode":"130700","name":"桥东区","level":3,"sort":161},{"code":"130703","parentCode":"130700","name":"桥西区","level":3,"sort":162},{"code":"130705","parentCode":"130700","name":"宣化区","level":3,"sort":163},{"code":"130706","parentCode":"130700","name":"下花园区","level":3,"sort":164},{"code":"130721","parentCode":"130700","name":"宣化县","level":3,"sort":165},{"code":"130722","parentCode":"130700","name":"张北县","level":3,"sort":166},{"code":"130723","parentCode":"130700","name":"康保县","level":3,"sort":167},{"code":"130724","parentCode":"130700","name":"沽源县","level":3,"sort":168},{"code":"130725","parentCode":"130700","name":"尚义县","level":3,"sort":169},{"code":"130726","parentCode":"130700","name":"蔚县","level":3,"sort":170},{"code":"130727","parentCode":"130700","name":"阳原县","level":3,"sort":171},{"code":"130728","parentCode":"130700","name":"怀安县","level":3,"sort":172},{"code":"130729","parentCode":"130700","name":"万全县","level":3,"sort":173},{"code":"130730","parentCode":"130700","name":"怀来县","level":3,"sort":174},{"code":"130731","parentCode":"130700","name":"涿鹿县","level":3,"sort":175},{"code":"130732","parentCode":"130700","name":"赤城县","level":3,"sort":176},{"code":"130733","parentCode":"130700","name":"崇礼县","level":3,"sort":177},{"code":"130800","parentCode":"130000","name":"承德市","level":2,"sort":178},{"code":"130801","parentCode":"130800","name":"承德市市辖区","level":3,"sort":179},{"code":"130802","parentCode":"130800","name":"承德市双桥区","level":3,"sort":180},{"code":"130803","parentCode":"130800","name":"双滦区","level":3,"sort":181},{"code":"130804","parentCode":"130800","name":"鹰手营子矿区","level":3,"sort":182},{"code":"130821","parentCode":"130800","name":"承德县","level":3,"sort":183},{"code":"130822","parentCode":"130800","name":"兴隆县","level":3,"sort":184},{"code":"130823","parentCode":"130800","name":"平泉县","level":3,"sort":185},{"code":"130824","parentCode":"130800","name":"滦平县","level":3,"sort":186},{"code":"130825","parentCode":"130800","name":"隆化县","level":3,"sort":187},{"code":"130826","parentCode":"130800","name":"丰宁满族自治县","level":3,"sort":188},{"code":"130827","parentCode":"130800","name":"宽城满族自治县","level":3,"sort":189},{"code":"130828","parentCode":"130800","name":"围场满族蒙古族自治县","level":3,"sort":190},{"code":"130900","parentCode":"130000","name":"沧州市","level":2,"sort":191},{"code":"130901","parentCode":"130900","name":"沧州市市辖区","level":3,"sort":192},{"code":"130902","parentCode":"130900","name":"沧州市新华区","level":3,"sort":193},{"code":"130903","parentCode":"130900","name":"运河区","level":3,"sort":194},{"code":"130921","parentCode":"130900","name":"沧县","level":3,"sort":195},{"code":"130922","parentCode":"130900","name":"青县","level":3,"sort":196},{"code":"130923","parentCode":"130900","name":"东光县","level":3,"sort":197},{"code":"130924","parentCode":"130900","name":"海兴县","level":3,"sort":198},{"code":"130925","parentCode":"130900","name":"盐山县","level":3,"sort":199},{"code":"130926","parentCode":"130900","name":"肃宁县","level":3,"sort":200},{"code":"130927","parentCode":"130900","name":"南皮县","level":3,"sort":201},{"code":"130928","parentCode":"130900","name":"吴桥县","level":3,"sort":202},{"code":"130929","parentCode":"130900","name":"献县","level":3,"sort":203},{"code":"130930","parentCode":"130900","name":"孟村回族自治县","level":3,"sort":204},{"code":"130981","parentCode":"130900","name":"泊头市","level":3,"sort":205},{"code":"130982","parentCode":"130900","name":"任丘市","level":3,"sort":206},{"code":"130983","parentCode":"130900","name":"黄骅市","level":3,"sort":207},{"code":"130984","parentCode":"130900","name":"河间市","level":3,"sort":208},{"code":"131000","parentCode":"130000","name":"廊坊市","level":2,"sort":209},{"code":"131001","parentCode":"131000","name":"廊坊市市辖区","level":3,"sort":210},{"code":"131002","parentCode":"131000","name":"安次区","level":3,"sort":211},{"code":"131003","parentCode":"131000","name":"广阳区","level":3,"sort":212},{"code":"131022","parentCode":"131000","name":"固安县","level":3,"sort":213},{"code":"131023","parentCode":"131000","name":"永清县","level":3,"sort":214},{"code":"131024","parentCode":"131000","name":"香河县","level":3,"sort":215},{"code":"131025","parentCode":"131000","name":"大城县","level":3,"sort":216},{"code":"131026","parentCode":"131000","name":"文安县","level":3,"sort":217},{"code":"131028","parentCode":"131000","name":"大厂回族自治县","level":3,"sort":218},{"code":"131081","parentCode":"131000","name":"霸州市","level":3,"sort":219},{"code":"131082","parentCode":"131000","name":"三河市","level":3,"sort":220},{"code":"131100","parentCode":"130000","name":"衡水市","level":2,"sort":221},{"code":"131101","parentCode":"131100","name":"衡水市市辖区","level":3,"sort":222},{"code":"131102","parentCode":"131100","name":"桃城区","level":3,"sort":223},{"code":"131121","parentCode":"131100","name":"枣强县","level":3,"sort":224},{"code":"131122","parentCode":"131100","name":"武邑县","level":3,"sort":225},{"code":"131123","parentCode":"131100","name":"武强县","level":3,"sort":226},{"code":"131124","parentCode":"131100","name":"饶阳县","level":3,"sort":227},{"code":"131125","parentCode":"131100","name":"安平县","level":3,"sort":228},{"code":"131126","parentCode":"131100","name":"故城县","level":3,"sort":229},{"code":"131127","parentCode":"131100","name":"景县","level":3,"sort":230},{"code":"131128","parentCode":"131100","name":"阜城县","level":3,"sort":231},{"code":"131181","parentCode":"131100","name":"冀州市","level":3,"sort":232},{"code":"131182","parentCode":"131100","name":"深州市","level":3,"sort":233},{"code":"140000","parentCode":null,"name":"山西省","level":1,"sort":234},{"code":"140100","parentCode":"140000","name":"太原市","level":2,"sort":235},{"code":"140101","parentCode":"140100","name":"太原市市辖区","level":3,"sort":236},{"code":"140105","parentCode":"140100","name":"小店区","level":3,"sort":237},{"code":"140106","parentCode":"140100","name":"迎泽区","level":3,"sort":238},{"code":"140107","parentCode":"140100","name":"杏花岭区","level":3,"sort":239},{"code":"140108","parentCode":"140100","name":"尖草坪区","level":3,"sort":240},{"code":"140109","parentCode":"140100","name":"万柏林区","level":3,"sort":241},{"code":"140110","parentCode":"140100","name":"晋源区","level":3,"sort":242},{"code":"140121","parentCode":"140100","name":"清徐县","level":3,"sort":243},{"code":"140122","parentCode":"140100","name":"阳曲县","level":3,"sort":244},{"code":"140123","parentCode":"140100","name":"娄烦县","level":3,"sort":245},{"code":"140181","parentCode":"140100","name":"古交市","level":3,"sort":246},{"code":"140200","parentCode":"140000","name":"大同市","level":2,"sort":247},{"code":"140201","parentCode":"140200","name":"大同市市辖区","level":3,"sort":248},{"code":"140202","parentCode":"140200","name":"大同市城区","level":3,"sort":249},{"code":"140203","parentCode":"140200","name":"大同市矿区","level":3,"sort":250},{"code":"140211","parentCode":"140200","name":"南郊区","level":3,"sort":251},{"code":"140212","parentCode":"140200","name":"新荣区","level":3,"sort":252},{"code":"140221","parentCode":"140200","name":"阳高县","level":3,"sort":253},{"code":"140222","parentCode":"140200","name":"天镇县","level":3,"sort":254},{"code":"140223","parentCode":"140200","name":"广灵县","level":3,"sort":255},{"code":"140224","parentCode":"140200","name":"灵丘县","level":3,"sort":256},{"code":"140225","parentCode":"140200","name":"浑源县","level":3,"sort":257},{"code":"140226","parentCode":"140200","name":"左云县","level":3,"sort":258},{"code":"140227","parentCode":"140200","name":"大同县","level":3,"sort":259},{"code":"140300","parentCode":"140000","name":"阳泉市","level":2,"sort":260},{"code":"140301","parentCode":"140300","name":"阳泉市市辖区","level":3,"sort":261},{"code":"140302","parentCode":"140300","name":"阳泉市城区","level":3,"sort":262},{"code":"140303","parentCode":"140300","name":"矿区","level":3,"sort":263},{"code":"140311","parentCode":"140300","name":"阳泉市郊区","level":3,"sort":264},{"code":"140321","parentCode":"140300","name":"平定县","level":3,"sort":265},{"code":"140322","parentCode":"140300","name":"盂县","level":3,"sort":266},{"code":"140400","parentCode":"140000","name":"长治市","level":2,"sort":267},{"code":"140401","parentCode":"140400","name":"长治市市辖区","level":3,"sort":268},{"code":"140402","parentCode":"140400","name":"长治市城区","level":3,"sort":269},{"code":"140411","parentCode":"140400","name":"长治市郊区","level":3,"sort":270},{"code":"140421","parentCode":"140400","name":"长治县","level":3,"sort":271},{"code":"140423","parentCode":"140400","name":"襄垣县","level":3,"sort":272},{"code":"140424","parentCode":"140400","name":"屯留县","level":3,"sort":273},{"code":"140425","parentCode":"140400","name":"平顺县","level":3,"sort":274},{"code":"140426","parentCode":"140400","name":"黎城县","level":3,"sort":275},{"code":"140427","parentCode":"140400","name":"壶关县","level":3,"sort":276},{"code":"140428","parentCode":"140400","name":"长子县","level":3,"sort":277},{"code":"140429","parentCode":"140400","name":"武乡县","level":3,"sort":278},{"code":"140430","parentCode":"140400","name":"沁县","level":3,"sort":279},{"code":"140431","parentCode":"140400","name":"沁源县","level":3,"sort":280},{"code":"140481","parentCode":"140400","name":"潞城市","level":3,"sort":281},{"code":"140500","parentCode":"140000","name":"晋城市","level":2,"sort":282},{"code":"140501","parentCode":"140500","name":"晋城市市辖区","level":3,"sort":283},{"code":"140502","parentCode":"140500","name":"晋城市城区","level":3,"sort":284},{"code":"140521","parentCode":"140500","name":"沁水县","level":3,"sort":285},{"code":"140522","parentCode":"140500","name":"阳城县","level":3,"sort":286},{"code":"140524","parentCode":"140500","name":"陵川县","level":3,"sort":287},{"code":"140525","parentCode":"140500","name":"泽州县","level":3,"sort":288},{"code":"140581","parentCode":"140500","name":"高平市","level":3,"sort":289},{"code":"140600","parentCode":"140000","name":"朔州市","level":2,"sort":290},{"code":"140601","parentCode":"140600","name":"朔州市市辖区","level":3,"sort":291},{"code":"140602","parentCode":"140600","name":"朔城区","level":3,"sort":292},{"code":"140603","parentCode":"140600","name":"平鲁区","level":3,"sort":293},{"code":"140621","parentCode":"140600","name":"山阴县","level":3,"sort":294},{"code":"140622","parentCode":"140600","name":"应县","level":3,"sort":295},{"code":"140623","parentCode":"140600","name":"右玉县","level":3,"sort":296},{"code":"140624","parentCode":"140600","name":"怀仁县","level":3,"sort":297},{"code":"140700","parentCode":"140000","name":"晋中市","level":2,"sort":298},{"code":"140701","parentCode":"140700","name":"晋中市市辖区","level":3,"sort":299},{"code":"140702","parentCode":"140700","name":"榆次区","level":3,"sort":300},{"code":"140721","parentCode":"140700","name":"榆社县","level":3,"sort":301},{"code":"140722","parentCode":"140700","name":"左权县","level":3,"sort":302},{"code":"140723","parentCode":"140700","name":"和顺县","level":3,"sort":303},{"code":"140724","parentCode":"140700","name":"昔阳县","level":3,"sort":304},{"code":"140725","parentCode":"140700","name":"寿阳县","level":3,"sort":305},{"code":"140726","parentCode":"140700","name":"太谷县","level":3,"sort":306},{"code":"140727","parentCode":"140700","name":"祁县","level":3,"sort":307},{"code":"140728","parentCode":"140700","name":"平遥县","level":3,"sort":308},{"code":"140729","parentCode":"140700","name":"灵石县","level":3,"sort":309},{"code":"140781","parentCode":"140700","name":"介休市","level":3,"sort":310},{"code":"140800","parentCode":"140000","name":"运城市","level":2,"sort":311},{"code":"140801","parentCode":"140800","name":"运城市市辖区","level":3,"sort":312},{"code":"140802","parentCode":"140800","name":"盐湖区","level":3,"sort":313},{"code":"140821","parentCode":"140800","name":"临猗县","level":3,"sort":314},{"code":"140822","parentCode":"140800","name":"万荣县","level":3,"sort":315},{"code":"140823","parentCode":"140800","name":"闻喜县","level":3,"sort":316},{"code":"140824","parentCode":"140800","name":"稷山县","level":3,"sort":317},{"code":"140825","parentCode":"140800","name":"新绛县","level":3,"sort":318},{"code":"140826","parentCode":"140800","name":"绛县","level":3,"sort":319},{"code":"140827","parentCode":"140800","name":"垣曲县","level":3,"sort":320},{"code":"140828","parentCode":"140800","name":"夏县","level":3,"sort":321},{"code":"140829","parentCode":"140800","name":"平陆县","level":3,"sort":322},{"code":"140830","parentCode":"140800","name":"芮城县","level":3,"sort":323},{"code":"140881","parentCode":"140800","name":"永济市","level":3,"sort":324},{"code":"140882","parentCode":"140800","name":"河津市","level":3,"sort":325},{"code":"140900","parentCode":"140000","name":"忻州市","level":2,"sort":326},{"code":"140901","parentCode":"140900","name":"忻州市市辖区","level":3,"sort":327},{"code":"140902","parentCode":"140900","name":"忻府区","level":3,"sort":328},{"code":"140921","parentCode":"140900","name":"定襄县","level":3,"sort":329},{"code":"140922","parentCode":"140900","name":"五台县","level":3,"sort":330},{"code":"140923","parentCode":"140900","name":"代县","level":3,"sort":331},{"code":"140924","parentCode":"140900","name":"繁峙县","level":3,"sort":332},{"code":"140925","parentCode":"140900","name":"宁武县","level":3,"sort":333},{"code":"140926","parentCode":"140900","name":"静乐县","level":3,"sort":334},{"code":"140927","parentCode":"140900","name":"神池县","level":3,"sort":335},{"code":"140928","parentCode":"140900","name":"五寨县","level":3,"sort":336},{"code":"140929","parentCode":"140900","name":"岢岚县","level":3,"sort":337},{"code":"140930","parentCode":"140900","name":"河曲县","level":3,"sort":338},{"code":"140931","parentCode":"140900","name":"保德县","level":3,"sort":339},{"code":"140932","parentCode":"140900","name":"偏关县","level":3,"sort":340},{"code":"140981","parentCode":"140900","name":"原平市","level":3,"sort":341},{"code":"141000","parentCode":"140000","name":"临汾市","level":2,"sort":342},{"code":"141001","parentCode":"141000","name":"临汾市市辖区","level":3,"sort":343},{"code":"141002","parentCode":"141000","name":"尧都区","level":3,"sort":344},{"code":"141021","parentCode":"141000","name":"曲沃县","level":3,"sort":345},{"code":"141022","parentCode":"141000","name":"翼城县","level":3,"sort":346},{"code":"141023","parentCode":"141000","name":"襄汾县","level":3,"sort":347},{"code":"141024","parentCode":"141000","name":"洪洞县","level":3,"sort":348},{"code":"141025","parentCode":"141000","name":"古县","level":3,"sort":349},{"code":"141026","parentCode":"141000","name":"安泽县","level":3,"sort":350},{"code":"141027","parentCode":"141000","name":"浮山县","level":3,"sort":351},{"code":"141028","parentCode":"141000","name":"吉县","level":3,"sort":352},{"code":"141029","parentCode":"141000","name":"乡宁县","level":3,"sort":353},{"code":"141030","parentCode":"141000","name":"大宁县","level":3,"sort":354},{"code":"141031","parentCode":"141000","name":"隰县","level":3,"sort":355},{"code":"141032","parentCode":"141000","name":"永和县","level":3,"sort":356},{"code":"141033","parentCode":"141000","name":"蒲县","level":3,"sort":357},{"code":"141034","parentCode":"141000","name":"汾西县","level":3,"sort":358},{"code":"141081","parentCode":"141000","name":"侯马市","level":3,"sort":359},{"code":"141082","parentCode":"141000","name":"霍州市","level":3,"sort":360},{"code":"141100","parentCode":"140000","name":"吕梁市","level":2,"sort":361},{"code":"141101","parentCode":"141100","name":"吕梁市市辖区","level":3,"sort":362},{"code":"141102","parentCode":"141100","name":"离石区","level":3,"sort":363},{"code":"141121","parentCode":"141100","name":"文水县","level":3,"sort":364},{"code":"141122","parentCode":"141100","name":"交城县","level":3,"sort":365},{"code":"141123","parentCode":"141100","name":"兴县","level":3,"sort":366},{"code":"141124","parentCode":"141100","name":"临县","level":3,"sort":367},{"code":"141125","parentCode":"141100","name":"柳林县","level":3,"sort":368},{"code":"141126","parentCode":"141100","name":"石楼县","level":3,"sort":369},{"code":"141127","parentCode":"141100","name":"岚县","level":3,"sort":370},{"code":"141128","parentCode":"141100","name":"方山县","level":3,"sort":371},{"code":"141129","parentCode":"141100","name":"中阳县","level":3,"sort":372},{"code":"141130","parentCode":"141100","name":"交口县","level":3,"sort":373},{"code":"141181","parentCode":"141100","name":"孝义市","level":3,"sort":374},{"code":"141182","parentCode":"141100","name":"汾阳市","level":3,"sort":375},{"code":"150000","parentCode":null,"name":"内蒙古自治区","level":1,"sort":376},{"code":"150100","parentCode":"150000","name":"呼和浩特市","level":2,"sort":377},{"code":"150101","parentCode":"150100","name":"呼和浩特市市辖区","level":3,"sort":378},{"code":"150102","parentCode":"150100","name":"呼和浩特市新城区","level":3,"sort":379},{"code":"150103","parentCode":"150100","name":"回民区","level":3,"sort":380},{"code":"150104","parentCode":"150100","name":"玉泉区","level":3,"sort":381},{"code":"150105","parentCode":"150100","name":"赛罕区","level":3,"sort":382},{"code":"150121","parentCode":"150100","name":"土默特左旗","level":3,"sort":383},{"code":"150122","parentCode":"150100","name":"托克托县","level":3,"sort":384},{"code":"150123","parentCode":"150100","name":"和林格尔县","level":3,"sort":385},{"code":"150124","parentCode":"150100","name":"清水河县","level":3,"sort":386},{"code":"150125","parentCode":"150100","name":"武川县","level":3,"sort":387},{"code":"150200","parentCode":"150000","name":"包头市","level":2,"sort":388},{"code":"150201","parentCode":"150200","name":"包头市市辖区","level":3,"sort":389},{"code":"150202","parentCode":"150200","name":"东河区","level":3,"sort":390},{"code":"150203","parentCode":"150200","name":"昆都仑区","level":3,"sort":391},{"code":"150204","parentCode":"150200","name":"包头市青山区","level":3,"sort":392},{"code":"150205","parentCode":"150200","name":"石拐区","level":3,"sort":393},{"code":"150206","parentCode":"150200","name":"白云鄂博矿区","level":3,"sort":394},{"code":"150207","parentCode":"150200","name":"九原区","level":3,"sort":395},{"code":"150221","parentCode":"150200","name":"土默特右旗","level":3,"sort":396},{"code":"150222","parentCode":"150200","name":"固阳县","level":3,"sort":397},{"code":"150223","parentCode":"150200","name":"达尔罕茂明安联合旗","level":3,"sort":398},{"code":"150300","parentCode":"150000","name":"乌海市","level":2,"sort":399},{"code":"150301","parentCode":"150300","name":"乌海市市辖区","level":3,"sort":400},{"code":"150302","parentCode":"150300","name":"海勃湾区","level":3,"sort":401},{"code":"150303","parentCode":"150300","name":"海南区","level":3,"sort":402},{"code":"150304","parentCode":"150300","name":"乌达区","level":3,"sort":403},{"code":"150400","parentCode":"150000","name":"赤峰市","level":2,"sort":404},{"code":"150401","parentCode":"150400","name":"赤峰市市辖区","level":3,"sort":405},{"code":"150402","parentCode":"150400","name":"红山区","level":3,"sort":406},{"code":"150403","parentCode":"150400","name":"元宝山区","level":3,"sort":407},{"code":"150404","parentCode":"150400","name":"松山区","level":3,"sort":408},{"code":"150421","parentCode":"150400","name":"阿鲁科尔沁旗","level":3,"sort":409},{"code":"150422","parentCode":"150400","name":"巴林左旗","level":3,"sort":410},{"code":"150423","parentCode":"150400","name":"巴林右旗","level":3,"sort":411},{"code":"150424","parentCode":"150400","name":"林西县","level":3,"sort":412},{"code":"150425","parentCode":"150400","name":"克什克腾旗","level":3,"sort":413},{"code":"150426","parentCode":"150400","name":"翁牛特旗","level":3,"sort":414},{"code":"150428","parentCode":"150400","name":"喀喇沁旗","level":3,"sort":415},{"code":"150429","parentCode":"150400","name":"宁城县","level":3,"sort":416},{"code":"150430","parentCode":"150400","name":"敖汉旗","level":3,"sort":417},{"code":"150500","parentCode":"150000","name":"通辽市","level":2,"sort":418},{"code":"150501","parentCode":"150500","name":"通辽市市辖区","level":3,"sort":419},{"code":"150502","parentCode":"150500","name":"科尔沁区","level":3,"sort":420},{"code":"150521","parentCode":"150500","name":"科尔沁左翼中旗","level":3,"sort":421},{"code":"150522","parentCode":"150500","name":"科尔沁左翼后旗","level":3,"sort":422},{"code":"150523","parentCode":"150500","name":"开鲁县","level":3,"sort":423},{"code":"150524","parentCode":"150500","name":"库伦旗","level":3,"sort":424},{"code":"150525","parentCode":"150500","name":"奈曼旗","level":3,"sort":425},{"code":"150526","parentCode":"150500","name":"扎鲁特旗","level":3,"sort":426},{"code":"150581","parentCode":"150500","name":"霍林郭勒市","level":3,"sort":427},{"code":"150600","parentCode":"150000","name":"鄂尔多斯市","level":2,"sort":428},{"code":"150601","parentCode":"150600","name":"鄂尔多斯市市辖区","level":3,"sort":429},{"code":"150602","parentCode":"150600","name":"东胜区","level":3,"sort":430},{"code":"150621","parentCode":"150600","name":"达拉特旗","level":3,"sort":431},{"code":"150622","parentCode":"150600","name":"准格尔旗","level":3,"sort":432},{"code":"150623","parentCode":"150600","name":"鄂托克前旗","level":3,"sort":433},{"code":"150624","parentCode":"150600","name":"鄂托克旗","level":3,"sort":434},{"code":"150625","parentCode":"150600","name":"杭锦旗","level":3,"sort":435},{"code":"150626","parentCode":"150600","name":"乌审旗","level":3,"sort":436},{"code":"150627","parentCode":"150600","name":"伊金霍洛旗","level":3,"sort":437},{"code":"150700","parentCode":"150000","name":"呼伦贝尔市","level":2,"sort":438},{"code":"150701","parentCode":"150700","name":"呼伦贝尔市市辖区","level":3,"sort":439},{"code":"150702","parentCode":"150700","name":"海拉尔区","level":3,"sort":440},{"code":"150721","parentCode":"150700","name":"阿荣旗","level":3,"sort":441},{"code":"150722","parentCode":"150700","name":"莫力达瓦达斡尔族自治旗","level":3,"sort":442},{"code":"150723","parentCode":"150700","name":"鄂伦春自治旗","level":3,"sort":443},{"code":"150724","parentCode":"150700","name":"鄂温克族自治旗","level":3,"sort":444},{"code":"150725","parentCode":"150700","name":"陈巴尔虎旗","level":3,"sort":445},{"code":"150726","parentCode":"150700","name":"新巴尔虎左旗","level":3,"sort":446},{"code":"150727","parentCode":"150700","name":"新巴尔虎右旗","level":3,"sort":447},{"code":"150781","parentCode":"150700","name":"满洲里市","level":3,"sort":448},{"code":"150782","parentCode":"150700","name":"牙克石市","level":3,"sort":449},{"code":"150783","parentCode":"150700","name":"扎兰屯市","level":3,"sort":450},{"code":"150784","parentCode":"150700","name":"额尔古纳市","level":3,"sort":451},{"code":"150785","parentCode":"150700","name":"根河市","level":3,"sort":452},{"code":"150800","parentCode":"150000","name":"巴彦淖尔市","level":2,"sort":453},{"code":"150801","parentCode":"150800","name":"巴彦淖尔市市辖区","level":3,"sort":454},{"code":"150802","parentCode":"150800","name":"临河区","level":3,"sort":455},{"code":"150821","parentCode":"150800","name":"五原县","level":3,"sort":456},{"code":"150822","parentCode":"150800","name":"磴口县","level":3,"sort":457},{"code":"150823","parentCode":"150800","name":"乌拉特前旗","level":3,"sort":458},{"code":"150824","parentCode":"150800","name":"乌拉特中旗","level":3,"sort":459},{"code":"150825","parentCode":"150800","name":"乌拉特后旗","level":3,"sort":460},{"code":"150826","parentCode":"150800","name":"杭锦后旗","level":3,"sort":461},{"code":"150900","parentCode":"150000","name":"乌兰察布市","level":2,"sort":462},{"code":"150901","parentCode":"150900","name":"乌兰察布市市辖区","level":3,"sort":463},{"code":"150902","parentCode":"150900","name":"集宁区","level":3,"sort":464},{"code":"150921","parentCode":"150900","name":"卓资县","level":3,"sort":465},{"code":"150922","parentCode":"150900","name":"化德县","level":3,"sort":466},{"code":"150923","parentCode":"150900","name":"商都县","level":3,"sort":467},{"code":"150924","parentCode":"150900","name":"兴和县","level":3,"sort":468},{"code":"150925","parentCode":"150900","name":"凉城县","level":3,"sort":469},{"code":"150926","parentCode":"150900","name":"察哈尔右翼前旗","level":3,"sort":470},{"code":"150927","parentCode":"150900","name":"察哈尔右翼中旗","level":3,"sort":471},{"code":"150928","parentCode":"150900","name":"察哈尔右翼后旗","level":3,"sort":472},{"code":"150929","parentCode":"150900","name":"四子王旗","level":3,"sort":473},{"code":"150981","parentCode":"150900","name":"丰镇市","level":3,"sort":474},{"code":"152200","parentCode":"150000","name":"兴安盟","level":2,"sort":475},{"code":"152201","parentCode":"152200","name":"乌兰浩特市","level":3,"sort":476},{"code":"152202","parentCode":"152200","name":"阿尔山市","level":3,"sort":477},{"code":"152221","parentCode":"152200","name":"科尔沁右翼前旗","level":3,"sort":478},{"code":"152222","parentCode":"152200","name":"科尔沁右翼中旗","level":3,"sort":479},{"code":"152223","parentCode":"152200","name":"扎赉特旗","level":3,"sort":480},{"code":"152224","parentCode":"152200","name":"突泉县","level":3,"sort":481},{"code":"152500","parentCode":"150000","name":"锡林郭勒盟","level":2,"sort":482},{"code":"152501","parentCode":"152500","name":"二连浩特市","level":3,"sort":483},{"code":"152502","parentCode":"152500","name":"锡林浩特市","level":3,"sort":484},{"code":"152522","parentCode":"152500","name":"阿巴嘎旗","level":3,"sort":485},{"code":"152523","parentCode":"152500","name":"苏尼特左旗","level":3,"sort":486},{"code":"152524","parentCode":"152500","name":"苏尼特右旗","level":3,"sort":487},{"code":"152525","parentCode":"152500","name":"东乌珠穆沁旗","level":3,"sort":488},{"code":"152526","parentCode":"152500","name":"西乌珠穆沁旗","level":3,"sort":489},{"code":"152527","parentCode":"152500","name":"太仆寺旗","level":3,"sort":490},{"code":"152528","parentCode":"152500","name":"镶黄旗","level":3,"sort":491},{"code":"152529","parentCode":"152500","name":"正镶白旗","level":3,"sort":492},{"code":"152530","parentCode":"152500","name":"正蓝旗","level":3,"sort":493},{"code":"152531","parentCode":"152500","name":"多伦县","level":3,"sort":494},{"code":"152900","parentCode":"150000","name":"阿拉善盟","level":2,"sort":495},{"code":"152921","parentCode":"152900","name":"阿拉善左旗","level":3,"sort":496},{"code":"152922","parentCode":"152900","name":"阿拉善右旗","level":3,"sort":497},{"code":"152923","parentCode":"152900","name":"额济纳旗","level":3,"sort":498},{"code":"210000","parentCode":null,"name":"辽宁省","level":1,"sort":499},{"code":"210100","parentCode":"210000","name":"沈阳市","level":2,"sort":500},{"code":"210101","parentCode":"210100","name":"沈阳市市辖区","level":3,"sort":501},{"code":"210102","parentCode":"210100","name":"和平区","level":3,"sort":502},{"code":"210103","parentCode":"210100","name":"沈河区","level":3,"sort":503},{"code":"210104","parentCode":"210100","name":"大东区","level":3,"sort":504},{"code":"210105","parentCode":"210100","name":"皇姑区","level":3,"sort":505},{"code":"210106","parentCode":"210100","name":"沈阳市铁西区","level":3,"sort":506},{"code":"210111","parentCode":"210100","name":"苏家屯区","level":3,"sort":507},{"code":"210112","parentCode":"210100","name":"东陵区","level":3,"sort":508},{"code":"210113","parentCode":"210100","name":"沈北新区","level":3,"sort":509},{"code":"210114","parentCode":"210100","name":"于洪区","level":3,"sort":510},{"code":"210122","parentCode":"210100","name":"辽中县","level":3,"sort":511},{"code":"210123","parentCode":"210100","name":"康平县","level":3,"sort":512},{"code":"210124","parentCode":"210100","name":"法库县","level":3,"sort":513},{"code":"210181","parentCode":"210100","name":"新民市","level":3,"sort":514},{"code":"210200","parentCode":"210000","name":"大连市","level":2,"sort":515},{"code":"210201","parentCode":"210200","name":"大连市市辖区","level":3,"sort":516},{"code":"210202","parentCode":"210200","name":"中山区","level":3,"sort":517},{"code":"210203","parentCode":"210200","name":"西岗区","level":3,"sort":518},{"code":"210204","parentCode":"210200","name":"沙河口区","level":3,"sort":519},{"code":"210211","parentCode":"210200","name":"甘井子区","level":3,"sort":520},{"code":"210212","parentCode":"210200","name":"旅顺口区","level":3,"sort":521},{"code":"210213","parentCode":"210200","name":"金州区","level":3,"sort":522},{"code":"210224","parentCode":"210200","name":"长海县","level":3,"sort":523},{"code":"210281","parentCode":"210200","name":"瓦房店市","level":3,"sort":524},{"code":"210282","parentCode":"210200","name":"普兰店市","level":3,"sort":525},{"code":"210283","parentCode":"210200","name":"庄河市","level":3,"sort":526},{"code":"210300","parentCode":"210000","name":"鞍山市","level":2,"sort":527},{"code":"210301","parentCode":"210300","name":"鞍山市市辖区","level":3,"sort":528},{"code":"210302","parentCode":"210300","name":"鞍山市铁东区","level":3,"sort":529},{"code":"210303","parentCode":"210300","name":"鞍山市铁西区","level":3,"sort":530},{"code":"210304","parentCode":"210300","name":"立山区","level":3,"sort":531},{"code":"210311","parentCode":"210300","name":"千山区","level":3,"sort":532},{"code":"210321","parentCode":"210300","name":"台安县","level":3,"sort":533},{"code":"210323","parentCode":"210300","name":"岫岩满族自治县","level":3,"sort":534},{"code":"210381","parentCode":"210300","name":"海城市","level":3,"sort":535},{"code":"210400","parentCode":"210000","name":"抚顺市","level":2,"sort":536},{"code":"210401","parentCode":"210400","name":"抚顺市市辖区","level":3,"sort":537},{"code":"210402","parentCode":"210400","name":"新抚区","level":3,"sort":538},{"code":"210403","parentCode":"210400","name":"东洲区","level":3,"sort":539},{"code":"210404","parentCode":"210400","name":"望花区","level":3,"sort":540},{"code":"210411","parentCode":"210400","name":"顺城区","level":3,"sort":541},{"code":"210421","parentCode":"210400","name":"抚顺县","level":3,"sort":542},{"code":"210422","parentCode":"210400","name":"新宾满族自治县","level":3,"sort":543},{"code":"210423","parentCode":"210400","name":"清原满族自治县","level":3,"sort":544},{"code":"210500","parentCode":"210000","name":"本溪市","level":2,"sort":545},{"code":"210501","parentCode":"210500","name":"本溪市市辖区","level":3,"sort":546},{"code":"210502","parentCode":"210500","name":"平山区","level":3,"sort":547},{"code":"210503","parentCode":"210500","name":"溪湖区","level":3,"sort":548},{"code":"210504","parentCode":"210500","name":"明山区","level":3,"sort":549},{"code":"210505","parentCode":"210500","name":"南芬区","level":3,"sort":550},{"code":"210521","parentCode":"210500","name":"本溪满族自治县","level":3,"sort":551},{"code":"210522","parentCode":"210500","name":"桓仁满族自治县","level":3,"sort":552},{"code":"210600","parentCode":"210000","name":"丹东市","level":2,"sort":553},{"code":"210601","parentCode":"210600","name":"丹东市市辖区","level":3,"sort":554},{"code":"210602","parentCode":"210600","name":"元宝区","level":3,"sort":555},{"code":"210603","parentCode":"210600","name":"振兴区","level":3,"sort":556},{"code":"210604","parentCode":"210600","name":"振安区","level":3,"sort":557},{"code":"210624","parentCode":"210600","name":"宽甸满族自治县","level":3,"sort":558},{"code":"210681","parentCode":"210600","name":"东港市","level":3,"sort":559},{"code":"210682","parentCode":"210600","name":"凤城市","level":3,"sort":560},{"code":"210700","parentCode":"210000","name":"锦州市","level":2,"sort":561},{"code":"210701","parentCode":"210700","name":"锦州市市辖区","level":3,"sort":562},{"code":"210702","parentCode":"210700","name":"古塔区","level":3,"sort":563},{"code":"210703","parentCode":"210700","name":"凌河区","level":3,"sort":564},{"code":"210711","parentCode":"210700","name":"太和区","level":3,"sort":565},{"code":"210726","parentCode":"210700","name":"黑山县","level":3,"sort":566},{"code":"210727","parentCode":"210700","name":"义县","level":3,"sort":567},{"code":"210781","parentCode":"210700","name":"凌海市","level":3,"sort":568},{"code":"210782","parentCode":"210700","name":"北镇市","level":3,"sort":569},{"code":"210800","parentCode":"210000","name":"营口市","level":2,"sort":570},{"code":"210801","parentCode":"210800","name":"营口市市辖区","level":3,"sort":571},{"code":"210802","parentCode":"210800","name":"站前区","level":3,"sort":572},{"code":"210803","parentCode":"210800","name":"西市区","level":3,"sort":573},{"code":"210804","parentCode":"210800","name":"鲅鱼圈区","level":3,"sort":574},{"code":"210811","parentCode":"210800","name":"老边区","level":3,"sort":575},{"code":"210881","parentCode":"210800","name":"盖州市","level":3,"sort":576},{"code":"210882","parentCode":"210800","name":"大石桥市","level":3,"sort":577},{"code":"210900","parentCode":"210000","name":"阜新市","level":2,"sort":578},{"code":"210901","parentCode":"210900","name":"阜新市市辖区","level":3,"sort":579},{"code":"210902","parentCode":"210900","name":"阜新市海州区","level":3,"sort":580},{"code":"210903","parentCode":"210900","name":"新邱区","level":3,"sort":581},{"code":"210904","parentCode":"210900","name":"太平区","level":3,"sort":582},{"code":"210905","parentCode":"210900","name":"清河门区","level":3,"sort":583},{"code":"210911","parentCode":"210900","name":"细河区","level":3,"sort":584},{"code":"210921","parentCode":"210900","name":"阜新蒙古族自治县","level":3,"sort":585},{"code":"210922","parentCode":"210900","name":"彰武县","level":3,"sort":586},{"code":"211000","parentCode":"210000","name":"辽阳市","level":2,"sort":587},{"code":"211001","parentCode":"211000","name":"辽阳市市辖区","level":3,"sort":588},{"code":"211002","parentCode":"211000","name":"白塔区","level":3,"sort":589},{"code":"211003","parentCode":"211000","name":"文圣区","level":3,"sort":590},{"code":"211004","parentCode":"211000","name":"宏伟区","level":3,"sort":591},{"code":"211005","parentCode":"211000","name":"弓长岭区","level":3,"sort":592},{"code":"211011","parentCode":"211000","name":"太子河区","level":3,"sort":593},{"code":"211021","parentCode":"211000","name":"辽阳县","level":3,"sort":594},{"code":"211081","parentCode":"211000","name":"灯塔市","level":3,"sort":595},{"code":"211100","parentCode":"210000","name":"盘锦市","level":2,"sort":596},{"code":"211101","parentCode":"211100","name":"盘锦市市辖区","level":3,"sort":597},{"code":"211102","parentCode":"211100","name":"双台子区","level":3,"sort":598},{"code":"211103","parentCode":"211100","name":"兴隆台区","level":3,"sort":599},{"code":"211121","parentCode":"211100","name":"大洼县","level":3,"sort":600},{"code":"211122","parentCode":"211100","name":"盘山县","level":3,"sort":601},{"code":"211200","parentCode":"210000","name":"铁岭市","level":2,"sort":602},{"code":"211201","parentCode":"211200","name":"铁岭市市辖区","level":3,"sort":603},{"code":"211202","parentCode":"211200","name":"银州区","level":3,"sort":604},{"code":"211204","parentCode":"211200","name":"铁岭市清河区","level":3,"sort":605},{"code":"211221","parentCode":"211200","name":"铁岭县","level":3,"sort":606},{"code":"211223","parentCode":"211200","name":"西丰县","level":3,"sort":607},{"code":"211224","parentCode":"211200","name":"昌图县","level":3,"sort":608},{"code":"211281","parentCode":"211200","name":"调兵山市","level":3,"sort":609},{"code":"211282","parentCode":"211200","name":"开原市","level":3,"sort":610},{"code":"211300","parentCode":"210000","name":"朝阳市","level":2,"sort":611},{"code":"211301","parentCode":"211300","name":"朝阳市市辖区","level":3,"sort":612},{"code":"211302","parentCode":"211300","name":"双塔区","level":3,"sort":613},{"code":"211303","parentCode":"211300","name":"龙城区","level":3,"sort":614},{"code":"211321","parentCode":"211300","name":"朝阳县","level":3,"sort":615},{"code":"211322","parentCode":"211300","name":"建平县","level":3,"sort":616},{"code":"211324","parentCode":"211300","name":"喀喇沁左翼蒙古族自治县","level":3,"sort":617},{"code":"211381","parentCode":"211300","name":"北票市","level":3,"sort":618},{"code":"211382","parentCode":"211300","name":"凌源市","level":3,"sort":619},{"code":"211400","parentCode":"210000","name":"葫芦岛市","level":2,"sort":620},{"code":"211401","parentCode":"211400","name":"葫芦岛市市辖区","level":3,"sort":621},{"code":"211402","parentCode":"211400","name":"连山区","level":3,"sort":622},{"code":"211403","parentCode":"211400","name":"龙港区","level":3,"sort":623},{"code":"211404","parentCode":"211400","name":"南票区","level":3,"sort":624},{"code":"211421","parentCode":"211400","name":"绥中县","level":3,"sort":625},{"code":"211422","parentCode":"211400","name":"建昌县","level":3,"sort":626},{"code":"211481","parentCode":"211400","name":"兴城市","level":3,"sort":627},{"code":"220000","parentCode":null,"name":"吉林省","level":1,"sort":628},{"code":"220100","parentCode":"220000","name":"长春市","level":2,"sort":629},{"code":"220101","parentCode":"220100","name":"长春市市辖区","level":3,"sort":630},{"code":"220102","parentCode":"220100","name":"南关区","level":3,"sort":631},{"code":"220103","parentCode":"220100","name":"宽城区","level":3,"sort":632},{"code":"220104","parentCode":"220100","name":"朝阳区","level":3,"sort":633},{"code":"220105","parentCode":"220100","name":"二道区","level":3,"sort":634},{"code":"220106","parentCode":"220100","name":"绿园区","level":3,"sort":635},{"code":"220112","parentCode":"220100","name":"双阳区","level":3,"sort":636},{"code":"220122","parentCode":"220100","name":"农安县","level":3,"sort":637},{"code":"220181","parentCode":"220100","name":"九台市","level":3,"sort":638},{"code":"220182","parentCode":"220100","name":"榆树市","level":3,"sort":639},{"code":"220183","parentCode":"220100","name":"德惠市","level":3,"sort":640},{"code":"220200","parentCode":"220000","name":"吉林市","level":2,"sort":641},{"code":"220201","parentCode":"220200","name":"吉林市市辖区","level":3,"sort":642},{"code":"220202","parentCode":"220200","name":"昌邑区","level":3,"sort":643},{"code":"220203","parentCode":"220200","name":"龙潭区","level":3,"sort":644},{"code":"220204","parentCode":"220200","name":"船营区","level":3,"sort":645},{"code":"220211","parentCode":"220200","name":"丰满区","level":3,"sort":646},{"code":"220221","parentCode":"220200","name":"永吉县","level":3,"sort":647},{"code":"220281","parentCode":"220200","name":"蛟河市","level":3,"sort":648},{"code":"220282","parentCode":"220200","name":"桦甸市","level":3,"sort":649},{"code":"220283","parentCode":"220200","name":"舒兰市","level":3,"sort":650},{"code":"220284","parentCode":"220200","name":"磐石市","level":3,"sort":651},{"code":"220300","parentCode":"220000","name":"四平市","level":2,"sort":652},{"code":"220301","parentCode":"220300","name":"四平市市辖区","level":3,"sort":653},{"code":"220302","parentCode":"220300","name":"铁西区","level":3,"sort":654},{"code":"220303","parentCode":"220300","name":"铁东区","level":3,"sort":655},{"code":"220322","parentCode":"220300","name":"梨树县","level":3,"sort":656},{"code":"220323","parentCode":"220300","name":"伊通满族自治县","level":3,"sort":657},{"code":"220381","parentCode":"220300","name":"公主岭市","level":3,"sort":658},{"code":"220382","parentCode":"220300","name":"双辽市","level":3,"sort":659},{"code":"220400","parentCode":"220000","name":"辽源市","level":2,"sort":660},{"code":"220401","parentCode":"220400","name":"辽源市市辖区","level":3,"sort":661},{"code":"220402","parentCode":"220400","name":"龙山区","level":3,"sort":662},{"code":"220403","parentCode":"220400","name":"辽源市西安区","level":3,"sort":663},{"code":"220421","parentCode":"220400","name":"东丰县","level":3,"sort":664},{"code":"220422","parentCode":"220400","name":"东辽县","level":3,"sort":665},{"code":"220500","parentCode":"220000","name":"通化市","level":2,"sort":666},{"code":"220501","parentCode":"220500","name":"通化市市辖区","level":3,"sort":667},{"code":"220502","parentCode":"220500","name":"东昌区","level":3,"sort":668},{"code":"220503","parentCode":"220500","name":"二道江区","level":3,"sort":669},{"code":"220521","parentCode":"220500","name":"通化县","level":3,"sort":670},{"code":"220523","parentCode":"220500","name":"辉南县","level":3,"sort":671},{"code":"220524","parentCode":"220500","name":"柳河县","level":3,"sort":672},{"code":"220581","parentCode":"220500","name":"梅河口市","level":3,"sort":673},{"code":"220582","parentCode":"220500","name":"集安市","level":3,"sort":674},{"code":"220600","parentCode":"220000","name":"白山市","level":2,"sort":675},{"code":"220601","parentCode":"220600","name":"白山市市辖区","level":3,"sort":676},{"code":"220602","parentCode":"220600","name":"八道江区","level":3,"sort":677},{"code":"220605","parentCode":"220600","name":"江源区","level":3,"sort":678},{"code":"220621","parentCode":"220600","name":"抚松县","level":3,"sort":679},{"code":"220622","parentCode":"220600","name":"靖宇县","level":3,"sort":680},{"code":"220623","parentCode":"220600","name":"长白朝鲜族自治县","level":3,"sort":681},{"code":"220681","parentCode":"220600","name":"临江市","level":3,"sort":682},{"code":"220700","parentCode":"220000","name":"松原市","level":2,"sort":683},{"code":"220701","parentCode":"220700","name":"松原市市辖区","level":3,"sort":684},{"code":"220702","parentCode":"220700","name":"宁江区","level":3,"sort":685},{"code":"220721","parentCode":"220700","name":"前郭尔罗斯蒙古族自治县","level":3,"sort":686},{"code":"220722","parentCode":"220700","name":"长岭县","level":3,"sort":687},{"code":"220723","parentCode":"220700","name":"乾安县","level":3,"sort":688},{"code":"220724","parentCode":"220700","name":"扶余县","level":3,"sort":689},{"code":"220800","parentCode":"220000","name":"白城市","level":2,"sort":690},{"code":"220801","parentCode":"220800","name":"白城市市辖区","level":3,"sort":691},{"code":"220802","parentCode":"220800","name":"洮北区","level":3,"sort":692},{"code":"220821","parentCode":"220800","name":"镇赉县","level":3,"sort":693},{"code":"220822","parentCode":"220800","name":"通榆县","level":3,"sort":694},{"code":"220881","parentCode":"220800","name":"洮南市","level":3,"sort":695},{"code":"220882","parentCode":"220800","name":"大安市","level":3,"sort":696},{"code":"222400","parentCode":"220000","name":"延边朝鲜族自治州","level":2,"sort":697},{"code":"222401","parentCode":"222400","name":"延吉市","level":3,"sort":698},{"code":"222402","parentCode":"222400","name":"图们市","level":3,"sort":699},{"code":"222403","parentCode":"222400","name":"敦化市","level":3,"sort":700},{"code":"222404","parentCode":"222400","name":"珲春市","level":3,"sort":701},{"code":"222405","parentCode":"222400","name":"龙井市","level":3,"sort":702},{"code":"222406","parentCode":"222400","name":"和龙市","level":3,"sort":703},{"code":"222424","parentCode":"222400","name":"汪清县","level":3,"sort":704},{"code":"222426","parentCode":"222400","name":"安图县","level":3,"sort":705},{"code":"230000","parentCode":null,"name":"黑龙江省","level":1,"sort":706},{"code":"230100","parentCode":"230000","name":"哈尔滨市","level":2,"sort":707},{"code":"230101","parentCode":"230100","name":"哈尔滨市市辖区","level":3,"sort":708},{"code":"230102","parentCode":"230100","name":"道里区","level":3,"sort":709},{"code":"230103","parentCode":"230100","name":"南岗区","level":3,"sort":710},{"code":"230104","parentCode":"230100","name":"道外区","level":3,"sort":711},{"code":"230108","parentCode":"230100","name":"平房区","level":3,"sort":712},{"code":"230109","parentCode":"230100","name":"松北区","level":3,"sort":713},{"code":"230110","parentCode":"230100","name":"香坊区","level":3,"sort":714},{"code":"230111","parentCode":"230100","name":"呼兰区","level":3,"sort":715},{"code":"230112","parentCode":"230100","name":"阿城区","level":3,"sort":716},{"code":"230123","parentCode":"230100","name":"依兰县","level":3,"sort":717},{"code":"230124","parentCode":"230100","name":"方正县","level":3,"sort":718},{"code":"230125","parentCode":"230100","name":"宾县","level":3,"sort":719},{"code":"230126","parentCode":"230100","name":"巴彦县","level":3,"sort":720},{"code":"230127","parentCode":"230100","name":"木兰县","level":3,"sort":721},{"code":"230128","parentCode":"230100","name":"通河县","level":3,"sort":722},{"code":"230129","parentCode":"230100","name":"延寿县","level":3,"sort":723},{"code":"230182","parentCode":"230100","name":"双城市","level":3,"sort":724},{"code":"230183","parentCode":"230100","name":"尚志市","level":3,"sort":725},{"code":"230184","parentCode":"230100","name":"五常市","level":3,"sort":726},{"code":"230200","parentCode":"230000","name":"齐齐哈尔市","level":2,"sort":727},{"code":"230201","parentCode":"230200","name":"齐齐哈尔市市辖区","level":3,"sort":728},{"code":"230202","parentCode":"230200","name":"龙沙区","level":3,"sort":729},{"code":"230203","parentCode":"230200","name":"建华区","level":3,"sort":730},{"code":"230204","parentCode":"230200","name":"铁锋区","level":3,"sort":731},{"code":"230205","parentCode":"230200","name":"昂昂溪区","level":3,"sort":732},{"code":"230206","parentCode":"230200","name":"富拉尔基区","level":3,"sort":733},{"code":"230207","parentCode":"230200","name":"碾子山区","level":3,"sort":734},{"code":"230208","parentCode":"230200","name":"梅里斯达斡尔族区","level":3,"sort":735},{"code":"230221","parentCode":"230200","name":"龙江县","level":3,"sort":736},{"code":"230223","parentCode":"230200","name":"依安县","level":3,"sort":737},{"code":"230224","parentCode":"230200","name":"泰来县","level":3,"sort":738},{"code":"230225","parentCode":"230200","name":"甘南县","level":3,"sort":739},{"code":"230227","parentCode":"230200","name":"富裕县","level":3,"sort":740},{"code":"230229","parentCode":"230200","name":"克山县","level":3,"sort":741},{"code":"230230","parentCode":"230200","name":"克东县","level":3,"sort":742},{"code":"230231","parentCode":"230200","name":"拜泉县","level":3,"sort":743},{"code":"230281","parentCode":"230200","name":"讷河市","level":3,"sort":744},{"code":"230300","parentCode":"230000","name":"鸡西市","level":2,"sort":745},{"code":"230301","parentCode":"230300","name":"鸡西市市辖区","level":3,"sort":746},{"code":"230302","parentCode":"230300","name":"鸡冠区","level":3,"sort":747},{"code":"230303","parentCode":"230300","name":"恒山区","level":3,"sort":748},{"code":"230304","parentCode":"230300","name":"滴道区","level":3,"sort":749},{"code":"230305","parentCode":"230300","name":"梨树区","level":3,"sort":750},{"code":"230306","parentCode":"230300","name":"城子河区","level":3,"sort":751},{"code":"230307","parentCode":"230300","name":"麻山区","level":3,"sort":752},{"code":"230321","parentCode":"230300","name":"鸡东县","level":3,"sort":753},{"code":"230381","parentCode":"230300","name":"虎林市","level":3,"sort":754},{"code":"230382","parentCode":"230300","name":"密山市","level":3,"sort":755},{"code":"230400","parentCode":"230000","name":"鹤岗市","level":2,"sort":756},{"code":"230401","parentCode":"230400","name":"鹤岗市市辖区","level":3,"sort":757},{"code":"230402","parentCode":"230400","name":"鹤岗市向阳区","level":3,"sort":758},{"code":"230403","parentCode":"230400","name":"工农区","level":3,"sort":759},{"code":"230404","parentCode":"230400","name":"鹤岗市南山区","level":3,"sort":760},{"code":"230405","parentCode":"230400","name":"兴安区","level":3,"sort":761},{"code":"230406","parentCode":"230400","name":"东山区","level":3,"sort":762},{"code":"230407","parentCode":"230400","name":"兴山区","level":3,"sort":763},{"code":"230421","parentCode":"230400","name":"萝北县","level":3,"sort":764},{"code":"230422","parentCode":"230400","name":"绥滨县","level":3,"sort":765},{"code":"230500","parentCode":"230000","name":"双鸭山市","level":2,"sort":766},{"code":"230501","parentCode":"230500","name":"双鸭山市市辖区","level":3,"sort":767},{"code":"230502","parentCode":"230500","name":"尖山区","level":3,"sort":768},{"code":"230503","parentCode":"230500","name":"岭东区","level":3,"sort":769},{"code":"230505","parentCode":"230500","name":"四方台区","level":3,"sort":770},{"code":"230506","parentCode":"230500","name":"双鸭山市宝山区","level":3,"sort":771},{"code":"230521","parentCode":"230500","name":"集贤县","level":3,"sort":772},{"code":"230522","parentCode":"230500","name":"友谊县","level":3,"sort":773},{"code":"230523","parentCode":"230500","name":"宝清县","level":3,"sort":774},{"code":"230524","parentCode":"230500","name":"饶河县","level":3,"sort":775},{"code":"230600","parentCode":"230000","name":"大庆市","level":2,"sort":776},{"code":"230601","parentCode":"230600","name":"大庆市市辖区","level":3,"sort":777},{"code":"230602","parentCode":"230600","name":"萨尔图区","level":3,"sort":778},{"code":"230603","parentCode":"230600","name":"龙凤区","level":3,"sort":779},{"code":"230604","parentCode":"230600","name":"让胡路区","level":3,"sort":780},{"code":"230605","parentCode":"230600","name":"红岗区","level":3,"sort":781},{"code":"230606","parentCode":"230600","name":"大同区","level":3,"sort":782},{"code":"230621","parentCode":"230600","name":"肇州县","level":3,"sort":783},{"code":"230622","parentCode":"230600","name":"肇源县","level":3,"sort":784},{"code":"230623","parentCode":"230600","name":"林甸县","level":3,"sort":785},{"code":"230624","parentCode":"230600","name":"杜尔伯特蒙古族自治县","level":3,"sort":786},{"code":"230700","parentCode":"230000","name":"伊春市","level":2,"sort":787},{"code":"230701","parentCode":"230700","name":"伊春市市辖区","level":3,"sort":788},{"code":"230702","parentCode":"230700","name":"伊春区","level":3,"sort":789},{"code":"230703","parentCode":"230700","name":"南岔区","level":3,"sort":790},{"code":"230704","parentCode":"230700","name":"友好区","level":3,"sort":791},{"code":"230705","parentCode":"230700","name":"西林区","level":3,"sort":792},{"code":"230706","parentCode":"230700","name":"翠峦区","level":3,"sort":793},{"code":"230707","parentCode":"230700","name":"新青区","level":3,"sort":794},{"code":"230708","parentCode":"230700","name":"美溪区","level":3,"sort":795},{"code":"230709","parentCode":"230700","name":"金山屯区","level":3,"sort":796},{"code":"230710","parentCode":"230700","name":"五营区","level":3,"sort":797},{"code":"230711","parentCode":"230700","name":"乌马河区","level":3,"sort":798},{"code":"230712","parentCode":"230700","name":"汤旺河区","level":3,"sort":799},{"code":"230713","parentCode":"230700","name":"带岭区","level":3,"sort":800},{"code":"230714","parentCode":"230700","name":"乌伊岭区","level":3,"sort":801},{"code":"230715","parentCode":"230700","name":"红星区","level":3,"sort":802},{"code":"230716","parentCode":"230700","name":"上甘岭区","level":3,"sort":803},{"code":"230722","parentCode":"230700","name":"嘉荫县","level":3,"sort":804},{"code":"230781","parentCode":"230700","name":"铁力市","level":3,"sort":805},{"code":"230800","parentCode":"230000","name":"佳木斯市","level":2,"sort":806},{"code":"230801","parentCode":"230800","name":"佳木斯市市辖区","level":3,"sort":807},{"code":"230803","parentCode":"230800","name":"向阳区","level":3,"sort":808},{"code":"230804","parentCode":"230800","name":"前进区","level":3,"sort":809},{"code":"230805","parentCode":"230800","name":"东风区","level":3,"sort":810},{"code":"230811","parentCode":"230800","name":"佳木斯市郊区","level":3,"sort":811},{"code":"230822","parentCode":"230800","name":"桦南县","level":3,"sort":812},{"code":"230826","parentCode":"230800","name":"桦川县","level":3,"sort":813},{"code":"230828","parentCode":"230800","name":"汤原县","level":3,"sort":814},{"code":"230833","parentCode":"230800","name":"抚远县","level":3,"sort":815},{"code":"230881","parentCode":"230800","name":"同江市","level":3,"sort":816},{"code":"230882","parentCode":"230800","name":"富锦市","level":3,"sort":817},{"code":"230900","parentCode":"230000","name":"七台河市","level":2,"sort":818},{"code":"230901","parentCode":"230900","name":"七台河市市辖区","level":3,"sort":819},{"code":"230902","parentCode":"230900","name":"新兴区","level":3,"sort":820},{"code":"230903","parentCode":"230900","name":"桃山区","level":3,"sort":821},{"code":"230904","parentCode":"230900","name":"茄子河区","level":3,"sort":822},{"code":"230921","parentCode":"230900","name":"勃利县","level":3,"sort":823},{"code":"231000","parentCode":"230000","name":"牡丹江市","level":2,"sort":824},{"code":"231001","parentCode":"231000","name":"牡丹江市市辖区","level":3,"sort":825},{"code":"231002","parentCode":"231000","name":"东安区","level":3,"sort":826},{"code":"231003","parentCode":"231000","name":"阳明区","level":3,"sort":827},{"code":"231004","parentCode":"231000","name":"爱民区","level":3,"sort":828},{"code":"231005","parentCode":"231000","name":"西安区","level":3,"sort":829},{"code":"231024","parentCode":"231000","name":"东宁县","level":3,"sort":830},{"code":"231025","parentCode":"231000","name":"林口县","level":3,"sort":831},{"code":"231081","parentCode":"231000","name":"绥芬河市","level":3,"sort":832},{"code":"231083","parentCode":"231000","name":"海林市","level":3,"sort":833},{"code":"231084","parentCode":"231000","name":"宁安市","level":3,"sort":834},{"code":"231085","parentCode":"231000","name":"穆棱市","level":3,"sort":835},{"code":"231100","parentCode":"230000","name":"黑河市","level":2,"sort":836},{"code":"231101","parentCode":"231100","name":"黑河市市辖区","level":3,"sort":837},{"code":"231102","parentCode":"231100","name":"爱辉区","level":3,"sort":838},{"code":"231121","parentCode":"231100","name":"嫩江县","level":3,"sort":839},{"code":"231123","parentCode":"231100","name":"逊克县","level":3,"sort":840},{"code":"231124","parentCode":"231100","name":"孙吴县","level":3,"sort":841},{"code":"231181","parentCode":"231100","name":"北安市","level":3,"sort":842},{"code":"231182","parentCode":"231100","name":"五大连池市","level":3,"sort":843},{"code":"231200","parentCode":"230000","name":"绥化市","level":2,"sort":844},{"code":"231201","parentCode":"231200","name":"绥化市市辖区","level":3,"sort":845},{"code":"231202","parentCode":"231200","name":"北林区","level":3,"sort":846},{"code":"231221","parentCode":"231200","name":"望奎县","level":3,"sort":847},{"code":"231222","parentCode":"231200","name":"兰西县","level":3,"sort":848},{"code":"231223","parentCode":"231200","name":"青冈县","level":3,"sort":849},{"code":"231224","parentCode":"231200","name":"庆安县","level":3,"sort":850},{"code":"231225","parentCode":"231200","name":"明水县","level":3,"sort":851},{"code":"231226","parentCode":"231200","name":"绥棱县","level":3,"sort":852},{"code":"231281","parentCode":"231200","name":"安达市","level":3,"sort":853},{"code":"231282","parentCode":"231200","name":"肇东市","level":3,"sort":854},{"code":"231283","parentCode":"231200","name":"海伦市","level":3,"sort":855},{"code":"232700","parentCode":"230000","name":"大兴安岭地区","level":2,"sort":856},{"code":"232701","parentCode":"232700","name":"加格达奇区","level":3,"sort":857},{"code":"232702","parentCode":"232700","name":"松岭区","level":3,"sort":858},{"code":"232703","parentCode":"232700","name":"新林区","level":3,"sort":859},{"code":"232704","parentCode":"232700","name":"呼中区","level":3,"sort":860},{"code":"232721","parentCode":"232700","name":"呼玛县","level":3,"sort":861},{"code":"232722","parentCode":"232700","name":"塔河县","level":3,"sort":862},{"code":"232723","parentCode":"232700","name":"漠河县","level":3,"sort":863},{"code":"310000","parentCode":null,"name":"上海市","level":1,"sort":864},{"code":"310100","parentCode":"310000","name":"上海市市辖区","level":2,"sort":865},{"code":"310101","parentCode":"310100","name":"黄浦区","level":3,"sort":866},{"code":"310103","parentCode":"310100","name":"卢湾区","level":3,"sort":867},{"code":"310104","parentCode":"310100","name":"徐汇区","level":3,"sort":868},{"code":"310105","parentCode":"310100","name":"长宁区","level":3,"sort":869},{"code":"310106","parentCode":"310100","name":"静安区","level":3,"sort":870},{"code":"310107","parentCode":"310100","name":"上海市普陀区","level":3,"sort":871},{"code":"310108","parentCode":"310100","name":"闸北区","level":3,"sort":872},{"code":"310109","parentCode":"310100","name":"虹口区","level":3,"sort":873},{"code":"310110","parentCode":"310100","name":"杨浦区","level":3,"sort":874},{"code":"310112","parentCode":"310100","name":"闵行区","level":3,"sort":875},{"code":"310113","parentCode":"310100","name":"宝山区","level":3,"sort":876},{"code":"310114","parentCode":"310100","name":"嘉定区","level":3,"sort":877},{"code":"310115","parentCode":"310100","name":"浦东新区","level":3,"sort":878},{"code":"310116","parentCode":"310100","name":"金山区","level":3,"sort":879},{"code":"310117","parentCode":"310100","name":"松江区","level":3,"sort":880},{"code":"310118","parentCode":"310100","name":"青浦区","level":3,"sort":881},{"code":"310120","parentCode":"310100","name":"奉贤区","level":3,"sort":882},{"code":"310200","parentCode":"310000","name":"上海市县","level":2,"sort":883},{"code":"310230","parentCode":"310200","name":"崇明县","level":3,"sort":884},{"code":"320000","parentCode":null,"name":"江苏省","level":1,"sort":885},{"code":"320100","parentCode":"320000","name":"南京市","level":2,"sort":886},{"code":"320101","parentCode":"320100","name":"南京市市辖区","level":3,"sort":887},{"code":"320102","parentCode":"320100","name":"玄武区","level":3,"sort":888},{"code":"320103","parentCode":"320100","name":"白下区","level":3,"sort":889},{"code":"320104","parentCode":"320100","name":"秦淮区","level":3,"sort":890},{"code":"320105","parentCode":"320100","name":"建邺区","level":3,"sort":891},{"code":"320106","parentCode":"320100","name":"南京市鼓楼区","level":3,"sort":892},{"code":"320107","parentCode":"320100","name":"下关区","level":3,"sort":893},{"code":"320111","parentCode":"320100","name":"浦口区","level":3,"sort":894},{"code":"320113","parentCode":"320100","name":"栖霞区","level":3,"sort":895},{"code":"320114","parentCode":"320100","name":"雨花台区","level":3,"sort":896},{"code":"320115","parentCode":"320100","name":"江宁区","level":3,"sort":897},{"code":"320116","parentCode":"320100","name":"六合区","level":3,"sort":898},{"code":"320124","parentCode":"320100","name":"溧水县","level":3,"sort":899},{"code":"320125","parentCode":"320100","name":"高淳县","level":3,"sort":900},{"code":"320200","parentCode":"320000","name":"无锡市","level":2,"sort":901},{"code":"320201","parentCode":"320200","name":"无锡市市辖区","level":3,"sort":902},{"code":"320202","parentCode":"320200","name":"崇安区","level":3,"sort":903},{"code":"320203","parentCode":"320200","name":"南长区","level":3,"sort":904},{"code":"320204","parentCode":"320200","name":"北塘区","level":3,"sort":905},{"code":"320205","parentCode":"320200","name":"锡山区","level":3,"sort":906},{"code":"320206","parentCode":"320200","name":"惠山区","level":3,"sort":907},{"code":"320211","parentCode":"320200","name":"滨湖区","level":3,"sort":908},{"code":"320281","parentCode":"320200","name":"江阴市","level":3,"sort":909},{"code":"320282","parentCode":"320200","name":"宜兴市","level":3,"sort":910},{"code":"320300","parentCode":"320000","name":"徐州市","level":2,"sort":911},{"code":"320301","parentCode":"320300","name":"徐州市市辖区","level":3,"sort":912},{"code":"320302","parentCode":"320300","name":"徐州市鼓楼区","level":3,"sort":913},{"code":"320303","parentCode":"320300","name":"云龙区","level":3,"sort":914},{"code":"320305","parentCode":"320300","name":"贾汪区","level":3,"sort":915},{"code":"320311","parentCode":"320300","name":"泉山区","level":3,"sort":916},{"code":"320312","parentCode":"320300","name":"铜山区","level":3,"sort":917},{"code":"320321","parentCode":"320300","name":"丰县","level":3,"sort":918},{"code":"320322","parentCode":"320300","name":"沛县","level":3,"sort":919},{"code":"320324","parentCode":"320300","name":"睢宁县","level":3,"sort":920},{"code":"320381","parentCode":"320300","name":"新沂市","level":3,"sort":921},{"code":"320382","parentCode":"320300","name":"邳州市","level":3,"sort":922},{"code":"320400","parentCode":"320000","name":"常州市","level":2,"sort":923},{"code":"320401","parentCode":"320400","name":"常州市市辖区","level":3,"sort":924},{"code":"320402","parentCode":"320400","name":"天宁区","level":3,"sort":925},{"code":"320404","parentCode":"320400","name":"钟楼区","level":3,"sort":926},{"code":"320405","parentCode":"320400","name":"戚墅堰区","level":3,"sort":927},{"code":"320411","parentCode":"320400","name":"新北区","level":3,"sort":928},{"code":"320412","parentCode":"320400","name":"武进区","level":3,"sort":929},{"code":"320481","parentCode":"320400","name":"溧阳市","level":3,"sort":930},{"code":"320482","parentCode":"320400","name":"金坛市","level":3,"sort":931},{"code":"320500","parentCode":"320000","name":"苏州市","level":2,"sort":932},{"code":"320501","parentCode":"320500","name":"苏州市市辖区","level":3,"sort":933},{"code":"320502","parentCode":"320500","name":"沧浪区","level":3,"sort":934},{"code":"320503","parentCode":"320500","name":"平江区","level":3,"sort":935},{"code":"320504","parentCode":"320500","name":"金阊区","level":3,"sort":936},{"code":"320505","parentCode":"320500","name":"虎丘区","level":3,"sort":937},{"code":"320506","parentCode":"320500","name":"吴中区","level":3,"sort":938},{"code":"320507","parentCode":"320500","name":"相城区","level":3,"sort":939},{"code":"320581","parentCode":"320500","name":"常熟市","level":3,"sort":940},{"code":"320582","parentCode":"320500","name":"张家港市","level":3,"sort":941},{"code":"320583","parentCode":"320500","name":"昆山市","level":3,"sort":942},{"code":"320584","parentCode":"320500","name":"吴江市","level":3,"sort":943},{"code":"320585","parentCode":"320500","name":"太仓市","level":3,"sort":944},{"code":"320600","parentCode":"320000","name":"南通市","level":2,"sort":945},{"code":"320601","parentCode":"320600","name":"南通市市辖区","level":3,"sort":946},{"code":"320602","parentCode":"320600","name":"崇川区","level":3,"sort":947},{"code":"320611","parentCode":"320600","name":"港闸区","level":3,"sort":948},{"code":"320612","parentCode":"320600","name":"通州区","level":3,"sort":949},{"code":"320621","parentCode":"320600","name":"海安县","level":3,"sort":950},{"code":"320623","parentCode":"320600","name":"如东县","level":3,"sort":951},{"code":"320681","parentCode":"320600","name":"启东市","level":3,"sort":952},{"code":"320682","parentCode":"320600","name":"如皋市","level":3,"sort":953},{"code":"320684","parentCode":"320600","name":"海门市","level":3,"sort":954},{"code":"320700","parentCode":"320000","name":"连云港市","level":2,"sort":955},{"code":"320701","parentCode":"320700","name":"连云港市市辖区","level":3,"sort":956},{"code":"320703","parentCode":"320700","name":"连云区","level":3,"sort":957},{"code":"320705","parentCode":"320700","name":"新浦区","level":3,"sort":958},{"code":"320706","parentCode":"320700","name":"海州区","level":3,"sort":959},{"code":"320721","parentCode":"320700","name":"赣榆县","level":3,"sort":960},{"code":"320722","parentCode":"320700","name":"东海县","level":3,"sort":961},{"code":"320723","parentCode":"320700","name":"灌云县","level":3,"sort":962},{"code":"320724","parentCode":"320700","name":"灌南县","level":3,"sort":963},{"code":"320800","parentCode":"320000","name":"淮安市","level":2,"sort":964},{"code":"320801","parentCode":"320800","name":"淮安市市辖区","level":3,"sort":965},{"code":"320802","parentCode":"320800","name":"清河区","level":3,"sort":966},{"code":"320803","parentCode":"320800","name":"楚州区","level":3,"sort":967},{"code":"320804","parentCode":"320800","name":"淮阴区","level":3,"sort":968},{"code":"320811","parentCode":"320800","name":"清浦区","level":3,"sort":969},{"code":"320826","parentCode":"320800","name":"涟水县","level":3,"sort":970},{"code":"320829","parentCode":"320800","name":"洪泽县","level":3,"sort":971},{"code":"320830","parentCode":"320800","name":"盱眙县","level":3,"sort":972},{"code":"320831","parentCode":"320800","name":"金湖县","level":3,"sort":973},{"code":"320900","parentCode":"320000","name":"盐城市","level":2,"sort":974},{"code":"320901","parentCode":"320900","name":"盐城市市辖区","level":3,"sort":975},{"code":"320902","parentCode":"320900","name":"亭湖区","level":3,"sort":976},{"code":"320903","parentCode":"320900","name":"盐都区","level":3,"sort":977},{"code":"320921","parentCode":"320900","name":"响水县","level":3,"sort":978},{"code":"320922","parentCode":"320900","name":"滨海县","level":3,"sort":979},{"code":"320923","parentCode":"320900","name":"阜宁县","level":3,"sort":980},{"code":"320924","parentCode":"320900","name":"射阳县","level":3,"sort":981},{"code":"320925","parentCode":"320900","name":"建湖县","level":3,"sort":982},{"code":"320981","parentCode":"320900","name":"东台市","level":3,"sort":983},{"code":"320982","parentCode":"320900","name":"大丰市","level":3,"sort":984},{"code":"321000","parentCode":"320000","name":"扬州市","level":2,"sort":985},{"code":"321001","parentCode":"321000","name":"扬州市市辖区","level":3,"sort":986},{"code":"321002","parentCode":"321000","name":"广陵区","level":3,"sort":987},{"code":"321003","parentCode":"321000","name":"邗江区","level":3,"sort":988},{"code":"321011","parentCode":"321000","name":"维扬区","level":3,"sort":989},{"code":"321023","parentCode":"321000","name":"宝应县","level":3,"sort":990},{"code":"321081","parentCode":"321000","name":"仪征市","level":3,"sort":991},{"code":"321084","parentCode":"321000","name":"高邮市","level":3,"sort":992},{"code":"321088","parentCode":"321000","name":"江都市","level":3,"sort":993},{"code":"321100","parentCode":"320000","name":"镇江市","level":2,"sort":994},{"code":"321101","parentCode":"321100","name":"镇江市市辖区","level":3,"sort":995},{"code":"321102","parentCode":"321100","name":"京口区","level":3,"sort":996},{"code":"321111","parentCode":"321100","name":"润州区","level":3,"sort":997},{"code":"321112","parentCode":"321100","name":"丹徒区","level":3,"sort":998},{"code":"321181","parentCode":"321100","name":"丹阳市","level":3,"sort":999},{"code":"321182","parentCode":"321100","name":"扬中市","level":3,"sort":1000},{"code":"321183","parentCode":"321100","name":"句容市","level":3,"sort":1001},{"code":"321200","parentCode":"320000","name":"泰州市","level":2,"sort":1002},{"code":"321201","parentCode":"321200","name":"泰州市市辖区","level":3,"sort":1003},{"code":"321202","parentCode":"321200","name":"海陵区","level":3,"sort":1004},{"code":"321203","parentCode":"321200","name":"高港区","level":3,"sort":1005},{"code":"321281","parentCode":"321200","name":"兴化市","level":3,"sort":1006},{"code":"321282","parentCode":"321200","name":"靖江市","level":3,"sort":1007},{"code":"321283","parentCode":"321200","name":"泰兴市","level":3,"sort":1008},{"code":"321284","parentCode":"321200","name":"姜堰市","level":3,"sort":1009},{"code":"321300","parentCode":"320000","name":"宿迁市","level":2,"sort":1010},{"code":"321301","parentCode":"321300","name":"宿迁市市辖区","level":3,"sort":1011},{"code":"321302","parentCode":"321300","name":"宿城区","level":3,"sort":1012},{"code":"321311","parentCode":"321300","name":"宿豫区","level":3,"sort":1013},{"code":"321322","parentCode":"321300","name":"沭阳县","level":3,"sort":1014},{"code":"321323","parentCode":"321300","name":"泗阳县","level":3,"sort":1015},{"code":"321324","parentCode":"321300","name":"泗洪县","level":3,"sort":1016},{"code":"330000","parentCode":null,"name":"浙江省","level":1,"sort":1017},{"code":"330100","parentCode":"330000","name":"杭州市","level":2,"sort":1018},{"code":"330101","parentCode":"330100","name":"杭州市市辖区","level":3,"sort":1019},{"code":"330102","parentCode":"330100","name":"上城区","level":3,"sort":1020},{"code":"330103","parentCode":"330100","name":"下城区","level":3,"sort":1021},{"code":"330104","parentCode":"330100","name":"江干区","level":3,"sort":1022},{"code":"330105","parentCode":"330100","name":"拱墅区","level":3,"sort":1023},{"code":"330106","parentCode":"330100","name":"杭州市西湖区","level":3,"sort":1024},{"code":"330108","parentCode":"330100","name":"滨江区","level":3,"sort":1025},{"code":"330109","parentCode":"330100","name":"萧山区","level":3,"sort":1026},{"code":"330110","parentCode":"330100","name":"余杭区","level":3,"sort":1027},{"code":"330122","parentCode":"330100","name":"桐庐县","level":3,"sort":1028},{"code":"330127","parentCode":"330100","name":"淳安县","level":3,"sort":1029},{"code":"330182","parentCode":"330100","name":"建德市","level":3,"sort":1030},{"code":"330183","parentCode":"330100","name":"富阳市","level":3,"sort":1031},{"code":"330185","parentCode":"330100","name":"临安市","level":3,"sort":1032},{"code":"330200","parentCode":"330000","name":"宁波市","level":2,"sort":1033},{"code":"330201","parentCode":"330200","name":"宁波市市辖区","level":3,"sort":1034},{"code":"330203","parentCode":"330200","name":"海曙区","level":3,"sort":1035},{"code":"330204","parentCode":"330200","name":"江东区","level":3,"sort":1036},{"code":"330205","parentCode":"330200","name":"宁波市江北区","level":3,"sort":1037},{"code":"330206","parentCode":"330200","name":"北仑区","level":3,"sort":1038},{"code":"330211","parentCode":"330200","name":"镇海区","level":3,"sort":1039},{"code":"330212","parentCode":"330200","name":"鄞州区","level":3,"sort":1040},{"code":"330225","parentCode":"330200","name":"象山县","level":3,"sort":1041},{"code":"330226","parentCode":"330200","name":"宁海县","level":3,"sort":1042},{"code":"330281","parentCode":"330200","name":"余姚市","level":3,"sort":1043},{"code":"330282","parentCode":"330200","name":"慈溪市","level":3,"sort":1044},{"code":"330283","parentCode":"330200","name":"奉化市","level":3,"sort":1045},{"code":"330300","parentCode":"330000","name":"温州市","level":2,"sort":1046},{"code":"330301","parentCode":"330300","name":"温州市市辖区","level":3,"sort":1047},{"code":"330302","parentCode":"330300","name":"鹿城区","level":3,"sort":1048},{"code":"330303","parentCode":"330300","name":"龙湾区","level":3,"sort":1049},{"code":"330304","parentCode":"330300","name":"瓯海区","level":3,"sort":1050},{"code":"330322","parentCode":"330300","name":"洞头县","level":3,"sort":1051},{"code":"330324","parentCode":"330300","name":"永嘉县","level":3,"sort":1052},{"code":"330326","parentCode":"330300","name":"平阳县","level":3,"sort":1053},{"code":"330327","parentCode":"330300","name":"苍南县","level":3,"sort":1054},{"code":"330328","parentCode":"330300","name":"文成县","level":3,"sort":1055},{"code":"330329","parentCode":"330300","name":"泰顺县","level":3,"sort":1056},{"code":"330381","parentCode":"330300","name":"瑞安市","level":3,"sort":1057},{"code":"330382","parentCode":"330300","name":"乐清市","level":3,"sort":1058},{"code":"330400","parentCode":"330000","name":"嘉兴市","level":2,"sort":1059},{"code":"330401","parentCode":"330400","name":"嘉兴市市辖区","level":3,"sort":1060},{"code":"330402","parentCode":"330400","name":"南湖区","level":3,"sort":1061},{"code":"330411","parentCode":"330400","name":"秀洲区","level":3,"sort":1062},{"code":"330421","parentCode":"330400","name":"嘉善县","level":3,"sort":1063},{"code":"330424","parentCode":"330400","name":"海盐县","level":3,"sort":1064},{"code":"330481","parentCode":"330400","name":"海宁市","level":3,"sort":1065},{"code":"330482","parentCode":"330400","name":"平湖市","level":3,"sort":1066},{"code":"330483","parentCode":"330400","name":"桐乡市","level":3,"sort":1067},{"code":"330500","parentCode":"330000","name":"湖州市","level":2,"sort":1068},{"code":"330501","parentCode":"330500","name":"湖州市市辖区","level":3,"sort":1069},{"code":"330502","parentCode":"330500","name":"吴兴区","level":3,"sort":1070},{"code":"330503","parentCode":"330500","name":"南浔区","level":3,"sort":1071},{"code":"330521","parentCode":"330500","name":"德清县","level":3,"sort":1072},{"code":"330522","parentCode":"330500","name":"长兴县","level":3,"sort":1073},{"code":"330523","parentCode":"330500","name":"安吉县","level":3,"sort":1074},{"code":"330600","parentCode":"330000","name":"绍兴市","level":2,"sort":1075},{"code":"330601","parentCode":"330600","name":"绍兴市市辖区","level":3,"sort":1076},{"code":"330602","parentCode":"330600","name":"越城区","level":3,"sort":1077},{"code":"330621","parentCode":"330600","name":"绍兴县","level":3,"sort":1078},{"code":"330624","parentCode":"330600","name":"新昌县","level":3,"sort":1079},{"code":"330681","parentCode":"330600","name":"诸暨市","level":3,"sort":1080},{"code":"330682","parentCode":"330600","name":"上虞市","level":3,"sort":1081},{"code":"330683","parentCode":"330600","name":"嵊州市","level":3,"sort":1082},{"code":"330700","parentCode":"330000","name":"金华市","level":2,"sort":1083},{"code":"330701","parentCode":"330700","name":"金华市市辖区","level":3,"sort":1084},{"code":"330702","parentCode":"330700","name":"婺城区","level":3,"sort":1085},{"code":"330703","parentCode":"330700","name":"金东区","level":3,"sort":1086},{"code":"330723","parentCode":"330700","name":"武义县","level":3,"sort":1087},{"code":"330726","parentCode":"330700","name":"浦江县","level":3,"sort":1088},{"code":"330727","parentCode":"330700","name":"磐安县","level":3,"sort":1089},{"code":"330781","parentCode":"330700","name":"兰溪市","level":3,"sort":1090},{"code":"330782","parentCode":"330700","name":"义乌市","level":3,"sort":1091},{"code":"330783","parentCode":"330700","name":"东阳市","level":3,"sort":1092},{"code":"330784","parentCode":"330700","name":"永康市","level":3,"sort":1093},{"code":"330800","parentCode":"330000","name":"衢州市","level":2,"sort":1094},{"code":"330801","parentCode":"330800","name":"衢州市市辖区","level":3,"sort":1095},{"code":"330802","parentCode":"330800","name":"柯城区","level":3,"sort":1096},{"code":"330803","parentCode":"330800","name":"衢江区","level":3,"sort":1097},{"code":"330822","parentCode":"330800","name":"常山县","level":3,"sort":1098},{"code":"330824","parentCode":"330800","name":"开化县","level":3,"sort":1099},{"code":"330825","parentCode":"330800","name":"龙游县","level":3,"sort":1100},{"code":"330881","parentCode":"330800","name":"江山市","level":3,"sort":1101},{"code":"330900","parentCode":"330000","name":"舟山市","level":2,"sort":1102},{"code":"330901","parentCode":"330900","name":"舟山市市辖区","level":3,"sort":1103},{"code":"330902","parentCode":"330900","name":"定海区","level":3,"sort":1104},{"code":"330903","parentCode":"330900","name":"普陀区","level":3,"sort":1105},{"code":"330921","parentCode":"330900","name":"岱山县","level":3,"sort":1106},{"code":"330922","parentCode":"330900","name":"嵊泗县","level":3,"sort":1107},{"code":"331000","parentCode":"330000","name":"台州市","level":2,"sort":1108},{"code":"331001","parentCode":"331000","name":"台州市市辖区","level":3,"sort":1109},{"code":"331002","parentCode":"331000","name":"椒江区","level":3,"sort":1110},{"code":"331003","parentCode":"331000","name":"黄岩区","level":3,"sort":1111},{"code":"331004","parentCode":"331000","name":"路桥区","level":3,"sort":1112},{"code":"331021","parentCode":"331000","name":"玉环县","level":3,"sort":1113},{"code":"331022","parentCode":"331000","name":"三门县","level":3,"sort":1114},{"code":"331023","parentCode":"331000","name":"天台县","level":3,"sort":1115},{"code":"331024","parentCode":"331000","name":"仙居县","level":3,"sort":1116},{"code":"331081","parentCode":"331000","name":"温岭市","level":3,"sort":1117},{"code":"331082","parentCode":"331000","name":"临海市","level":3,"sort":1118},{"code":"331100","parentCode":"330000","name":"丽水市","level":2,"sort":1119},{"code":"331101","parentCode":"331100","name":"丽水市市辖区","level":3,"sort":1120},{"code":"331102","parentCode":"331100","name":"莲都区","level":3,"sort":1121},{"code":"331121","parentCode":"331100","name":"青田县","level":3,"sort":1122},{"code":"331122","parentCode":"331100","name":"缙云县","level":3,"sort":1123},{"code":"331123","parentCode":"331100","name":"遂昌县","level":3,"sort":1124},{"code":"331124","parentCode":"331100","name":"松阳县","level":3,"sort":1125},{"code":"331125","parentCode":"331100","name":"云和县","level":3,"sort":1126},{"code":"331126","parentCode":"331100","name":"庆元县","level":3,"sort":1127},{"code":"331127","parentCode":"331100","name":"景宁畲族自治县","level":3,"sort":1128},{"code":"331181","parentCode":"331100","name":"龙泉市","level":3,"sort":1129},{"code":"340000","parentCode":null,"name":"安徽省","level":1,"sort":1130},{"code":"340100","parentCode":"340000","name":"合肥市","level":2,"sort":1131},{"code":"340101","parentCode":"340100","name":"合肥市市辖区","level":3,"sort":1132},{"code":"340102","parentCode":"340100","name":"瑶海区","level":3,"sort":1133},{"code":"340103","parentCode":"340100","name":"庐阳区","level":3,"sort":1134},{"code":"340104","parentCode":"340100","name":"蜀山区","level":3,"sort":1135},{"code":"340111","parentCode":"340100","name":"包河区","level":3,"sort":1136},{"code":"340121","parentCode":"340100","name":"长丰县","level":3,"sort":1137},{"code":"340122","parentCode":"340100","name":"肥东县","level":3,"sort":1138},{"code":"340123","parentCode":"340100","name":"肥西县","level":3,"sort":1139},{"code":"340200","parentCode":"340000","name":"芜湖市","level":2,"sort":1140},{"code":"340201","parentCode":"340200","name":"芜湖市市辖区","level":3,"sort":1141},{"code":"340202","parentCode":"340200","name":"镜湖区","level":3,"sort":1142},{"code":"340203","parentCode":"340200","name":"弋江区","level":3,"sort":1143},{"code":"340207","parentCode":"340200","name":"鸠江区","level":3,"sort":1144},{"code":"340208","parentCode":"340200","name":"三山区","level":3,"sort":1145},{"code":"340221","parentCode":"340200","name":"芜湖县","level":3,"sort":1146},{"code":"340222","parentCode":"340200","name":"繁昌县","level":3,"sort":1147},{"code":"340223","parentCode":"340200","name":"南陵县","level":3,"sort":1148},{"code":"340300","parentCode":"340000","name":"蚌埠市","level":2,"sort":1149},{"code":"340301","parentCode":"340300","name":"蚌埠市市辖区","level":3,"sort":1150},{"code":"340302","parentCode":"340300","name":"龙子湖区","level":3,"sort":1151},{"code":"340303","parentCode":"340300","name":"蚌山区","level":3,"sort":1152},{"code":"340304","parentCode":"340300","name":"禹会区","level":3,"sort":1153},{"code":"340311","parentCode":"340300","name":"淮上区","level":3,"sort":1154},{"code":"340321","parentCode":"340300","name":"怀远县","level":3,"sort":1155},{"code":"340322","parentCode":"340300","name":"五河县","level":3,"sort":1156},{"code":"340323","parentCode":"340300","name":"固镇县","level":3,"sort":1157},{"code":"340400","parentCode":"340000","name":"淮南市","level":2,"sort":1158},{"code":"340401","parentCode":"340400","name":"淮南市市辖区","level":3,"sort":1159},{"code":"340402","parentCode":"340400","name":"大通区","level":3,"sort":1160},{"code":"340403","parentCode":"340400","name":"田家庵区","level":3,"sort":1161},{"code":"340404","parentCode":"340400","name":"谢家集区","level":3,"sort":1162},{"code":"340405","parentCode":"340400","name":"八公山区","level":3,"sort":1163},{"code":"340406","parentCode":"340400","name":"潘集区","level":3,"sort":1164},{"code":"340421","parentCode":"340400","name":"凤台县","level":3,"sort":1165},{"code":"340500","parentCode":"340000","name":"马鞍山市","level":2,"sort":1166},{"code":"340501","parentCode":"340500","name":"马鞍山市市辖区","level":3,"sort":1167},{"code":"340502","parentCode":"340500","name":"金家庄区","level":3,"sort":1168},{"code":"340503","parentCode":"340500","name":"花山区","level":3,"sort":1169},{"code":"340504","parentCode":"340500","name":"雨山区","level":3,"sort":1170},{"code":"340521","parentCode":"340500","name":"当涂县","level":3,"sort":1171},{"code":"340600","parentCode":"340000","name":"淮北市","level":2,"sort":1172},{"code":"340601","parentCode":"340600","name":"淮北市市辖区","level":3,"sort":1173},{"code":"340602","parentCode":"340600","name":"杜集区","level":3,"sort":1174},{"code":"340603","parentCode":"340600","name":"相山区","level":3,"sort":1175},{"code":"340604","parentCode":"340600","name":"烈山区","level":3,"sort":1176},{"code":"340621","parentCode":"340600","name":"濉溪县","level":3,"sort":1177},{"code":"340700","parentCode":"340000","name":"铜陵市","level":2,"sort":1178},{"code":"340701","parentCode":"340700","name":"铜陵市市辖区","level":3,"sort":1179},{"code":"340702","parentCode":"340700","name":"铜官山区","level":3,"sort":1180},{"code":"340703","parentCode":"340700","name":"狮子山区","level":3,"sort":1181},{"code":"340711","parentCode":"340700","name":"郊区","level":3,"sort":1182},{"code":"340721","parentCode":"340700","name":"铜陵县","level":3,"sort":1183},{"code":"340800","parentCode":"340000","name":"安庆市","level":2,"sort":1184},{"code":"340801","parentCode":"340800","name":"安庆市市辖区","level":3,"sort":1185},{"code":"340802","parentCode":"340800","name":"迎江区","level":3,"sort":1186},{"code":"340803","parentCode":"340800","name":"大观区","level":3,"sort":1187},{"code":"340811","parentCode":"340800","name":"宜秀区","level":3,"sort":1188},{"code":"340822","parentCode":"340800","name":"怀宁县","level":3,"sort":1189},{"code":"340823","parentCode":"340800","name":"枞阳县","level":3,"sort":1190},{"code":"340824","parentCode":"340800","name":"潜山县","level":3,"sort":1191},{"code":"340825","parentCode":"340800","name":"太湖县","level":3,"sort":1192},{"code":"340826","parentCode":"340800","name":"宿松县","level":3,"sort":1193},{"code":"340827","parentCode":"340800","name":"望江县","level":3,"sort":1194},{"code":"340828","parentCode":"340800","name":"岳西县","level":3,"sort":1195},{"code":"340881","parentCode":"340800","name":"桐城市","level":3,"sort":1196},{"code":"341000","parentCode":"340000","name":"黄山市","level":2,"sort":1197},{"code":"341001","parentCode":"341000","name":"黄山市市辖区","level":3,"sort":1198},{"code":"341002","parentCode":"341000","name":"屯溪区","level":3,"sort":1199},{"code":"341003","parentCode":"341000","name":"黄山区","level":3,"sort":1200},{"code":"341004","parentCode":"341000","name":"徽州区","level":3,"sort":1201},{"code":"341021","parentCode":"341000","name":"歙县","level":3,"sort":1202},{"code":"341022","parentCode":"341000","name":"休宁县","level":3,"sort":1203},{"code":"341023","parentCode":"341000","name":"黟县","level":3,"sort":1204},{"code":"341024","parentCode":"341000","name":"祁门县","level":3,"sort":1205},{"code":"341100","parentCode":"340000","name":"滁州市","level":2,"sort":1206},{"code":"341101","parentCode":"341100","name":"滁州市市辖区","level":3,"sort":1207},{"code":"341102","parentCode":"341100","name":"琅琊区","level":3,"sort":1208},{"code":"341103","parentCode":"341100","name":"南谯区","level":3,"sort":1209},{"code":"341122","parentCode":"341100","name":"来安县","level":3,"sort":1210},{"code":"341124","parentCode":"341100","name":"全椒县","level":3,"sort":1211},{"code":"341125","parentCode":"341100","name":"定远县","level":3,"sort":1212},{"code":"341126","parentCode":"341100","name":"凤阳县","level":3,"sort":1213},{"code":"341181","parentCode":"341100","name":"天长市","level":3,"sort":1214},{"code":"341182","parentCode":"341100","name":"明光市","level":3,"sort":1215},{"code":"341200","parentCode":"340000","name":"阜阳市","level":2,"sort":1216},{"code":"341201","parentCode":"341200","name":"阜阳市市辖区","level":3,"sort":1217},{"code":"341202","parentCode":"341200","name":"颍州区","level":3,"sort":1218},{"code":"341203","parentCode":"341200","name":"颍东区","level":3,"sort":1219},{"code":"341204","parentCode":"341200","name":"颍泉区","level":3,"sort":1220},{"code":"341221","parentCode":"341200","name":"临泉县","level":3,"sort":1221},{"code":"341222","parentCode":"341200","name":"太和县","level":3,"sort":1222},{"code":"341225","parentCode":"341200","name":"阜南县","level":3,"sort":1223},{"code":"341226","parentCode":"341200","name":"颍上县","level":3,"sort":1224},{"code":"341282","parentCode":"341200","name":"界首市","level":3,"sort":1225},{"code":"341300","parentCode":"340000","name":"宿州市","level":2,"sort":1226},{"code":"341301","parentCode":"341300","name":"宿州市市辖区","level":3,"sort":1227},{"code":"341302","parentCode":"341300","name":"埇桥区","level":3,"sort":1228},{"code":"341321","parentCode":"341300","name":"砀山县","level":3,"sort":1229},{"code":"341322","parentCode":"341300","name":"萧县","level":3,"sort":1230},{"code":"341323","parentCode":"341300","name":"灵璧县","level":3,"sort":1231},{"code":"341324","parentCode":"341300","name":"泗县","level":3,"sort":1232},{"code":"341400","parentCode":"340000","name":"巢湖市","level":2,"sort":1233},{"code":"341401","parentCode":"341400","name":"巢湖市市辖区","level":3,"sort":1234},{"code":"341402","parentCode":"341400","name":"居巢区","level":3,"sort":1235},{"code":"341421","parentCode":"341400","name":"庐江县","level":3,"sort":1236},{"code":"341422","parentCode":"341400","name":"无为县","level":3,"sort":1237},{"code":"341423","parentCode":"341400","name":"含山县","level":3,"sort":1238},{"code":"341424","parentCode":"341400","name":"和县","level":3,"sort":1239},{"code":"341500","parentCode":"340000","name":"六安市","level":2,"sort":1240},{"code":"341501","parentCode":"341500","name":"六安市市辖区","level":3,"sort":1241},{"code":"341502","parentCode":"341500","name":"金安区","level":3,"sort":1242},{"code":"341503","parentCode":"341500","name":"裕安区","level":3,"sort":1243},{"code":"341521","parentCode":"341500","name":"寿县","level":3,"sort":1244},{"code":"341522","parentCode":"341500","name":"霍邱县","level":3,"sort":1245},{"code":"341523","parentCode":"341500","name":"舒城县","level":3,"sort":1246},{"code":"341524","parentCode":"341500","name":"金寨县","level":3,"sort":1247},{"code":"341525","parentCode":"341500","name":"霍山县","level":3,"sort":1248},{"code":"341600","parentCode":"340000","name":"亳州市","level":2,"sort":1249},{"code":"341601","parentCode":"341600","name":"亳州市市辖区","level":3,"sort":1250},{"code":"341602","parentCode":"341600","name":"谯城区","level":3,"sort":1251},{"code":"341621","parentCode":"341600","name":"涡阳县","level":3,"sort":1252},{"code":"341622","parentCode":"341600","name":"蒙城县","level":3,"sort":1253},{"code":"341623","parentCode":"341600","name":"利辛县","level":3,"sort":1254},{"code":"341700","parentCode":"340000","name":"池州市","level":2,"sort":1255},{"code":"341701","parentCode":"341700","name":"池州市市辖区","level":3,"sort":1256},{"code":"341702","parentCode":"341700","name":"贵池区","level":3,"sort":1257},{"code":"341721","parentCode":"341700","name":"东至县","level":3,"sort":1258},{"code":"341722","parentCode":"341700","name":"石台县","level":3,"sort":1259},{"code":"341723","parentCode":"341700","name":"青阳县","level":3,"sort":1260},{"code":"341800","parentCode":"340000","name":"宣城市","level":2,"sort":1261},{"code":"341801","parentCode":"341800","name":"宣城市市辖区","level":3,"sort":1262},{"code":"341802","parentCode":"341800","name":"宣州区","level":3,"sort":1263},{"code":"341821","parentCode":"341800","name":"郎溪县","level":3,"sort":1264},{"code":"341822","parentCode":"341800","name":"广德县","level":3,"sort":1265},{"code":"341823","parentCode":"341800","name":"泾县","level":3,"sort":1266},{"code":"341824","parentCode":"341800","name":"绩溪县","level":3,"sort":1267},{"code":"341825","parentCode":"341800","name":"旌德县","level":3,"sort":1268},{"code":"341881","parentCode":"341800","name":"宁国市","level":3,"sort":1269},{"code":"350000","parentCode":null,"name":"福建省","level":1,"sort":1270},{"code":"350100","parentCode":"350000","name":"福州市","level":2,"sort":1271},{"code":"350101","parentCode":"350100","name":"福州市市辖区","level":3,"sort":1272},{"code":"350102","parentCode":"350100","name":"福州市鼓楼区","level":3,"sort":1273},{"code":"350103","parentCode":"350100","name":"台江区","level":3,"sort":1274},{"code":"350104","parentCode":"350100","name":"仓山区","level":3,"sort":1275},{"code":"350105","parentCode":"350100","name":"马尾区","level":3,"sort":1276},{"code":"350111","parentCode":"350100","name":"晋安区","level":3,"sort":1277},{"code":"350121","parentCode":"350100","name":"闽侯县","level":3,"sort":1278},{"code":"350122","parentCode":"350100","name":"连江县","level":3,"sort":1279},{"code":"350123","parentCode":"350100","name":"罗源县","level":3,"sort":1280},{"code":"350124","parentCode":"350100","name":"闽清县","level":3,"sort":1281},{"code":"350125","parentCode":"350100","name":"永泰县","level":3,"sort":1282},{"code":"350128","parentCode":"350100","name":"平潭县","level":3,"sort":1283},{"code":"350181","parentCode":"350100","name":"福清市","level":3,"sort":1284},{"code":"350182","parentCode":"350100","name":"长乐市","level":3,"sort":1285},{"code":"350200","parentCode":"350000","name":"厦门市","level":2,"sort":1286},{"code":"350201","parentCode":"350200","name":"厦门市市辖区","level":3,"sort":1287},{"code":"350203","parentCode":"350200","name":"思明区","level":3,"sort":1288},{"code":"350205","parentCode":"350200","name":"海沧区","level":3,"sort":1289},{"code":"350206","parentCode":"350200","name":"湖里区","level":3,"sort":1290},{"code":"350211","parentCode":"350200","name":"集美区","level":3,"sort":1291},{"code":"350212","parentCode":"350200","name":"同安区","level":3,"sort":1292},{"code":"350213","parentCode":"350200","name":"翔安区","level":3,"sort":1293},{"code":"350300","parentCode":"350000","name":"莆田市","level":2,"sort":1294},{"code":"350301","parentCode":"350300","name":"莆田市市辖区","level":3,"sort":1295},{"code":"350302","parentCode":"350300","name":"城厢区","level":3,"sort":1296},{"code":"350303","parentCode":"350300","name":"涵江区","level":3,"sort":1297},{"code":"350304","parentCode":"350300","name":"荔城区","level":3,"sort":1298},{"code":"350305","parentCode":"350300","name":"秀屿区","level":3,"sort":1299},{"code":"350322","parentCode":"350300","name":"仙游县","level":3,"sort":1300},{"code":"350400","parentCode":"350000","name":"三明市","level":2,"sort":1301},{"code":"350401","parentCode":"350400","name":"三明市市辖区","level":3,"sort":1302},{"code":"350402","parentCode":"350400","name":"梅列区","level":3,"sort":1303},{"code":"350403","parentCode":"350400","name":"三元区","level":3,"sort":1304},{"code":"350421","parentCode":"350400","name":"明溪县","level":3,"sort":1305},{"code":"350423","parentCode":"350400","name":"清流县","level":3,"sort":1306},{"code":"350424","parentCode":"350400","name":"宁化县","level":3,"sort":1307},{"code":"350425","parentCode":"350400","name":"大田县","level":3,"sort":1308},{"code":"350426","parentCode":"350400","name":"尤溪县","level":3,"sort":1309},{"code":"350427","parentCode":"350400","name":"沙县","level":3,"sort":1310},{"code":"350428","parentCode":"350400","name":"将乐县","level":3,"sort":1311},{"code":"350429","parentCode":"350400","name":"泰宁县","level":3,"sort":1312},{"code":"350430","parentCode":"350400","name":"建宁县","level":3,"sort":1313},{"code":"350481","parentCode":"350400","name":"永安市","level":3,"sort":1314},{"code":"350500","parentCode":"350000","name":"泉州市","level":2,"sort":1315},{"code":"350501","parentCode":"350500","name":"泉州市市辖区","level":3,"sort":1316},{"code":"350502","parentCode":"350500","name":"鲤城区","level":3,"sort":1317},{"code":"350503","parentCode":"350500","name":"丰泽区","level":3,"sort":1318},{"code":"350504","parentCode":"350500","name":"洛江区","level":3,"sort":1319},{"code":"350505","parentCode":"350500","name":"泉港区","level":3,"sort":1320},{"code":"350521","parentCode":"350500","name":"惠安县","level":3,"sort":1321},{"code":"350524","parentCode":"350500","name":"安溪县","level":3,"sort":1322},{"code":"350525","parentCode":"350500","name":"永春县","level":3,"sort":1323},{"code":"350526","parentCode":"350500","name":"德化县","level":3,"sort":1324},{"code":"350527","parentCode":"350500","name":"金门县","level":3,"sort":1325},{"code":"350581","parentCode":"350500","name":"石狮市","level":3,"sort":1326},{"code":"350582","parentCode":"350500","name":"晋江市","level":3,"sort":1327},{"code":"350583","parentCode":"350500","name":"南安市","level":3,"sort":1328},{"code":"350600","parentCode":"350000","name":"漳州市","level":2,"sort":1329},{"code":"350601","parentCode":"350600","name":"漳州市市辖区","level":3,"sort":1330},{"code":"350602","parentCode":"350600","name":"芗城区","level":3,"sort":1331},{"code":"350603","parentCode":"350600","name":"龙文区","level":3,"sort":1332},{"code":"350622","parentCode":"350600","name":"云霄县","level":3,"sort":1333},{"code":"350623","parentCode":"350600","name":"漳浦县","level":3,"sort":1334},{"code":"350624","parentCode":"350600","name":"诏安县","level":3,"sort":1335},{"code":"350625","parentCode":"350600","name":"长泰县","level":3,"sort":1336},{"code":"350626","parentCode":"350600","name":"东山县","level":3,"sort":1337},{"code":"350627","parentCode":"350600","name":"南靖县","level":3,"sort":1338},{"code":"350628","parentCode":"350600","name":"平和县","level":3,"sort":1339},{"code":"350629","parentCode":"350600","name":"华安县","level":3,"sort":1340},{"code":"350681","parentCode":"350600","name":"龙海市","level":3,"sort":1341},{"code":"350700","parentCode":"350000","name":"南平市","level":2,"sort":1342},{"code":"350701","parentCode":"350700","name":"南平市市辖区","level":3,"sort":1343},{"code":"350702","parentCode":"350700","name":"延平区","level":3,"sort":1344},{"code":"350721","parentCode":"350700","name":"顺昌县","level":3,"sort":1345},{"code":"350722","parentCode":"350700","name":"浦城县","level":3,"sort":1346},{"code":"350723","parentCode":"350700","name":"光泽县","level":3,"sort":1347},{"code":"350724","parentCode":"350700","name":"松溪县","level":3,"sort":1348},{"code":"350725","parentCode":"350700","name":"政和县","level":3,"sort":1349},{"code":"350781","parentCode":"350700","name":"邵武市","level":3,"sort":1350},{"code":"350782","parentCode":"350700","name":"武夷山市","level":3,"sort":1351},{"code":"350783","parentCode":"350700","name":"建瓯市","level":3,"sort":1352},{"code":"350784","parentCode":"350700","name":"建阳市","level":3,"sort":1353},{"code":"350800","parentCode":"350000","name":"龙岩市","level":2,"sort":1354},{"code":"350801","parentCode":"350800","name":"龙岩市市辖区","level":3,"sort":1355},{"code":"350802","parentCode":"350800","name":"新罗区","level":3,"sort":1356},{"code":"350821","parentCode":"350800","name":"长汀县","level":3,"sort":1357},{"code":"350822","parentCode":"350800","name":"永定县","level":3,"sort":1358},{"code":"350823","parentCode":"350800","name":"上杭县","level":3,"sort":1359},{"code":"350824","parentCode":"350800","name":"武平县","level":3,"sort":1360},{"code":"350825","parentCode":"350800","name":"连城县","level":3,"sort":1361},{"code":"350881","parentCode":"350800","name":"漳平市","level":3,"sort":1362},{"code":"350900","parentCode":"350000","name":"宁德市","level":2,"sort":1363},{"code":"350901","parentCode":"350900","name":"宁德市市辖区","level":3,"sort":1364},{"code":"350902","parentCode":"350900","name":"蕉城区","level":3,"sort":1365},{"code":"350921","parentCode":"350900","name":"霞浦县","level":3,"sort":1366},{"code":"350922","parentCode":"350900","name":"古田县","level":3,"sort":1367},{"code":"350923","parentCode":"350900","name":"屏南县","level":3,"sort":1368},{"code":"350924","parentCode":"350900","name":"寿宁县","level":3,"sort":1369},{"code":"350925","parentCode":"350900","name":"周宁县","level":3,"sort":1370},{"code":"350926","parentCode":"350900","name":"柘荣县","level":3,"sort":1371},{"code":"350981","parentCode":"350900","name":"福安市","level":3,"sort":1372},{"code":"350982","parentCode":"350900","name":"福鼎市","level":3,"sort":1373},{"code":"360000","parentCode":null,"name":"江西省","level":1,"sort":1374},{"code":"360100","parentCode":"360000","name":"南昌市","level":2,"sort":1375},{"code":"360101","parentCode":"360100","name":"南昌市市辖区","level":3,"sort":1376},{"code":"360102","parentCode":"360100","name":"东湖区","level":3,"sort":1377},{"code":"360103","parentCode":"360100","name":"西湖区","level":3,"sort":1378},{"code":"360104","parentCode":"360100","name":"青云谱区","level":3,"sort":1379},{"code":"360105","parentCode":"360100","name":"湾里区","level":3,"sort":1380},{"code":"360111","parentCode":"360100","name":"青山湖区","level":3,"sort":1381},{"code":"360121","parentCode":"360100","name":"南昌县","level":3,"sort":1382},{"code":"360122","parentCode":"360100","name":"新建县","level":3,"sort":1383},{"code":"360123","parentCode":"360100","name":"安义县","level":3,"sort":1384},{"code":"360124","parentCode":"360100","name":"进贤县","level":3,"sort":1385},{"code":"360200","parentCode":"360000","name":"景德镇市","level":2,"sort":1386},{"code":"360201","parentCode":"360200","name":"景德镇市市辖区","level":3,"sort":1387},{"code":"360202","parentCode":"360200","name":"昌江区","level":3,"sort":1388},{"code":"360203","parentCode":"360200","name":"珠山区","level":3,"sort":1389},{"code":"360222","parentCode":"360200","name":"浮梁县","level":3,"sort":1390},{"code":"360281","parentCode":"360200","name":"乐平市","level":3,"sort":1391},{"code":"360300","parentCode":"360000","name":"萍乡市","level":2,"sort":1392},{"code":"360301","parentCode":"360300","name":"萍乡市市辖区","level":3,"sort":1393},{"code":"360302","parentCode":"360300","name":"安源区","level":3,"sort":1394},{"code":"360313","parentCode":"360300","name":"湘东区","level":3,"sort":1395},{"code":"360321","parentCode":"360300","name":"莲花县","level":3,"sort":1396},{"code":"360322","parentCode":"360300","name":"上栗县","level":3,"sort":1397},{"code":"360323","parentCode":"360300","name":"芦溪县","level":3,"sort":1398},{"code":"360400","parentCode":"360000","name":"九江市","level":2,"sort":1399},{"code":"360401","parentCode":"360400","name":"九江市市辖区","level":3,"sort":1400},{"code":"360402","parentCode":"360400","name":"庐山区","level":3,"sort":1401},{"code":"360403","parentCode":"360400","name":"浔阳区","level":3,"sort":1402},{"code":"360421","parentCode":"360400","name":"九江县","level":3,"sort":1403},{"code":"360423","parentCode":"360400","name":"武宁县","level":3,"sort":1404},{"code":"360424","parentCode":"360400","name":"修水县","level":3,"sort":1405},{"code":"360425","parentCode":"360400","name":"永修县","level":3,"sort":1406},{"code":"360426","parentCode":"360400","name":"德安县","level":3,"sort":1407},{"code":"360427","parentCode":"360400","name":"星子县","level":3,"sort":1408},{"code":"360428","parentCode":"360400","name":"都昌县","level":3,"sort":1409},{"code":"360429","parentCode":"360400","name":"湖口县","level":3,"sort":1410},{"code":"360430","parentCode":"360400","name":"彭泽县","level":3,"sort":1411},{"code":"360481","parentCode":"360400","name":"瑞昌市","level":3,"sort":1412},{"code":"360482","parentCode":"360400","name":"共青城市","level":3,"sort":1413},{"code":"360500","parentCode":"360000","name":"新余市","level":2,"sort":1414},{"code":"360501","parentCode":"360500","name":"新余市市辖区","level":3,"sort":1415},{"code":"360502","parentCode":"360500","name":"渝水区","level":3,"sort":1416},{"code":"360521","parentCode":"360500","name":"分宜县","level":3,"sort":1417},{"code":"360600","parentCode":"360000","name":"鹰潭市","level":2,"sort":1418},{"code":"360601","parentCode":"360600","name":"鹰潭市市辖区","level":3,"sort":1419},{"code":"360602","parentCode":"360600","name":"月湖区","level":3,"sort":1420},{"code":"360622","parentCode":"360600","name":"余江县","level":3,"sort":1421},{"code":"360681","parentCode":"360600","name":"贵溪市","level":3,"sort":1422},{"code":"360700","parentCode":"360000","name":"赣州市","level":2,"sort":1423},{"code":"360701","parentCode":"360700","name":"赣州市市辖区","level":3,"sort":1424},{"code":"360702","parentCode":"360700","name":"章贡区","level":3,"sort":1425},{"code":"360721","parentCode":"360700","name":"赣县","level":3,"sort":1426},{"code":"360722","parentCode":"360700","name":"信丰县","level":3,"sort":1427},{"code":"360723","parentCode":"360700","name":"大余县","level":3,"sort":1428},{"code":"360724","parentCode":"360700","name":"上犹县","level":3,"sort":1429},{"code":"360725","parentCode":"360700","name":"崇义县","level":3,"sort":1430},{"code":"360726","parentCode":"360700","name":"安远县","level":3,"sort":1431},{"code":"360727","parentCode":"360700","name":"龙南县","level":3,"sort":1432},{"code":"360728","parentCode":"360700","name":"定南县","level":3,"sort":1433},{"code":"360729","parentCode":"360700","name":"全南县","level":3,"sort":1434},{"code":"360730","parentCode":"360700","name":"宁都县","level":3,"sort":1435},{"code":"360731","parentCode":"360700","name":"于都县","level":3,"sort":1436},{"code":"360732","parentCode":"360700","name":"兴国县","level":3,"sort":1437},{"code":"360733","parentCode":"360700","name":"会昌县","level":3,"sort":1438},{"code":"360734","parentCode":"360700","name":"寻乌县","level":3,"sort":1439},{"code":"360735","parentCode":"360700","name":"石城县","level":3,"sort":1440},{"code":"360781","parentCode":"360700","name":"瑞金市","level":3,"sort":1441},{"code":"360782","parentCode":"360700","name":"南康市","level":3,"sort":1442},{"code":"360800","parentCode":"360000","name":"吉安市","level":2,"sort":1443},{"code":"360801","parentCode":"360800","name":"吉安市市辖区","level":3,"sort":1444},{"code":"360802","parentCode":"360800","name":"吉州区","level":3,"sort":1445},{"code":"360803","parentCode":"360800","name":"青原区","level":3,"sort":1446},{"code":"360821","parentCode":"360800","name":"吉安县","level":3,"sort":1447},{"code":"360822","parentCode":"360800","name":"吉水县","level":3,"sort":1448},{"code":"360823","parentCode":"360800","name":"峡江县","level":3,"sort":1449},{"code":"360824","parentCode":"360800","name":"新干县","level":3,"sort":1450},{"code":"360825","parentCode":"360800","name":"永丰县","level":3,"sort":1451},{"code":"360826","parentCode":"360800","name":"泰和县","level":3,"sort":1452},{"code":"360827","parentCode":"360800","name":"遂川县","level":3,"sort":1453},{"code":"360828","parentCode":"360800","name":"万安县","level":3,"sort":1454},{"code":"360829","parentCode":"360800","name":"安福县","level":3,"sort":1455},{"code":"360830","parentCode":"360800","name":"永新县","level":3,"sort":1456},{"code":"360881","parentCode":"360800","name":"井冈山市","level":3,"sort":1457},{"code":"360900","parentCode":"360000","name":"宜春市","level":2,"sort":1458},{"code":"360901","parentCode":"360900","name":"宜春市市辖区","level":3,"sort":1459},{"code":"360902","parentCode":"360900","name":"袁州区","level":3,"sort":1460},{"code":"360921","parentCode":"360900","name":"奉新县","level":3,"sort":1461},{"code":"360922","parentCode":"360900","name":"万载县","level":3,"sort":1462},{"code":"360923","parentCode":"360900","name":"上高县","level":3,"sort":1463},{"code":"360924","parentCode":"360900","name":"宜丰县","level":3,"sort":1464},{"code":"360925","parentCode":"360900","name":"靖安县","level":3,"sort":1465},{"code":"360926","parentCode":"360900","name":"铜鼓县","level":3,"sort":1466},{"code":"360981","parentCode":"360900","name":"丰城市","level":3,"sort":1467},{"code":"360982","parentCode":"360900","name":"樟树市","level":3,"sort":1468},{"code":"360983","parentCode":"360900","name":"高安市","level":3,"sort":1469},{"code":"361000","parentCode":"360000","name":"抚州市","level":2,"sort":1470},{"code":"361001","parentCode":"361000","name":"抚州市市辖区","level":3,"sort":1471},{"code":"361002","parentCode":"361000","name":"临川区","level":3,"sort":1472},{"code":"361021","parentCode":"361000","name":"南城县","level":3,"sort":1473},{"code":"361022","parentCode":"361000","name":"黎川县","level":3,"sort":1474},{"code":"361023","parentCode":"361000","name":"南丰县","level":3,"sort":1475},{"code":"361024","parentCode":"361000","name":"崇仁县","level":3,"sort":1476},{"code":"361025","parentCode":"361000","name":"乐安县","level":3,"sort":1477},{"code":"361026","parentCode":"361000","name":"宜黄县","level":3,"sort":1478},{"code":"361027","parentCode":"361000","name":"金溪县","level":3,"sort":1479},{"code":"361028","parentCode":"361000","name":"资溪县","level":3,"sort":1480},{"code":"361029","parentCode":"361000","name":"东乡县","level":3,"sort":1481},{"code":"361030","parentCode":"361000","name":"广昌县","level":3,"sort":1482},{"code":"361100","parentCode":"360000","name":"上饶市","level":2,"sort":1483},{"code":"361101","parentCode":"361100","name":"上饶市市辖区","level":3,"sort":1484},{"code":"361102","parentCode":"361100","name":"信州区","level":3,"sort":1485},{"code":"361121","parentCode":"361100","name":"上饶县","level":3,"sort":1486},{"code":"361122","parentCode":"361100","name":"广丰县","level":3,"sort":1487},{"code":"361123","parentCode":"361100","name":"玉山县","level":3,"sort":1488},{"code":"361124","parentCode":"361100","name":"铅山县","level":3,"sort":1489},{"code":"361125","parentCode":"361100","name":"横峰县","level":3,"sort":1490},{"code":"361126","parentCode":"361100","name":"弋阳县","level":3,"sort":1491},{"code":"361127","parentCode":"361100","name":"余干县","level":3,"sort":1492},{"code":"361128","parentCode":"361100","name":"鄱阳县","level":3,"sort":1493},{"code":"361129","parentCode":"361100","name":"万年县","level":3,"sort":1494},{"code":"361130","parentCode":"361100","name":"婺源县","level":3,"sort":1495},{"code":"361181","parentCode":"361100","name":"德兴市","level":3,"sort":1496},{"code":"370000","parentCode":null,"name":"山东省","level":1,"sort":1497},{"code":"370100","parentCode":"370000","name":"济南市","level":2,"sort":1498},{"code":"370101","parentCode":"370100","name":"济南市市辖区","level":3,"sort":1499},{"code":"370102","parentCode":"370100","name":"历下区","level":3,"sort":1500},{"code":"370103","parentCode":"370100","name":"济南市市中区","level":3,"sort":1501},{"code":"370104","parentCode":"370100","name":"槐荫区","level":3,"sort":1502},{"code":"370105","parentCode":"370100","name":"天桥区","level":3,"sort":1503},{"code":"370112","parentCode":"370100","name":"历城区","level":3,"sort":1504},{"code":"370113","parentCode":"370100","name":"长清区","level":3,"sort":1505},{"code":"370124","parentCode":"370100","name":"平阴县","level":3,"sort":1506},{"code":"370125","parentCode":"370100","name":"济阳县","level":3,"sort":1507},{"code":"370126","parentCode":"370100","name":"商河县","level":3,"sort":1508},{"code":"370181","parentCode":"370100","name":"章丘市","level":3,"sort":1509},{"code":"370200","parentCode":"370000","name":"青岛市","level":2,"sort":1510},{"code":"370201","parentCode":"370200","name":"青岛市市辖区","level":3,"sort":1511},{"code":"370202","parentCode":"370200","name":"市南区","level":3,"sort":1512},{"code":"370203","parentCode":"370200","name":"市北区","level":3,"sort":1513},{"code":"370205","parentCode":"370200","name":"四方区","level":3,"sort":1514},{"code":"370211","parentCode":"370200","name":"黄岛区","level":3,"sort":1515},{"code":"370212","parentCode":"370200","name":"崂山区","level":3,"sort":1516},{"code":"370213","parentCode":"370200","name":"李沧区","level":3,"sort":1517},{"code":"370214","parentCode":"370200","name":"城阳区","level":3,"sort":1518},{"code":"370281","parentCode":"370200","name":"胶州市","level":3,"sort":1519},{"code":"370282","parentCode":"370200","name":"即墨市","level":3,"sort":1520},{"code":"370283","parentCode":"370200","name":"平度市","level":3,"sort":1521},{"code":"370284","parentCode":"370200","name":"胶南市","level":3,"sort":1522},{"code":"370285","parentCode":"370200","name":"莱西市","level":3,"sort":1523},{"code":"370300","parentCode":"370000","name":"淄博市","level":2,"sort":1524},{"code":"370301","parentCode":"370300","name":"淄博市市辖区","level":3,"sort":1525},{"code":"370302","parentCode":"370300","name":"淄川区","level":3,"sort":1526},{"code":"370303","parentCode":"370300","name":"张店区","level":3,"sort":1527},{"code":"370304","parentCode":"370300","name":"博山区","level":3,"sort":1528},{"code":"370305","parentCode":"370300","name":"临淄区","level":3,"sort":1529},{"code":"370306","parentCode":"370300","name":"周村区","level":3,"sort":1530},{"code":"370321","parentCode":"370300","name":"桓台县","level":3,"sort":1531},{"code":"370322","parentCode":"370300","name":"高青县","level":3,"sort":1532},{"code":"370323","parentCode":"370300","name":"沂源县","level":3,"sort":1533},{"code":"370400","parentCode":"370000","name":"枣庄市","level":2,"sort":1534},{"code":"370401","parentCode":"370400","name":"枣庄市市辖区","level":3,"sort":1535},{"code":"370402","parentCode":"370400","name":"枣庄市市中区","level":3,"sort":1536},{"code":"370403","parentCode":"370400","name":"薛城区","level":3,"sort":1537},{"code":"370404","parentCode":"370400","name":"峄城区","level":3,"sort":1538},{"code":"370405","parentCode":"370400","name":"台儿庄区","level":3,"sort":1539},{"code":"370406","parentCode":"370400","name":"山亭区","level":3,"sort":1540},{"code":"370481","parentCode":"370400","name":"滕州市","level":3,"sort":1541},{"code":"370500","parentCode":"370000","name":"东营市","level":2,"sort":1542},{"code":"370501","parentCode":"370500","name":"东营市市辖区","level":3,"sort":1543},{"code":"370502","parentCode":"370500","name":"东营区","level":3,"sort":1544},{"code":"370503","parentCode":"370500","name":"河口区","level":3,"sort":1545},{"code":"370521","parentCode":"370500","name":"垦利县","level":3,"sort":1546},{"code":"370522","parentCode":"370500","name":"利津县","level":3,"sort":1547},{"code":"370523","parentCode":"370500","name":"广饶县","level":3,"sort":1548},{"code":"370600","parentCode":"370000","name":"烟台市","level":2,"sort":1549},{"code":"370601","parentCode":"370600","name":"烟台市市辖区","level":3,"sort":1550},{"code":"370602","parentCode":"370600","name":"芝罘区","level":3,"sort":1551},{"code":"370611","parentCode":"370600","name":"福山区","level":3,"sort":1552},{"code":"370612","parentCode":"370600","name":"牟平区","level":3,"sort":1553},{"code":"370613","parentCode":"370600","name":"莱山区","level":3,"sort":1554},{"code":"370634","parentCode":"370600","name":"长岛县","level":3,"sort":1555},{"code":"370681","parentCode":"370600","name":"龙口市","level":3,"sort":1556},{"code":"370682","parentCode":"370600","name":"莱阳市","level":3,"sort":1557},{"code":"370683","parentCode":"370600","name":"莱州市","level":3,"sort":1558},{"code":"370684","parentCode":"370600","name":"蓬莱市","level":3,"sort":1559},{"code":"370685","parentCode":"370600","name":"招远市","level":3,"sort":1560},{"code":"370686","parentCode":"370600","name":"栖霞市","level":3,"sort":1561},{"code":"370687","parentCode":"370600","name":"海阳市","level":3,"sort":1562},{"code":"370700","parentCode":"370000","name":"潍坊市","level":2,"sort":1563},{"code":"370701","parentCode":"370700","name":"潍坊市市辖区","level":3,"sort":1564},{"code":"370702","parentCode":"370700","name":"潍城区","level":3,"sort":1565},{"code":"370703","parentCode":"370700","name":"寒亭区","level":3,"sort":1566},{"code":"370704","parentCode":"370700","name":"坊子区","level":3,"sort":1567},{"code":"370705","parentCode":"370700","name":"奎文区","level":3,"sort":1568},{"code":"370724","parentCode":"370700","name":"临朐县","level":3,"sort":1569},{"code":"370725","parentCode":"370700","name":"昌乐县","level":3,"sort":1570},{"code":"370781","parentCode":"370700","name":"青州市","level":3,"sort":1571},{"code":"370782","parentCode":"370700","name":"诸城市","level":3,"sort":1572},{"code":"370783","parentCode":"370700","name":"寿光市","level":3,"sort":1573},{"code":"370784","parentCode":"370700","name":"安丘市","level":3,"sort":1574},{"code":"370785","parentCode":"370700","name":"高密市","level":3,"sort":1575},{"code":"370786","parentCode":"370700","name":"昌邑市","level":3,"sort":1576},{"code":"370800","parentCode":"370000","name":"济宁市","level":2,"sort":1577},{"code":"370801","parentCode":"370800","name":"济宁市市辖区","level":3,"sort":1578},{"code":"370802","parentCode":"370800","name":"济宁市市中区","level":3,"sort":1579},{"code":"370811","parentCode":"370800","name":"任城区","level":3,"sort":1580},{"code":"370826","parentCode":"370800","name":"微山县","level":3,"sort":1581},{"code":"370827","parentCode":"370800","name":"鱼台县","level":3,"sort":1582},{"code":"370828","parentCode":"370800","name":"金乡县","level":3,"sort":1583},{"code":"370829","parentCode":"370800","name":"嘉祥县","level":3,"sort":1584},{"code":"370830","parentCode":"370800","name":"汶上县","level":3,"sort":1585},{"code":"370831","parentCode":"370800","name":"泗水县","level":3,"sort":1586},{"code":"370832","parentCode":"370800","name":"梁山县","level":3,"sort":1587},{"code":"370881","parentCode":"370800","name":"曲阜市","level":3,"sort":1588},{"code":"370882","parentCode":"370800","name":"兖州市","level":3,"sort":1589},{"code":"370883","parentCode":"370800","name":"邹城市","level":3,"sort":1590},{"code":"370900","parentCode":"370000","name":"泰安市","level":2,"sort":1591},{"code":"370901","parentCode":"370900","name":"泰安市市辖区","level":3,"sort":1592},{"code":"370902","parentCode":"370900","name":"泰山区","level":3,"sort":1593},{"code":"370911","parentCode":"370900","name":"岱岳区","level":3,"sort":1594},{"code":"370921","parentCode":"370900","name":"宁阳县","level":3,"sort":1595},{"code":"370923","parentCode":"370900","name":"东平县","level":3,"sort":1596},{"code":"370982","parentCode":"370900","name":"新泰市","level":3,"sort":1597},{"code":"370983","parentCode":"370900","name":"肥城市","level":3,"sort":1598},{"code":"371000","parentCode":"370000","name":"威海市","level":2,"sort":1599},{"code":"371001","parentCode":"371000","name":"威海市市辖区","level":3,"sort":1600},{"code":"371002","parentCode":"371000","name":"环翠区","level":3,"sort":1601},{"code":"371081","parentCode":"371000","name":"文登市","level":3,"sort":1602},{"code":"371082","parentCode":"371000","name":"荣成市","level":3,"sort":1603},{"code":"371083","parentCode":"371000","name":"乳山市","level":3,"sort":1604},{"code":"371100","parentCode":"370000","name":"日照市","level":2,"sort":1605},{"code":"371101","parentCode":"371100","name":"日照市市辖区","level":3,"sort":1606},{"code":"371102","parentCode":"371100","name":"东港区","level":3,"sort":1607},{"code":"371103","parentCode":"371100","name":"岚山区","level":3,"sort":1608},{"code":"371121","parentCode":"371100","name":"五莲县","level":3,"sort":1609},{"code":"371122","parentCode":"371100","name":"莒县","level":3,"sort":1610},{"code":"371200","parentCode":"370000","name":"莱芜市","level":2,"sort":1611},{"code":"371201","parentCode":"371200","name":"莱芜市市辖区","level":3,"sort":1612},{"code":"371202","parentCode":"371200","name":"莱城区","level":3,"sort":1613},{"code":"371203","parentCode":"371200","name":"钢城区","level":3,"sort":1614},{"code":"371300","parentCode":"370000","name":"临沂市","level":2,"sort":1615},{"code":"371301","parentCode":"371300","name":"临沂市市辖区","level":3,"sort":1616},{"code":"371302","parentCode":"371300","name":"兰山区","level":3,"sort":1617},{"code":"371311","parentCode":"371300","name":"罗庄区","level":3,"sort":1618},{"code":"371312","parentCode":"371300","name":"河东区","level":3,"sort":1619},{"code":"371321","parentCode":"371300","name":"沂南县","level":3,"sort":1620},{"code":"371322","parentCode":"371300","name":"郯城县","level":3,"sort":1621},{"code":"371323","parentCode":"371300","name":"沂水县","level":3,"sort":1622},{"code":"371324","parentCode":"371300","name":"苍山县","level":3,"sort":1623},{"code":"371325","parentCode":"371300","name":"费县","level":3,"sort":1624},{"code":"371326","parentCode":"371300","name":"平邑县","level":3,"sort":1625},{"code":"371327","parentCode":"371300","name":"莒南县","level":3,"sort":1626},{"code":"371328","parentCode":"371300","name":"蒙阴县","level":3,"sort":1627},{"code":"371329","parentCode":"371300","name":"临沭县","level":3,"sort":1628},{"code":"371400","parentCode":"370000","name":"德州市","level":2,"sort":1629},{"code":"371401","parentCode":"371400","name":"德州市市辖区","level":3,"sort":1630},{"code":"371402","parentCode":"371400","name":"德城区","level":3,"sort":1631},{"code":"371421","parentCode":"371400","name":"陵县","level":3,"sort":1632},{"code":"371422","parentCode":"371400","name":"宁津县","level":3,"sort":1633},{"code":"371423","parentCode":"371400","name":"庆云县","level":3,"sort":1634},{"code":"371424","parentCode":"371400","name":"临邑县","level":3,"sort":1635},{"code":"371425","parentCode":"371400","name":"齐河县","level":3,"sort":1636},{"code":"371426","parentCode":"371400","name":"平原县","level":3,"sort":1637},{"code":"371427","parentCode":"371400","name":"夏津县","level":3,"sort":1638},{"code":"371428","parentCode":"371400","name":"武城县","level":3,"sort":1639},{"code":"371481","parentCode":"371400","name":"乐陵市","level":3,"sort":1640},{"code":"371482","parentCode":"371400","name":"禹城市","level":3,"sort":1641},{"code":"371500","parentCode":"370000","name":"聊城市","level":2,"sort":1642},{"code":"371501","parentCode":"371500","name":"聊城市市辖区","level":3,"sort":1643},{"code":"371502","parentCode":"371500","name":"东昌府区","level":3,"sort":1644},{"code":"371521","parentCode":"371500","name":"阳谷县","level":3,"sort":1645},{"code":"371522","parentCode":"371500","name":"莘县","level":3,"sort":1646},{"code":"371523","parentCode":"371500","name":"茌平县","level":3,"sort":1647},{"code":"371524","parentCode":"371500","name":"东阿县","level":3,"sort":1648},{"code":"371525","parentCode":"371500","name":"冠县","level":3,"sort":1649},{"code":"371526","parentCode":"371500","name":"高唐县","level":3,"sort":1650},{"code":"371581","parentCode":"371500","name":"临清市","level":3,"sort":1651},{"code":"371600","parentCode":"370000","name":"滨州市","level":2,"sort":1652},{"code":"371601","parentCode":"371600","name":"滨州市市辖区","level":3,"sort":1653},{"code":"371602","parentCode":"371600","name":"滨城区","level":3,"sort":1654},{"code":"371621","parentCode":"371600","name":"惠民县","level":3,"sort":1655},{"code":"371622","parentCode":"371600","name":"阳信县","level":3,"sort":1656},{"code":"371623","parentCode":"371600","name":"无棣县","level":3,"sort":1657},{"code":"371624","parentCode":"371600","name":"沾化县","level":3,"sort":1658},{"code":"371625","parentCode":"371600","name":"博兴县","level":3,"sort":1659},{"code":"371626","parentCode":"371600","name":"邹平县","level":3,"sort":1660},{"code":"371700","parentCode":"370000","name":"菏泽市","level":2,"sort":1661},{"code":"371701","parentCode":"371700","name":"菏泽市市辖区","level":3,"sort":1662},{"code":"371702","parentCode":"371700","name":"牡丹区","level":3,"sort":1663},{"code":"371721","parentCode":"371700","name":"曹县","level":3,"sort":1664},{"code":"371722","parentCode":"371700","name":"单县","level":3,"sort":1665},{"code":"371723","parentCode":"371700","name":"成武县","level":3,"sort":1666},{"code":"371724","parentCode":"371700","name":"巨野县","level":3,"sort":1667},{"code":"371725","parentCode":"371700","name":"郓城县","level":3,"sort":1668},{"code":"371726","parentCode":"371700","name":"鄄城县","level":3,"sort":1669},{"code":"371727","parentCode":"371700","name":"定陶县","level":3,"sort":1670},{"code":"371728","parentCode":"371700","name":"东明县","level":3,"sort":1671},{"code":"410000","parentCode":null,"name":"河南省","level":1,"sort":1672},{"code":"410100","parentCode":"410000","name":"郑州市","level":2,"sort":1673},{"code":"410101","parentCode":"410100","name":"郑州市市辖区","level":3,"sort":1674},{"code":"410102","parentCode":"410100","name":"中原区","level":3,"sort":1675},{"code":"410103","parentCode":"410100","name":"二七区","level":3,"sort":1676},{"code":"410104","parentCode":"410100","name":"管城回族区","level":3,"sort":1677},{"code":"410105","parentCode":"410100","name":"金水区","level":3,"sort":1678},{"code":"410106","parentCode":"410100","name":"上街区","level":3,"sort":1679},{"code":"410108","parentCode":"410100","name":"惠济区","level":3,"sort":1680},{"code":"410122","parentCode":"410100","name":"中牟县","level":3,"sort":1681},{"code":"410181","parentCode":"410100","name":"巩义市","level":3,"sort":1682},{"code":"410182","parentCode":"410100","name":"荥阳市","level":3,"sort":1683},{"code":"410183","parentCode":"410100","name":"新密市","level":3,"sort":1684},{"code":"410184","parentCode":"410100","name":"新郑市","level":3,"sort":1685},{"code":"410185","parentCode":"410100","name":"登封市","level":3,"sort":1686},{"code":"410200","parentCode":"410000","name":"开封市","level":2,"sort":1687},{"code":"410201","parentCode":"410200","name":"开封市市辖区","level":3,"sort":1688},{"code":"410202","parentCode":"410200","name":"龙亭区","level":3,"sort":1689},{"code":"410203","parentCode":"410200","name":"顺河回族区","level":3,"sort":1690},{"code":"410204","parentCode":"410200","name":"鼓楼区","level":3,"sort":1691},{"code":"410205","parentCode":"410200","name":"禹王台区","level":3,"sort":1692},{"code":"410211","parentCode":"410200","name":"金明区","level":3,"sort":1693},{"code":"410221","parentCode":"410200","name":"杞县","level":3,"sort":1694},{"code":"410222","parentCode":"410200","name":"通许县","level":3,"sort":1695},{"code":"410223","parentCode":"410200","name":"尉氏县","level":3,"sort":1696},{"code":"410224","parentCode":"410200","name":"开封县","level":3,"sort":1697},{"code":"410225","parentCode":"410200","name":"兰考县","level":3,"sort":1698},{"code":"410300","parentCode":"410000","name":"洛阳市","level":2,"sort":1699},{"code":"410301","parentCode":"410300","name":"洛阳市市辖区","level":3,"sort":1700},{"code":"410302","parentCode":"410300","name":"老城区","level":3,"sort":1701},{"code":"410303","parentCode":"410300","name":"西工区","level":3,"sort":1702},{"code":"410304","parentCode":"410300","name":"瀍河回族区","level":3,"sort":1703},{"code":"410305","parentCode":"410300","name":"涧西区","level":3,"sort":1704},{"code":"410306","parentCode":"410300","name":"吉利区","level":3,"sort":1705},{"code":"410311","parentCode":"410300","name":"洛龙区","level":3,"sort":1706},{"code":"410322","parentCode":"410300","name":"孟津县","level":3,"sort":1707},{"code":"410323","parentCode":"410300","name":"新安县","level":3,"sort":1708},{"code":"410324","parentCode":"410300","name":"栾川县","level":3,"sort":1709},{"code":"410325","parentCode":"410300","name":"嵩县","level":3,"sort":1710},{"code":"410326","parentCode":"410300","name":"汝阳县","level":3,"sort":1711},{"code":"410327","parentCode":"410300","name":"宜阳县","level":3,"sort":1712},{"code":"410328","parentCode":"410300","name":"洛宁县","level":3,"sort":1713},{"code":"410329","parentCode":"410300","name":"伊川县","level":3,"sort":1714},{"code":"410381","parentCode":"410300","name":"偃师市","level":3,"sort":1715},{"code":"410400","parentCode":"410000","name":"平顶山市","level":2,"sort":1716},{"code":"410401","parentCode":"410400","name":"平顶山市市辖区","level":3,"sort":1717},{"code":"410402","parentCode":"410400","name":"新华区","level":3,"sort":1718},{"code":"410403","parentCode":"410400","name":"卫东区","level":3,"sort":1719},{"code":"410404","parentCode":"410400","name":"石龙区","level":3,"sort":1720},{"code":"410411","parentCode":"410400","name":"湛河区","level":3,"sort":1721},{"code":"410421","parentCode":"410400","name":"宝丰县","level":3,"sort":1722},{"code":"410422","parentCode":"410400","name":"叶县","level":3,"sort":1723},{"code":"410423","parentCode":"410400","name":"鲁山县","level":3,"sort":1724},{"code":"410425","parentCode":"410400","name":"郏县","level":3,"sort":1725},{"code":"410481","parentCode":"410400","name":"舞钢市","level":3,"sort":1726},{"code":"410482","parentCode":"410400","name":"汝州市","level":3,"sort":1727},{"code":"410500","parentCode":"410000","name":"安阳市","level":2,"sort":1728},{"code":"410501","parentCode":"410500","name":"安阳市市辖区","level":3,"sort":1729},{"code":"410502","parentCode":"410500","name":"文峰区","level":3,"sort":1730},{"code":"410503","parentCode":"410500","name":"北关区","level":3,"sort":1731},{"code":"410505","parentCode":"410500","name":"殷都区","level":3,"sort":1732},{"code":"410506","parentCode":"410500","name":"龙安区","level":3,"sort":1733},{"code":"410522","parentCode":"410500","name":"安阳县","level":3,"sort":1734},{"code":"410523","parentCode":"410500","name":"汤阴县","level":3,"sort":1735},{"code":"410526","parentCode":"410500","name":"滑县","level":3,"sort":1736},{"code":"410527","parentCode":"410500","name":"内黄县","level":3,"sort":1737},{"code":"410581","parentCode":"410500","name":"林州市","level":3,"sort":1738},{"code":"410600","parentCode":"410000","name":"鹤壁市","level":2,"sort":1739},{"code":"410601","parentCode":"410600","name":"鹤壁市市辖区","level":3,"sort":1740},{"code":"410602","parentCode":"410600","name":"鹤山区","level":3,"sort":1741},{"code":"410603","parentCode":"410600","name":"山城区","level":3,"sort":1742},{"code":"410611","parentCode":"410600","name":"淇滨区","level":3,"sort":1743},{"code":"410621","parentCode":"410600","name":"浚县","level":3,"sort":1744},{"code":"410622","parentCode":"410600","name":"淇县","level":3,"sort":1745},{"code":"410700","parentCode":"410000","name":"新乡市","level":2,"sort":1746},{"code":"410701","parentCode":"410700","name":"新乡市市辖区","level":3,"sort":1747},{"code":"410702","parentCode":"410700","name":"红旗区","level":3,"sort":1748},{"code":"410703","parentCode":"410700","name":"卫滨区","level":3,"sort":1749},{"code":"410704","parentCode":"410700","name":"凤泉区","level":3,"sort":1750},{"code":"410711","parentCode":"410700","name":"牧野区","level":3,"sort":1751},{"code":"410721","parentCode":"410700","name":"新乡县","level":3,"sort":1752},{"code":"410724","parentCode":"410700","name":"获嘉县","level":3,"sort":1753},{"code":"410725","parentCode":"410700","name":"原阳县","level":3,"sort":1754},{"code":"410726","parentCode":"410700","name":"延津县","level":3,"sort":1755},{"code":"410727","parentCode":"410700","name":"封丘县","level":3,"sort":1756},{"code":"410728","parentCode":"410700","name":"长垣县","level":3,"sort":1757},{"code":"410781","parentCode":"410700","name":"卫辉市","level":3,"sort":1758},{"code":"410782","parentCode":"410700","name":"辉县市","level":3,"sort":1759},{"code":"410800","parentCode":"410000","name":"焦作市","level":2,"sort":1760},{"code":"410801","parentCode":"410800","name":"焦作市市辖区","level":3,"sort":1761},{"code":"410802","parentCode":"410800","name":"解放区","level":3,"sort":1762},{"code":"410803","parentCode":"410800","name":"中站区","level":3,"sort":1763},{"code":"410804","parentCode":"410800","name":"马村区","level":3,"sort":1764},{"code":"410811","parentCode":"410800","name":"山阳区","level":3,"sort":1765},{"code":"410821","parentCode":"410800","name":"修武县","level":3,"sort":1766},{"code":"410822","parentCode":"410800","name":"博爱县","level":3,"sort":1767},{"code":"410823","parentCode":"410800","name":"武陟县","level":3,"sort":1768},{"code":"410825","parentCode":"410800","name":"温县","level":3,"sort":1769},{"code":"410882","parentCode":"410800","name":"沁阳市","level":3,"sort":1770},{"code":"410883","parentCode":"410800","name":"孟州市","level":3,"sort":1771},{"code":"410900","parentCode":"410000","name":"濮阳市","level":2,"sort":1772},{"code":"410901","parentCode":"410900","name":"濮阳市市辖区","level":3,"sort":1773},{"code":"410902","parentCode":"410900","name":"华龙区","level":3,"sort":1774},{"code":"410922","parentCode":"410900","name":"清丰县","level":3,"sort":1775},{"code":"410923","parentCode":"410900","name":"南乐县","level":3,"sort":1776},{"code":"410926","parentCode":"410900","name":"范县","level":3,"sort":1777},{"code":"410927","parentCode":"410900","name":"台前县","level":3,"sort":1778},{"code":"410928","parentCode":"410900","name":"濮阳县","level":3,"sort":1779},{"code":"411000","parentCode":"410000","name":"许昌市","level":2,"sort":1780},{"code":"411001","parentCode":"411000","name":"许昌市市辖区","level":3,"sort":1781},{"code":"411002","parentCode":"411000","name":"魏都区","level":3,"sort":1782},{"code":"411023","parentCode":"411000","name":"许昌县","level":3,"sort":1783},{"code":"411024","parentCode":"411000","name":"鄢陵县","level":3,"sort":1784},{"code":"411025","parentCode":"411000","name":"襄城县","level":3,"sort":1785},{"code":"411081","parentCode":"411000","name":"禹州市","level":3,"sort":1786},{"code":"411082","parentCode":"411000","name":"长葛市","level":3,"sort":1787},{"code":"411100","parentCode":"410000","name":"漯河市","level":2,"sort":1788},{"code":"411101","parentCode":"411100","name":"漯河市市辖区","level":3,"sort":1789},{"code":"411102","parentCode":"411100","name":"源汇区","level":3,"sort":1790},{"code":"411103","parentCode":"411100","name":"郾城区","level":3,"sort":1791},{"code":"411104","parentCode":"411100","name":"召陵区","level":3,"sort":1792},{"code":"411121","parentCode":"411100","name":"舞阳县","level":3,"sort":1793},{"code":"411122","parentCode":"411100","name":"临颍县","level":3,"sort":1794},{"code":"411200","parentCode":"410000","name":"三门峡市","level":2,"sort":1795},{"code":"411201","parentCode":"411200","name":"三门峡市市辖区","level":3,"sort":1796},{"code":"411202","parentCode":"411200","name":"湖滨区","level":3,"sort":1797},{"code":"411221","parentCode":"411200","name":"渑池县","level":3,"sort":1798},{"code":"411222","parentCode":"411200","name":"陕县","level":3,"sort":1799},{"code":"411224","parentCode":"411200","name":"卢氏县","level":3,"sort":1800},{"code":"411281","parentCode":"411200","name":"义马市","level":3,"sort":1801},{"code":"411282","parentCode":"411200","name":"灵宝市","level":3,"sort":1802},{"code":"411300","parentCode":"410000","name":"南阳市","level":2,"sort":1803},{"code":"411301","parentCode":"411300","name":"南阳市市辖区","level":3,"sort":1804},{"code":"411302","parentCode":"411300","name":"宛城区","level":3,"sort":1805},{"code":"411303","parentCode":"411300","name":"卧龙区","level":3,"sort":1806},{"code":"411321","parentCode":"411300","name":"南召县","level":3,"sort":1807},{"code":"411322","parentCode":"411300","name":"方城县","level":3,"sort":1808},{"code":"411323","parentCode":"411300","name":"西峡县","level":3,"sort":1809},{"code":"411324","parentCode":"411300","name":"镇平县","level":3,"sort":1810},{"code":"411325","parentCode":"411300","name":"内乡县","level":3,"sort":1811},{"code":"411326","parentCode":"411300","name":"淅川县","level":3,"sort":1812},{"code":"411327","parentCode":"411300","name":"社旗县","level":3,"sort":1813},{"code":"411328","parentCode":"411300","name":"唐河县","level":3,"sort":1814},{"code":"411329","parentCode":"411300","name":"新野县","level":3,"sort":1815},{"code":"411330","parentCode":"411300","name":"桐柏县","level":3,"sort":1816},{"code":"411381","parentCode":"411300","name":"邓州市","level":3,"sort":1817},{"code":"411400","parentCode":"410000","name":"商丘市","level":2,"sort":1818},{"code":"411401","parentCode":"411400","name":"商丘市市辖区","level":3,"sort":1819},{"code":"411402","parentCode":"411400","name":"梁园区","level":3,"sort":1820},{"code":"411403","parentCode":"411400","name":"睢阳区","level":3,"sort":1821},{"code":"411421","parentCode":"411400","name":"民权县","level":3,"sort":1822},{"code":"411422","parentCode":"411400","name":"睢县","level":3,"sort":1823},{"code":"411423","parentCode":"411400","name":"宁陵县","level":3,"sort":1824},{"code":"411424","parentCode":"411400","name":"柘城县","level":3,"sort":1825},{"code":"411425","parentCode":"411400","name":"虞城县","level":3,"sort":1826},{"code":"411426","parentCode":"411400","name":"夏邑县","level":3,"sort":1827},{"code":"411481","parentCode":"411400","name":"永城市","level":3,"sort":1828},{"code":"411500","parentCode":"410000","name":"信阳市","level":2,"sort":1829},{"code":"411501","parentCode":"411500","name":"信阳市市辖区","level":3,"sort":1830},{"code":"411502","parentCode":"411500","name":"浉河区","level":3,"sort":1831},{"code":"411503","parentCode":"411500","name":"平桥区","level":3,"sort":1832},{"code":"411521","parentCode":"411500","name":"罗山县","level":3,"sort":1833},{"code":"411522","parentCode":"411500","name":"光山县","level":3,"sort":1834},{"code":"411523","parentCode":"411500","name":"新县","level":3,"sort":1835},{"code":"411524","parentCode":"411500","name":"商城县","level":3,"sort":1836},{"code":"411525","parentCode":"411500","name":"固始县","level":3,"sort":1837},{"code":"411526","parentCode":"411500","name":"潢川县","level":3,"sort":1838},{"code":"411527","parentCode":"411500","name":"淮滨县","level":3,"sort":1839},{"code":"411528","parentCode":"411500","name":"息县","level":3,"sort":1840},{"code":"411600","parentCode":"410000","name":"周口市","level":2,"sort":1841},{"code":"411601","parentCode":"411600","name":"周口市市辖区","level":3,"sort":1842},{"code":"411602","parentCode":"411600","name":"川汇区","level":3,"sort":1843},{"code":"411621","parentCode":"411600","name":"扶沟县","level":3,"sort":1844},{"code":"411622","parentCode":"411600","name":"西华县","level":3,"sort":1845},{"code":"411623","parentCode":"411600","name":"商水县","level":3,"sort":1846},{"code":"411624","parentCode":"411600","name":"沈丘县","level":3,"sort":1847},{"code":"411625","parentCode":"411600","name":"郸城县","level":3,"sort":1848},{"code":"411626","parentCode":"411600","name":"淮阳县","level":3,"sort":1849},{"code":"411627","parentCode":"411600","name":"太康县","level":3,"sort":1850},{"code":"411628","parentCode":"411600","name":"鹿邑县","level":3,"sort":1851},{"code":"411681","parentCode":"411600","name":"项城市","level":3,"sort":1852},{"code":"411700","parentCode":"410000","name":"驻马店市","level":2,"sort":1853},{"code":"411701","parentCode":"411700","name":"驻马店市市辖区","level":3,"sort":1854},{"code":"411702","parentCode":"411700","name":"驿城区","level":3,"sort":1855},{"code":"411721","parentCode":"411700","name":"西平县","level":3,"sort":1856},{"code":"411722","parentCode":"411700","name":"上蔡县","level":3,"sort":1857},{"code":"411723","parentCode":"411700","name":"平舆县","level":3,"sort":1858},{"code":"411724","parentCode":"411700","name":"正阳县","level":3,"sort":1859},{"code":"411725","parentCode":"411700","name":"确山县","level":3,"sort":1860},{"code":"411726","parentCode":"411700","name":"泌阳县","level":3,"sort":1861},{"code":"411727","parentCode":"411700","name":"汝南县","level":3,"sort":1862},{"code":"411728","parentCode":"411700","name":"遂平县","level":3,"sort":1863},{"code":"411729","parentCode":"411700","name":"新蔡县","level":3,"sort":1864},{"code":"419000","parentCode":"410000","name":"河南省省直辖县级行政区划","level":2,"sort":1865},{"code":"419001","parentCode":"419000","name":"济源市","level":3,"sort":1866},{"code":"420000","parentCode":null,"name":"湖北省","level":1,"sort":1867},{"code":"420100","parentCode":"420000","name":"武汉市","level":2,"sort":1868},{"code":"420101","parentCode":"420100","name":"武汉市市辖区","level":3,"sort":1869},{"code":"420102","parentCode":"420100","name":"江岸区","level":3,"sort":1870},{"code":"420103","parentCode":"420100","name":"江汉区","level":3,"sort":1871},{"code":"420104","parentCode":"420100","name":"硚口区","level":3,"sort":1872},{"code":"420105","parentCode":"420100","name":"汉阳区","level":3,"sort":1873},{"code":"420106","parentCode":"420100","name":"武昌区","level":3,"sort":1874},{"code":"420107","parentCode":"420100","name":"青山区","level":3,"sort":1875},{"code":"420111","parentCode":"420100","name":"洪山区","level":3,"sort":1876},{"code":"420112","parentCode":"420100","name":"东西湖区","level":3,"sort":1877},{"code":"420113","parentCode":"420100","name":"汉南区","level":3,"sort":1878},{"code":"420114","parentCode":"420100","name":"蔡甸区","level":3,"sort":1879},{"code":"420115","parentCode":"420100","name":"江夏区","level":3,"sort":1880},{"code":"420116","parentCode":"420100","name":"黄陂区","level":3,"sort":1881},{"code":"420117","parentCode":"420100","name":"新洲区","level":3,"sort":1882},{"code":"420200","parentCode":"420000","name":"黄石市","level":2,"sort":1883},{"code":"420201","parentCode":"420200","name":"黄石市市辖区","level":3,"sort":1884},{"code":"420202","parentCode":"420200","name":"黄石港区","level":3,"sort":1885},{"code":"420203","parentCode":"420200","name":"西塞山区","level":3,"sort":1886},{"code":"420204","parentCode":"420200","name":"下陆区","level":3,"sort":1887},{"code":"420205","parentCode":"420200","name":"铁山区","level":3,"sort":1888},{"code":"420222","parentCode":"420200","name":"阳新县","level":3,"sort":1889},{"code":"420281","parentCode":"420200","name":"大冶市","level":3,"sort":1890},{"code":"420300","parentCode":"420000","name":"十堰市","level":2,"sort":1891},{"code":"420301","parentCode":"420300","name":"十堰市市辖区","level":3,"sort":1892},{"code":"420302","parentCode":"420300","name":"茅箭区","level":3,"sort":1893},{"code":"420303","parentCode":"420300","name":"张湾区","level":3,"sort":1894},{"code":"420321","parentCode":"420300","name":"郧县","level":3,"sort":1895},{"code":"420322","parentCode":"420300","name":"郧西县","level":3,"sort":1896},{"code":"420323","parentCode":"420300","name":"竹山县","level":3,"sort":1897},{"code":"420324","parentCode":"420300","name":"竹溪县","level":3,"sort":1898},{"code":"420325","parentCode":"420300","name":"房县","level":3,"sort":1899},{"code":"420381","parentCode":"420300","name":"丹江口市","level":3,"sort":1900},{"code":"420500","parentCode":"420000","name":"宜昌市","level":2,"sort":1901},{"code":"420501","parentCode":"420500","name":"宜昌市市辖区","level":3,"sort":1902},{"code":"420502","parentCode":"420500","name":"西陵区","level":3,"sort":1903},{"code":"420503","parentCode":"420500","name":"伍家岗区","level":3,"sort":1904},{"code":"420504","parentCode":"420500","name":"点军区","level":3,"sort":1905},{"code":"420505","parentCode":"420500","name":"猇亭区","level":3,"sort":1906},{"code":"420506","parentCode":"420500","name":"夷陵区","level":3,"sort":1907},{"code":"420525","parentCode":"420500","name":"远安县","level":3,"sort":1908},{"code":"420526","parentCode":"420500","name":"兴山县","level":3,"sort":1909},{"code":"420527","parentCode":"420500","name":"秭归县","level":3,"sort":1910},{"code":"420528","parentCode":"420500","name":"长阳土家族自治县","level":3,"sort":1911},{"code":"420529","parentCode":"420500","name":"五峰土家族自治县","level":3,"sort":1912},{"code":"420581","parentCode":"420500","name":"宜都市","level":3,"sort":1913},{"code":"420582","parentCode":"420500","name":"当阳市","level":3,"sort":1914},{"code":"420583","parentCode":"420500","name":"枝江市","level":3,"sort":1915},{"code":"420600","parentCode":"420000","name":"襄樊市","level":2,"sort":1916},{"code":"420601","parentCode":"420600","name":"襄樊市市辖区","level":3,"sort":1917},{"code":"420602","parentCode":"420600","name":"襄城区","level":3,"sort":1918},{"code":"420606","parentCode":"420600","name":"樊城区","level":3,"sort":1919},{"code":"420607","parentCode":"420600","name":"襄阳区","level":3,"sort":1920},{"code":"420624","parentCode":"420600","name":"南漳县","level":3,"sort":1921},{"code":"420625","parentCode":"420600","name":"谷城县","level":3,"sort":1922},{"code":"420626","parentCode":"420600","name":"保康县","level":3,"sort":1923},{"code":"420682","parentCode":"420600","name":"老河口市","level":3,"sort":1924},{"code":"420683","parentCode":"420600","name":"枣阳市","level":3,"sort":1925},{"code":"420684","parentCode":"420600","name":"宜城市","level":3,"sort":1926},{"code":"420700","parentCode":"420000","name":"鄂州市","level":2,"sort":1927},{"code":"420701","parentCode":"420700","name":"鄂州市市辖区","level":3,"sort":1928},{"code":"420702","parentCode":"420700","name":"梁子湖区","level":3,"sort":1929},{"code":"420703","parentCode":"420700","name":"华容区","level":3,"sort":1930},{"code":"420704","parentCode":"420700","name":"鄂城区","level":3,"sort":1931},{"code":"420800","parentCode":"420000","name":"荆门市","level":2,"sort":1932},{"code":"420801","parentCode":"420800","name":"荆门市市辖区","level":3,"sort":1933},{"code":"420802","parentCode":"420800","name":"东宝区","level":3,"sort":1934},{"code":"420804","parentCode":"420800","name":"掇刀区","level":3,"sort":1935},{"code":"420821","parentCode":"420800","name":"京山县","level":3,"sort":1936},{"code":"420822","parentCode":"420800","name":"沙洋县","level":3,"sort":1937},{"code":"420881","parentCode":"420800","name":"钟祥市","level":3,"sort":1938},{"code":"420900","parentCode":"420000","name":"孝感市","level":2,"sort":1939},{"code":"420901","parentCode":"420900","name":"孝感市市辖区","level":3,"sort":1940},{"code":"420902","parentCode":"420900","name":"孝南区","level":3,"sort":1941},{"code":"420921","parentCode":"420900","name":"孝昌县","level":3,"sort":1942},{"code":"420922","parentCode":"420900","name":"大悟县","level":3,"sort":1943},{"code":"420923","parentCode":"420900","name":"云梦县","level":3,"sort":1944},{"code":"420981","parentCode":"420900","name":"应城市","level":3,"sort":1945},{"code":"420982","parentCode":"420900","name":"安陆市","level":3,"sort":1946},{"code":"420984","parentCode":"420900","name":"汉川市","level":3,"sort":1947},{"code":"421000","parentCode":"420000","name":"荆州市","level":2,"sort":1948},{"code":"421001","parentCode":"421000","name":"荆州市市辖区","level":3,"sort":1949},{"code":"421002","parentCode":"421000","name":"沙市区","level":3,"sort":1950},{"code":"421003","parentCode":"421000","name":"荆州区","level":3,"sort":1951},{"code":"421022","parentCode":"421000","name":"公安县","level":3,"sort":1952},{"code":"421023","parentCode":"421000","name":"监利县","level":3,"sort":1953},{"code":"421024","parentCode":"421000","name":"江陵县","level":3,"sort":1954},{"code":"421081","parentCode":"421000","name":"石首市","level":3,"sort":1955},{"code":"421083","parentCode":"421000","name":"洪湖市","level":3,"sort":1956},{"code":"421087","parentCode":"421000","name":"松滋市","level":3,"sort":1957},{"code":"421100","parentCode":"420000","name":"黄冈市","level":2,"sort":1958},{"code":"421101","parentCode":"421100","name":"黄冈市市辖区","level":3,"sort":1959},{"code":"421102","parentCode":"421100","name":"黄州区","level":3,"sort":1960},{"code":"421121","parentCode":"421100","name":"团风县","level":3,"sort":1961},{"code":"421122","parentCode":"421100","name":"红安县","level":3,"sort":1962},{"code":"421123","parentCode":"421100","name":"罗田县","level":3,"sort":1963},{"code":"421124","parentCode":"421100","name":"英山县","level":3,"sort":1964},{"code":"421125","parentCode":"421100","name":"浠水县","level":3,"sort":1965},{"code":"421126","parentCode":"421100","name":"蕲春县","level":3,"sort":1966},{"code":"421127","parentCode":"421100","name":"黄梅县","level":3,"sort":1967},{"code":"421181","parentCode":"421100","name":"麻城市","level":3,"sort":1968},{"code":"421182","parentCode":"421100","name":"武穴市","level":3,"sort":1969},{"code":"421200","parentCode":"420000","name":"咸宁市","level":2,"sort":1970},{"code":"421201","parentCode":"421200","name":"咸宁市市辖区","level":3,"sort":1971},{"code":"421202","parentCode":"421200","name":"咸安区","level":3,"sort":1972},{"code":"421221","parentCode":"421200","name":"嘉鱼县","level":3,"sort":1973},{"code":"421222","parentCode":"421200","name":"通城县","level":3,"sort":1974},{"code":"421223","parentCode":"421200","name":"崇阳县","level":3,"sort":1975},{"code":"421224","parentCode":"421200","name":"通山县","level":3,"sort":1976},{"code":"421281","parentCode":"421200","name":"赤壁市","level":3,"sort":1977},{"code":"421300","parentCode":"420000","name":"随州市","level":2,"sort":1978},{"code":"421301","parentCode":"421300","name":"随州市市辖区","level":3,"sort":1979},{"code":"421303","parentCode":"421300","name":"曾都区","level":3,"sort":1980},{"code":"421321","parentCode":"421300","name":"随县","level":3,"sort":1981},{"code":"421381","parentCode":"421300","name":"广水市","level":3,"sort":1982},{"code":"422800","parentCode":"420000","name":"恩施土家族苗族自治州","level":2,"sort":1983},{"code":"422801","parentCode":"422800","name":"恩施市","level":3,"sort":1984},{"code":"422802","parentCode":"422800","name":"利川市","level":3,"sort":1985},{"code":"422822","parentCode":"422800","name":"建始县","level":3,"sort":1986},{"code":"422823","parentCode":"422800","name":"巴东县","level":3,"sort":1987},{"code":"422825","parentCode":"422800","name":"宣恩县","level":3,"sort":1988},{"code":"422826","parentCode":"422800","name":"咸丰县","level":3,"sort":1989},{"code":"422827","parentCode":"422800","name":"来凤县","level":3,"sort":1990},{"code":"422828","parentCode":"422800","name":"鹤峰县","level":3,"sort":1991},{"code":"429000","parentCode":"420000","name":"湖北省省直辖县级行政区划","level":2,"sort":1992},{"code":"429004","parentCode":"429000","name":"仙桃市","level":3,"sort":1993},{"code":"429005","parentCode":"429000","name":"潜江市","level":3,"sort":1994},{"code":"429006","parentCode":"429000","name":"天门市","level":3,"sort":1995},{"code":"429021","parentCode":"429000","name":"神农架林区","level":3,"sort":1996},{"code":"430000","parentCode":null,"name":"湖南省","level":1,"sort":1997},{"code":"430100","parentCode":"430000","name":"长沙市","level":2,"sort":1998},{"code":"430101","parentCode":"430100","name":"长沙市市辖区","level":3,"sort":1999},{"code":"430102","parentCode":"430100","name":"芙蓉区","level":3,"sort":2000},{"code":"430103","parentCode":"430100","name":"天心区","level":3,"sort":2001},{"code":"430104","parentCode":"430100","name":"岳麓区","level":3,"sort":2002},{"code":"430105","parentCode":"430100","name":"开福区","level":3,"sort":2003},{"code":"430111","parentCode":"430100","name":"雨花区","level":3,"sort":2004},{"code":"430121","parentCode":"430100","name":"长沙县","level":3,"sort":2005},{"code":"430122","parentCode":"430100","name":"望城县","level":3,"sort":2006},{"code":"430124","parentCode":"430100","name":"宁乡县","level":3,"sort":2007},{"code":"430181","parentCode":"430100","name":"浏阳市","level":3,"sort":2008},{"code":"430200","parentCode":"430000","name":"株洲市","level":2,"sort":2009},{"code":"430201","parentCode":"430200","name":"株洲市市辖区","level":3,"sort":2010},{"code":"430202","parentCode":"430200","name":"荷塘区","level":3,"sort":2011},{"code":"430203","parentCode":"430200","name":"芦淞区","level":3,"sort":2012},{"code":"430204","parentCode":"430200","name":"石峰区","level":3,"sort":2013},{"code":"430211","parentCode":"430200","name":"天元区","level":3,"sort":2014},{"code":"430221","parentCode":"430200","name":"株洲县","level":3,"sort":2015},{"code":"430223","parentCode":"430200","name":"攸县","level":3,"sort":2016},{"code":"430224","parentCode":"430200","name":"茶陵县","level":3,"sort":2017},{"code":"430225","parentCode":"430200","name":"炎陵县","level":3,"sort":2018},{"code":"430281","parentCode":"430200","name":"醴陵市","level":3,"sort":2019},{"code":"430300","parentCode":"430000","name":"湘潭市","level":2,"sort":2020},{"code":"430301","parentCode":"430300","name":"湘潭市市辖区","level":3,"sort":2021},{"code":"430302","parentCode":"430300","name":"雨湖区","level":3,"sort":2022},{"code":"430304","parentCode":"430300","name":"岳塘区","level":3,"sort":2023},{"code":"430321","parentCode":"430300","name":"湘潭县","level":3,"sort":2024},{"code":"430381","parentCode":"430300","name":"湘乡市","level":3,"sort":2025},{"code":"430382","parentCode":"430300","name":"韶山市","level":3,"sort":2026},{"code":"430400","parentCode":"430000","name":"衡阳市","level":2,"sort":2027},{"code":"430401","parentCode":"430400","name":"衡阳市市辖区","level":3,"sort":2028},{"code":"430405","parentCode":"430400","name":"珠晖区","level":3,"sort":2029},{"code":"430406","parentCode":"430400","name":"雁峰区","level":3,"sort":2030},{"code":"430407","parentCode":"430400","name":"石鼓区","level":3,"sort":2031},{"code":"430408","parentCode":"430400","name":"蒸湘区","level":3,"sort":2032},{"code":"430412","parentCode":"430400","name":"南岳区","level":3,"sort":2033},{"code":"430421","parentCode":"430400","name":"衡阳县","level":3,"sort":2034},{"code":"430422","parentCode":"430400","name":"衡南县","level":3,"sort":2035},{"code":"430423","parentCode":"430400","name":"衡山县","level":3,"sort":2036},{"code":"430424","parentCode":"430400","name":"衡东县","level":3,"sort":2037},{"code":"430426","parentCode":"430400","name":"祁东县","level":3,"sort":2038},{"code":"430481","parentCode":"430400","name":"耒阳市","level":3,"sort":2039},{"code":"430482","parentCode":"430400","name":"常宁市","level":3,"sort":2040},{"code":"430500","parentCode":"430000","name":"邵阳市","level":2,"sort":2041},{"code":"430501","parentCode":"430500","name":"邵阳市市辖区","level":3,"sort":2042},{"code":"430502","parentCode":"430500","name":"双清区","level":3,"sort":2043},{"code":"430503","parentCode":"430500","name":"大祥区","level":3,"sort":2044},{"code":"430511","parentCode":"430500","name":"北塔区","level":3,"sort":2045},{"code":"430521","parentCode":"430500","name":"邵东县","level":3,"sort":2046},{"code":"430522","parentCode":"430500","name":"新邵县","level":3,"sort":2047},{"code":"430523","parentCode":"430500","name":"邵阳县","level":3,"sort":2048},{"code":"430524","parentCode":"430500","name":"隆回县","level":3,"sort":2049},{"code":"430525","parentCode":"430500","name":"洞口县","level":3,"sort":2050},{"code":"430527","parentCode":"430500","name":"绥宁县","level":3,"sort":2051},{"code":"430528","parentCode":"430500","name":"新宁县","level":3,"sort":2052},{"code":"430529","parentCode":"430500","name":"城步苗族自治县","level":3,"sort":2053},{"code":"430581","parentCode":"430500","name":"武冈市","level":3,"sort":2054},{"code":"430600","parentCode":"430000","name":"岳阳市","level":2,"sort":2055},{"code":"430601","parentCode":"430600","name":"岳阳市市辖区","level":3,"sort":2056},{"code":"430602","parentCode":"430600","name":"岳阳楼区","level":3,"sort":2057},{"code":"430603","parentCode":"430600","name":"云溪区","level":3,"sort":2058},{"code":"430611","parentCode":"430600","name":"君山区","level":3,"sort":2059},{"code":"430621","parentCode":"430600","name":"岳阳县","level":3,"sort":2060},{"code":"430623","parentCode":"430600","name":"华容县","level":3,"sort":2061},{"code":"430624","parentCode":"430600","name":"湘阴县","level":3,"sort":2062},{"code":"430626","parentCode":"430600","name":"平江县","level":3,"sort":2063},{"code":"430681","parentCode":"430600","name":"汨罗市","level":3,"sort":2064},{"code":"430682","parentCode":"430600","name":"临湘市","level":3,"sort":2065},{"code":"430700","parentCode":"430000","name":"常德市","level":2,"sort":2066},{"code":"430701","parentCode":"430700","name":"常德市市辖区","level":3,"sort":2067},{"code":"430702","parentCode":"430700","name":"武陵区","level":3,"sort":2068},{"code":"430703","parentCode":"430700","name":"鼎城区","level":3,"sort":2069},{"code":"430721","parentCode":"430700","name":"安乡县","level":3,"sort":2070},{"code":"430722","parentCode":"430700","name":"汉寿县","level":3,"sort":2071},{"code":"430723","parentCode":"430700","name":"澧县","level":3,"sort":2072},{"code":"430724","parentCode":"430700","name":"临澧县","level":3,"sort":2073},{"code":"430725","parentCode":"430700","name":"桃源县","level":3,"sort":2074},{"code":"430726","parentCode":"430700","name":"石门县","level":3,"sort":2075},{"code":"430781","parentCode":"430700","name":"津市市","level":3,"sort":2076},{"code":"430800","parentCode":"430000","name":"张家界市","level":2,"sort":2077},{"code":"430801","parentCode":"430800","name":"张家界市市辖区","level":3,"sort":2078},{"code":"430802","parentCode":"430800","name":"永定区","level":3,"sort":2079},{"code":"430811","parentCode":"430800","name":"武陵源区","level":3,"sort":2080},{"code":"430821","parentCode":"430800","name":"慈利县","level":3,"sort":2081},{"code":"430822","parentCode":"430800","name":"桑植县","level":3,"sort":2082},{"code":"430900","parentCode":"430000","name":"益阳市","level":2,"sort":2083},{"code":"430901","parentCode":"430900","name":"益阳市市辖区","level":3,"sort":2084},{"code":"430902","parentCode":"430900","name":"资阳区","level":3,"sort":2085},{"code":"430903","parentCode":"430900","name":"赫山区","level":3,"sort":2086},{"code":"430921","parentCode":"430900","name":"南县","level":3,"sort":2087},{"code":"430922","parentCode":"430900","name":"桃江县","level":3,"sort":2088},{"code":"430923","parentCode":"430900","name":"安化县","level":3,"sort":2089},{"code":"430981","parentCode":"430900","name":"沅江市","level":3,"sort":2090},{"code":"431000","parentCode":"430000","name":"郴州市","level":2,"sort":2091},{"code":"431001","parentCode":"431000","name":"郴州市市辖区","level":3,"sort":2092},{"code":"431002","parentCode":"431000","name":"北湖区","level":3,"sort":2093},{"code":"431003","parentCode":"431000","name":"苏仙区","level":3,"sort":2094},{"code":"431021","parentCode":"431000","name":"桂阳县","level":3,"sort":2095},{"code":"431022","parentCode":"431000","name":"宜章县","level":3,"sort":2096},{"code":"431023","parentCode":"431000","name":"永兴县","level":3,"sort":2097},{"code":"431024","parentCode":"431000","name":"嘉禾县","level":3,"sort":2098},{"code":"431025","parentCode":"431000","name":"临武县","level":3,"sort":2099},{"code":"431026","parentCode":"431000","name":"汝城县","level":3,"sort":2100},{"code":"431027","parentCode":"431000","name":"桂东县","level":3,"sort":2101},{"code":"431028","parentCode":"431000","name":"安仁县","level":3,"sort":2102},{"code":"431081","parentCode":"431000","name":"资兴市","level":3,"sort":2103},{"code":"431100","parentCode":"430000","name":"永州市","level":2,"sort":2104},{"code":"431101","parentCode":"431100","name":"永州市市辖区","level":3,"sort":2105},{"code":"431102","parentCode":"431100","name":"零陵区","level":3,"sort":2106},{"code":"431103","parentCode":"431100","name":"冷水滩区","level":3,"sort":2107},{"code":"431121","parentCode":"431100","name":"祁阳县","level":3,"sort":2108},{"code":"431122","parentCode":"431100","name":"东安县","level":3,"sort":2109},{"code":"431123","parentCode":"431100","name":"双牌县","level":3,"sort":2110},{"code":"431124","parentCode":"431100","name":"道县","level":3,"sort":2111},{"code":"431125","parentCode":"431100","name":"江永县","level":3,"sort":2112},{"code":"431126","parentCode":"431100","name":"宁远县","level":3,"sort":2113},{"code":"431127","parentCode":"431100","name":"蓝山县","level":3,"sort":2114},{"code":"431128","parentCode":"431100","name":"新田县","level":3,"sort":2115},{"code":"431129","parentCode":"431100","name":"江华瑶族自治县","level":3,"sort":2116},{"code":"431200","parentCode":"430000","name":"怀化市","level":2,"sort":2117},{"code":"431201","parentCode":"431200","name":"怀化市市辖区","level":3,"sort":2118},{"code":"431202","parentCode":"431200","name":"鹤城区","level":3,"sort":2119},{"code":"431221","parentCode":"431200","name":"中方县","level":3,"sort":2120},{"code":"431222","parentCode":"431200","name":"沅陵县","level":3,"sort":2121},{"code":"431223","parentCode":"431200","name":"辰溪县","level":3,"sort":2122},{"code":"431224","parentCode":"431200","name":"溆浦县","level":3,"sort":2123},{"code":"431225","parentCode":"431200","name":"会同县","level":3,"sort":2124},{"code":"431226","parentCode":"431200","name":"麻阳苗族自治县","level":3,"sort":2125},{"code":"431227","parentCode":"431200","name":"新晃侗族自治县","level":3,"sort":2126},{"code":"431228","parentCode":"431200","name":"芷江侗族自治县","level":3,"sort":2127},{"code":"431229","parentCode":"431200","name":"靖州苗族侗族自治县","level":3,"sort":2128},{"code":"431230","parentCode":"431200","name":"通道侗族自治县","level":3,"sort":2129},{"code":"431281","parentCode":"431200","name":"洪江市","level":3,"sort":2130},{"code":"431300","parentCode":"430000","name":"娄底市","level":2,"sort":2131},{"code":"431301","parentCode":"431300","name":"娄底市市辖区","level":3,"sort":2132},{"code":"431302","parentCode":"431300","name":"娄星区","level":3,"sort":2133},{"code":"431321","parentCode":"431300","name":"双峰县","level":3,"sort":2134},{"code":"431322","parentCode":"431300","name":"新化县","level":3,"sort":2135},{"code":"431381","parentCode":"431300","name":"冷水江市","level":3,"sort":2136},{"code":"431382","parentCode":"431300","name":"涟源市","level":3,"sort":2137},{"code":"433100","parentCode":"430000","name":"湘西土家族苗族自治州","level":2,"sort":2138},{"code":"433101","parentCode":"433100","name":"吉首市","level":3,"sort":2139},{"code":"433122","parentCode":"433100","name":"泸溪县","level":3,"sort":2140},{"code":"433123","parentCode":"433100","name":"凤凰县","level":3,"sort":2141},{"code":"433124","parentCode":"433100","name":"花垣县","level":3,"sort":2142},{"code":"433125","parentCode":"433100","name":"保靖县","level":3,"sort":2143},{"code":"433126","parentCode":"433100","name":"古丈县","level":3,"sort":2144},{"code":"433127","parentCode":"433100","name":"永顺县","level":3,"sort":2145},{"code":"433130","parentCode":"433100","name":"龙山县","level":3,"sort":2146},{"code":"440000","parentCode":null,"name":"广东省","level":1,"sort":2147},{"code":"440100","parentCode":"440000","name":"广州市","level":2,"sort":2148},{"code":"440101","parentCode":"440100","name":"广州市市辖区","level":3,"sort":2149},{"code":"440103","parentCode":"440100","name":"荔湾区","level":3,"sort":2150},{"code":"440104","parentCode":"440100","name":"越秀区","level":3,"sort":2151},{"code":"440105","parentCode":"440100","name":"海珠区","level":3,"sort":2152},{"code":"440106","parentCode":"440100","name":"天河区","level":3,"sort":2153},{"code":"440111","parentCode":"440100","name":"广州市白云区","level":3,"sort":2154},{"code":"440112","parentCode":"440100","name":"黄埔区","level":3,"sort":2155},{"code":"440113","parentCode":"440100","name":"番禺区","level":3,"sort":2156},{"code":"440114","parentCode":"440100","name":"花都区","level":3,"sort":2157},{"code":"440115","parentCode":"440100","name":"南沙区","level":3,"sort":2158},{"code":"440116","parentCode":"440100","name":"萝岗区","level":3,"sort":2159},{"code":"440183","parentCode":"440100","name":"增城市","level":3,"sort":2160},{"code":"440184","parentCode":"440100","name":"从化市","level":3,"sort":2161},{"code":"440200","parentCode":"440000","name":"韶关市","level":2,"sort":2162},{"code":"440201","parentCode":"440200","name":"韶关市市辖区","level":3,"sort":2163},{"code":"440203","parentCode":"440200","name":"武江区","level":3,"sort":2164},{"code":"440204","parentCode":"440200","name":"浈江区","level":3,"sort":2165},{"code":"440205","parentCode":"440200","name":"曲江区","level":3,"sort":2166},{"code":"440222","parentCode":"440200","name":"始兴县","level":3,"sort":2167},{"code":"440224","parentCode":"440200","name":"仁化县","level":3,"sort":2168},{"code":"440229","parentCode":"440200","name":"翁源县","level":3,"sort":2169},{"code":"440232","parentCode":"440200","name":"乳源瑶族自治县","level":3,"sort":2170},{"code":"440233","parentCode":"440200","name":"新丰县","level":3,"sort":2171},{"code":"440281","parentCode":"440200","name":"乐昌市","level":3,"sort":2172},{"code":"440282","parentCode":"440200","name":"南雄市","level":3,"sort":2173},{"code":"440300","parentCode":"440000","name":"深圳市","level":2,"sort":2174},{"code":"440301","parentCode":"440300","name":"深圳市市辖区","level":3,"sort":2175},{"code":"440303","parentCode":"440300","name":"罗湖区","level":3,"sort":2176},{"code":"440304","parentCode":"440300","name":"福田区","level":3,"sort":2177},{"code":"440305","parentCode":"440300","name":"南山区","level":3,"sort":2178},{"code":"440306","parentCode":"440300","name":"宝安区","level":3,"sort":2179},{"code":"440307","parentCode":"440300","name":"龙岗区","level":3,"sort":2180},{"code":"440308","parentCode":"440300","name":"盐田区","level":3,"sort":2181},{"code":"440400","parentCode":"440000","name":"珠海市","level":2,"sort":2182},{"code":"440401","parentCode":"440400","name":"珠海市市辖区","level":3,"sort":2183},{"code":"440402","parentCode":"440400","name":"香洲区","level":3,"sort":2184},{"code":"440403","parentCode":"440400","name":"斗门区","level":3,"sort":2185},{"code":"440404","parentCode":"440400","name":"金湾区","level":3,"sort":2186},{"code":"440500","parentCode":"440000","name":"汕头市","level":2,"sort":2187},{"code":"440501","parentCode":"440500","name":"汕头市市辖区","level":3,"sort":2188},{"code":"440507","parentCode":"440500","name":"龙湖区","level":3,"sort":2189},{"code":"440511","parentCode":"440500","name":"金平区","level":3,"sort":2190},{"code":"440512","parentCode":"440500","name":"濠江区","level":3,"sort":2191},{"code":"440513","parentCode":"440500","name":"潮阳区","level":3,"sort":2192},{"code":"440514","parentCode":"440500","name":"潮南区","level":3,"sort":2193},{"code":"440515","parentCode":"440500","name":"澄海区","level":3,"sort":2194},{"code":"440523","parentCode":"440500","name":"南澳县","level":3,"sort":2195},{"code":"440600","parentCode":"440000","name":"佛山市","level":2,"sort":2196},{"code":"440601","parentCode":"440600","name":"佛山市市辖区","level":3,"sort":2197},{"code":"440604","parentCode":"440600","name":"禅城区","level":3,"sort":2198},{"code":"440605","parentCode":"440600","name":"南海区","level":3,"sort":2199},{"code":"440606","parentCode":"440600","name":"顺德区","level":3,"sort":2200},{"code":"440607","parentCode":"440600","name":"三水区","level":3,"sort":2201},{"code":"440608","parentCode":"440600","name":"高明区","level":3,"sort":2202},{"code":"440700","parentCode":"440000","name":"江门市","level":2,"sort":2203},{"code":"440701","parentCode":"440700","name":"江门市市辖区","level":3,"sort":2204},{"code":"440703","parentCode":"440700","name":"蓬江区","level":3,"sort":2205},{"code":"440704","parentCode":"440700","name":"江海区","level":3,"sort":2206},{"code":"440705","parentCode":"440700","name":"新会区","level":3,"sort":2207},{"code":"440781","parentCode":"440700","name":"台山市","level":3,"sort":2208},{"code":"440783","parentCode":"440700","name":"开平市","level":3,"sort":2209},{"code":"440784","parentCode":"440700","name":"鹤山市","level":3,"sort":2210},{"code":"440785","parentCode":"440700","name":"恩平市","level":3,"sort":2211},{"code":"440800","parentCode":"440000","name":"湛江市","level":2,"sort":2212},{"code":"440801","parentCode":"440800","name":"湛江市市辖区","level":3,"sort":2213},{"code":"440802","parentCode":"440800","name":"赤坎区","level":3,"sort":2214},{"code":"440803","parentCode":"440800","name":"霞山区","level":3,"sort":2215},{"code":"440804","parentCode":"440800","name":"坡头区","level":3,"sort":2216},{"code":"440811","parentCode":"440800","name":"麻章区","level":3,"sort":2217},{"code":"440823","parentCode":"440800","name":"遂溪县","level":3,"sort":2218},{"code":"440825","parentCode":"440800","name":"徐闻县","level":3,"sort":2219},{"code":"440881","parentCode":"440800","name":"廉江市","level":3,"sort":2220},{"code":"440882","parentCode":"440800","name":"雷州市","level":3,"sort":2221},{"code":"440883","parentCode":"440800","name":"吴川市","level":3,"sort":2222},{"code":"440900","parentCode":"440000","name":"茂名市","level":2,"sort":2223},{"code":"440901","parentCode":"440900","name":"茂名市市辖区","level":3,"sort":2224},{"code":"440902","parentCode":"440900","name":"茂南区","level":3,"sort":2225},{"code":"440903","parentCode":"440900","name":"茂港区","level":3,"sort":2226},{"code":"440923","parentCode":"440900","name":"电白县","level":3,"sort":2227},{"code":"440981","parentCode":"440900","name":"高州市","level":3,"sort":2228},{"code":"440982","parentCode":"440900","name":"化州市","level":3,"sort":2229},{"code":"440983","parentCode":"440900","name":"信宜市","level":3,"sort":2230},{"code":"441200","parentCode":"440000","name":"肇庆市","level":2,"sort":2231},{"code":"441201","parentCode":"441200","name":"肇庆市市辖区","level":3,"sort":2232},{"code":"441202","parentCode":"441200","name":"端州区","level":3,"sort":2233},{"code":"441203","parentCode":"441200","name":"鼎湖区","level":3,"sort":2234},{"code":"441223","parentCode":"441200","name":"广宁县","level":3,"sort":2235},{"code":"441224","parentCode":"441200","name":"怀集县","level":3,"sort":2236},{"code":"441225","parentCode":"441200","name":"封开县","level":3,"sort":2237},{"code":"441226","parentCode":"441200","name":"德庆县","level":3,"sort":2238},{"code":"441283","parentCode":"441200","name":"高要市","level":3,"sort":2239},{"code":"441284","parentCode":"441200","name":"四会市","level":3,"sort":2240},{"code":"441300","parentCode":"440000","name":"惠州市","level":2,"sort":2241},{"code":"441301","parentCode":"441300","name":"惠州市市辖区","level":3,"sort":2242},{"code":"441302","parentCode":"441300","name":"惠城区","level":3,"sort":2243},{"code":"441303","parentCode":"441300","name":"惠阳区","level":3,"sort":2244},{"code":"441322","parentCode":"441300","name":"博罗县","level":3,"sort":2245},{"code":"441323","parentCode":"441300","name":"惠东县","level":3,"sort":2246},{"code":"441324","parentCode":"441300","name":"龙门县","level":3,"sort":2247},{"code":"441400","parentCode":"440000","name":"梅州市","level":2,"sort":2248},{"code":"441401","parentCode":"441400","name":"梅州市市辖区","level":3,"sort":2249},{"code":"441402","parentCode":"441400","name":"梅江区","level":3,"sort":2250},{"code":"441421","parentCode":"441400","name":"梅县","level":3,"sort":2251},{"code":"441422","parentCode":"441400","name":"大埔县","level":3,"sort":2252},{"code":"441423","parentCode":"441400","name":"丰顺县","level":3,"sort":2253},{"code":"441424","parentCode":"441400","name":"五华县","level":3,"sort":2254},{"code":"441426","parentCode":"441400","name":"平远县","level":3,"sort":2255},{"code":"441427","parentCode":"441400","name":"蕉岭县","level":3,"sort":2256},{"code":"441481","parentCode":"441400","name":"兴宁市","level":3,"sort":2257},{"code":"441500","parentCode":"440000","name":"汕尾市","level":2,"sort":2258},{"code":"441501","parentCode":"441500","name":"汕尾市市辖区","level":3,"sort":2259},{"code":"441502","parentCode":"441500","name":"城区","level":3,"sort":2260},{"code":"441521","parentCode":"441500","name":"海丰县","level":3,"sort":2261},{"code":"441523","parentCode":"441500","name":"陆河县","level":3,"sort":2262},{"code":"441581","parentCode":"441500","name":"陆丰市","level":3,"sort":2263},{"code":"441600","parentCode":"440000","name":"河源市","level":2,"sort":2264},{"code":"441601","parentCode":"441600","name":"河源市市辖区","level":3,"sort":2265},{"code":"441602","parentCode":"441600","name":"源城区","level":3,"sort":2266},{"code":"441621","parentCode":"441600","name":"紫金县","level":3,"sort":2267},{"code":"441622","parentCode":"441600","name":"龙川县","level":3,"sort":2268},{"code":"441623","parentCode":"441600","name":"连平县","level":3,"sort":2269},{"code":"441624","parentCode":"441600","name":"和平县","level":3,"sort":2270},{"code":"441625","parentCode":"441600","name":"东源县","level":3,"sort":2271},{"code":"441700","parentCode":"440000","name":"阳江市","level":2,"sort":2272},{"code":"441701","parentCode":"441700","name":"阳江市市辖区","level":3,"sort":2273},{"code":"441702","parentCode":"441700","name":"江城区","level":3,"sort":2274},{"code":"441721","parentCode":"441700","name":"阳西县","level":3,"sort":2275},{"code":"441723","parentCode":"441700","name":"阳东县","level":3,"sort":2276},{"code":"441781","parentCode":"441700","name":"阳春市","level":3,"sort":2277},{"code":"441800","parentCode":"440000","name":"清远市","level":2,"sort":2278},{"code":"441801","parentCode":"441800","name":"清远市市辖区","level":3,"sort":2279},{"code":"441802","parentCode":"441800","name":"清城区","level":3,"sort":2280},{"code":"441821","parentCode":"441800","name":"佛冈县","level":3,"sort":2281},{"code":"441823","parentCode":"441800","name":"阳山县","level":3,"sort":2282},{"code":"441825","parentCode":"441800","name":"连山壮族瑶族自治县","level":3,"sort":2283},{"code":"441826","parentCode":"441800","name":"连南瑶族自治县","level":3,"sort":2284},{"code":"441827","parentCode":"441800","name":"清新县","level":3,"sort":2285},{"code":"441881","parentCode":"441800","name":"英德市","level":3,"sort":2286},{"code":"441882","parentCode":"441800","name":"连州市","level":3,"sort":2287},{"code":"441900","parentCode":"440000","name":"东莞市","level":2,"sort":2288},{"code":"442000","parentCode":"440000","name":"中山市","level":2,"sort":2289},{"code":"445100","parentCode":"440000","name":"潮州市","level":2,"sort":2290},{"code":"445101","parentCode":"445100","name":"潮州市市辖区","level":3,"sort":2291},{"code":"445102","parentCode":"445100","name":"湘桥区","level":3,"sort":2292},{"code":"445121","parentCode":"445100","name":"潮安县","level":3,"sort":2293},{"code":"445122","parentCode":"445100","name":"饶平县","level":3,"sort":2294},{"code":"445200","parentCode":"440000","name":"揭阳市","level":2,"sort":2295},{"code":"445201","parentCode":"445200","name":"揭阳市市辖区","level":3,"sort":2296},{"code":"445202","parentCode":"445200","name":"榕城区","level":3,"sort":2297},{"code":"445221","parentCode":"445200","name":"揭东县","level":3,"sort":2298},{"code":"445222","parentCode":"445200","name":"揭西县","level":3,"sort":2299},{"code":"445224","parentCode":"445200","name":"惠来县","level":3,"sort":2300},{"code":"445281","parentCode":"445200","name":"普宁市","level":3,"sort":2301},{"code":"445300","parentCode":"440000","name":"云浮市","level":2,"sort":2302},{"code":"445301","parentCode":"445300","name":"云浮市市辖区","level":3,"sort":2303},{"code":"445302","parentCode":"445300","name":"云城区","level":3,"sort":2304},{"code":"445321","parentCode":"445300","name":"新兴县","level":3,"sort":2305},{"code":"445322","parentCode":"445300","name":"郁南县","level":3,"sort":2306},{"code":"445323","parentCode":"445300","name":"云安县","level":3,"sort":2307},{"code":"445381","parentCode":"445300","name":"罗定市","level":3,"sort":2308},{"code":"450000","parentCode":null,"name":"广西壮族自治区","level":1,"sort":2309},{"code":"450100","parentCode":"450000","name":"南宁市","level":2,"sort":2310},{"code":"450101","parentCode":"450100","name":"南宁市市辖区","level":3,"sort":2311},{"code":"450102","parentCode":"450100","name":"兴宁区","level":3,"sort":2312},{"code":"450103","parentCode":"450100","name":"青秀区","level":3,"sort":2313},{"code":"450105","parentCode":"450100","name":"江南区","level":3,"sort":2314},{"code":"450107","parentCode":"450100","name":"西乡塘区","level":3,"sort":2315},{"code":"450108","parentCode":"450100","name":"良庆区","level":3,"sort":2316},{"code":"450109","parentCode":"450100","name":"邕宁区","level":3,"sort":2317},{"code":"450122","parentCode":"450100","name":"武鸣县","level":3,"sort":2318},{"code":"450123","parentCode":"450100","name":"隆安县","level":3,"sort":2319},{"code":"450124","parentCode":"450100","name":"马山县","level":3,"sort":2320},{"code":"450125","parentCode":"450100","name":"上林县","level":3,"sort":2321},{"code":"450126","parentCode":"450100","name":"宾阳县","level":3,"sort":2322},{"code":"450127","parentCode":"450100","name":"横县","level":3,"sort":2323},{"code":"450200","parentCode":"450000","name":"柳州市","level":2,"sort":2324},{"code":"450201","parentCode":"450200","name":"柳州市市辖区","level":3,"sort":2325},{"code":"450202","parentCode":"450200","name":"柳州市城中区","level":3,"sort":2326},{"code":"450203","parentCode":"450200","name":"鱼峰区","level":3,"sort":2327},{"code":"450204","parentCode":"450200","name":"柳南区","level":3,"sort":2328},{"code":"450205","parentCode":"450200","name":"柳北区","level":3,"sort":2329},{"code":"450221","parentCode":"450200","name":"柳江县","level":3,"sort":2330},{"code":"450222","parentCode":"450200","name":"柳城县","level":3,"sort":2331},{"code":"450223","parentCode":"450200","name":"鹿寨县","level":3,"sort":2332},{"code":"450224","parentCode":"450200","name":"融安县","level":3,"sort":2333},{"code":"450225","parentCode":"450200","name":"融水苗族自治县","level":3,"sort":2334},{"code":"450226","parentCode":"450200","name":"三江侗族自治县","level":3,"sort":2335},{"code":"450300","parentCode":"450000","name":"桂林市","level":2,"sort":2336},{"code":"450301","parentCode":"450300","name":"桂林市市辖区","level":3,"sort":2337},{"code":"450302","parentCode":"450300","name":"秀峰区","level":3,"sort":2338},{"code":"450303","parentCode":"450300","name":"叠彩区","level":3,"sort":2339},{"code":"450304","parentCode":"450300","name":"象山区","level":3,"sort":2340},{"code":"450305","parentCode":"450300","name":"七星区","level":3,"sort":2341},{"code":"450311","parentCode":"450300","name":"雁山区","level":3,"sort":2342},{"code":"450321","parentCode":"450300","name":"阳朔县","level":3,"sort":2343},{"code":"450322","parentCode":"450300","name":"临桂县","level":3,"sort":2344},{"code":"450323","parentCode":"450300","name":"灵川县","level":3,"sort":2345},{"code":"450324","parentCode":"450300","name":"全州县","level":3,"sort":2346},{"code":"450325","parentCode":"450300","name":"兴安县","level":3,"sort":2347},{"code":"450326","parentCode":"450300","name":"永福县","level":3,"sort":2348},{"code":"450327","parentCode":"450300","name":"灌阳县","level":3,"sort":2349},{"code":"450328","parentCode":"450300","name":"龙胜各族自治县","level":3,"sort":2350},{"code":"450329","parentCode":"450300","name":"资源县","level":3,"sort":2351},{"code":"450330","parentCode":"450300","name":"平乐县","level":3,"sort":2352},{"code":"450331","parentCode":"450300","name":"荔蒲县","level":3,"sort":2353},{"code":"450332","parentCode":"450300","name":"恭城瑶族自治县","level":3,"sort":2354},{"code":"450400","parentCode":"450000","name":"梧州市","level":2,"sort":2355},{"code":"450401","parentCode":"450400","name":"梧州市市辖区","level":3,"sort":2356},{"code":"450403","parentCode":"450400","name":"万秀区","level":3,"sort":2357},{"code":"450404","parentCode":"450400","name":"蝶山区","level":3,"sort":2358},{"code":"450405","parentCode":"450400","name":"长洲区","level":3,"sort":2359},{"code":"450421","parentCode":"450400","name":"苍梧县","level":3,"sort":2360},{"code":"450422","parentCode":"450400","name":"藤县","level":3,"sort":2361},{"code":"450423","parentCode":"450400","name":"蒙山县","level":3,"sort":2362},{"code":"450481","parentCode":"450400","name":"岑溪市","level":3,"sort":2363},{"code":"450500","parentCode":"450000","name":"北海市","level":2,"sort":2364},{"code":"450501","parentCode":"450500","name":"北海市市辖区","level":3,"sort":2365},{"code":"450502","parentCode":"450500","name":"海城区","level":3,"sort":2366},{"code":"450503","parentCode":"450500","name":"银海区","level":3,"sort":2367},{"code":"450512","parentCode":"450500","name":"铁山港区","level":3,"sort":2368},{"code":"450521","parentCode":"450500","name":"合浦县","level":3,"sort":2369},{"code":"450600","parentCode":"450000","name":"防城港市","level":2,"sort":2370},{"code":"450601","parentCode":"450600","name":"防城港市市辖区","level":3,"sort":2371},{"code":"450602","parentCode":"450600","name":"港口区","level":3,"sort":2372},{"code":"450603","parentCode":"450600","name":"防城区","level":3,"sort":2373},{"code":"450621","parentCode":"450600","name":"上思县","level":3,"sort":2374},{"code":"450681","parentCode":"450600","name":"东兴市","level":3,"sort":2375},{"code":"450700","parentCode":"450000","name":"钦州市","level":2,"sort":2376},{"code":"450701","parentCode":"450700","name":"钦州市市辖区","level":3,"sort":2377},{"code":"450702","parentCode":"450700","name":"钦南区","level":3,"sort":2378},{"code":"450703","parentCode":"450700","name":"钦北区","level":3,"sort":2379},{"code":"450721","parentCode":"450700","name":"灵山县","level":3,"sort":2380},{"code":"450722","parentCode":"450700","name":"浦北县","level":3,"sort":2381},{"code":"450800","parentCode":"450000","name":"贵港市","level":2,"sort":2382},{"code":"450801","parentCode":"450800","name":"贵港市市辖区","level":3,"sort":2383},{"code":"450802","parentCode":"450800","name":"港北区","level":3,"sort":2384},{"code":"450803","parentCode":"450800","name":"港南区","level":3,"sort":2385},{"code":"450804","parentCode":"450800","name":"覃塘区","level":3,"sort":2386},{"code":"450821","parentCode":"450800","name":"平南县","level":3,"sort":2387},{"code":"450881","parentCode":"450800","name":"桂平市","level":3,"sort":2388},{"code":"450900","parentCode":"450000","name":"玉林市","level":2,"sort":2389},{"code":"450901","parentCode":"450900","name":"玉林市市辖区","level":3,"sort":2390},{"code":"450902","parentCode":"450900","name":"玉州区","level":3,"sort":2391},{"code":"450921","parentCode":"450900","name":"容县","level":3,"sort":2392},{"code":"450922","parentCode":"450900","name":"陆川县","level":3,"sort":2393},{"code":"450923","parentCode":"450900","name":"博白县","level":3,"sort":2394},{"code":"450924","parentCode":"450900","name":"兴业县","level":3,"sort":2395},{"code":"450981","parentCode":"450900","name":"北流市","level":3,"sort":2396},{"code":"451000","parentCode":"450000","name":"百色市","level":2,"sort":2397},{"code":"451001","parentCode":"451000","name":"百色市市辖区","level":3,"sort":2398},{"code":"451002","parentCode":"451000","name":"右江区","level":3,"sort":2399},{"code":"451021","parentCode":"451000","name":"田阳县","level":3,"sort":2400},{"code":"451022","parentCode":"451000","name":"田东县","level":3,"sort":2401},{"code":"451023","parentCode":"451000","name":"平果县","level":3,"sort":2402},{"code":"451024","parentCode":"451000","name":"德保县","level":3,"sort":2403},{"code":"451025","parentCode":"451000","name":"靖西县","level":3,"sort":2404},{"code":"451026","parentCode":"451000","name":"那坡县","level":3,"sort":2405},{"code":"451027","parentCode":"451000","name":"凌云县","level":3,"sort":2406},{"code":"451028","parentCode":"451000","name":"乐业县","level":3,"sort":2407},{"code":"451029","parentCode":"451000","name":"田林县","level":3,"sort":2408},{"code":"451030","parentCode":"451000","name":"西林县","level":3,"sort":2409},{"code":"451031","parentCode":"451000","name":"隆林各族自治县","level":3,"sort":2410},{"code":"451100","parentCode":"450000","name":"贺州市","level":2,"sort":2411},{"code":"451101","parentCode":"451100","name":"贺州市市辖区","level":3,"sort":2412},{"code":"451102","parentCode":"451100","name":"八步区","level":3,"sort":2413},{"code":"451119","parentCode":"451100","name":"平桂管理区","level":3,"sort":2414},{"code":"451121","parentCode":"451100","name":"昭平县","level":3,"sort":2415},{"code":"451122","parentCode":"451100","name":"钟山县","level":3,"sort":2416},{"code":"451123","parentCode":"451100","name":"富川瑶族自治县","level":3,"sort":2417},{"code":"451200","parentCode":"450000","name":"河池市","level":2,"sort":2418},{"code":"451201","parentCode":"451200","name":"河池市市辖区","level":3,"sort":2419},{"code":"451202","parentCode":"451200","name":"金城江区","level":3,"sort":2420},{"code":"451221","parentCode":"451200","name":"南丹县","level":3,"sort":2421},{"code":"451222","parentCode":"451200","name":"天峨县","level":3,"sort":2422},{"code":"451223","parentCode":"451200","name":"凤山县","level":3,"sort":2423},{"code":"451224","parentCode":"451200","name":"东兰县","level":3,"sort":2424},{"code":"451225","parentCode":"451200","name":"罗城仫佬族自治县","level":3,"sort":2425},{"code":"451226","parentCode":"451200","name":"环江毛南族自治县","level":3,"sort":2426},{"code":"451227","parentCode":"451200","name":"巴马瑶族自治县","level":3,"sort":2427},{"code":"451228","parentCode":"451200","name":"都安瑶族自治县","level":3,"sort":2428},{"code":"451229","parentCode":"451200","name":"大化瑶族自治县","level":3,"sort":2429},{"code":"451281","parentCode":"451200","name":"宜州市","level":3,"sort":2430},{"code":"451300","parentCode":"450000","name":"来宾市","level":2,"sort":2431},{"code":"451301","parentCode":"451300","name":"来宾市市辖区","level":3,"sort":2432},{"code":"451302","parentCode":"451300","name":"兴宾区","level":3,"sort":2433},{"code":"451321","parentCode":"451300","name":"忻城县","level":3,"sort":2434},{"code":"451322","parentCode":"451300","name":"象州县","level":3,"sort":2435},{"code":"451323","parentCode":"451300","name":"武宣县","level":3,"sort":2436},{"code":"451324","parentCode":"451300","name":"金秀瑶族自治县","level":3,"sort":2437},{"code":"451381","parentCode":"451300","name":"合山市","level":3,"sort":2438},{"code":"451400","parentCode":"450000","name":"崇左市","level":2,"sort":2439},{"code":"451401","parentCode":"451400","name":"崇左市市辖区","level":3,"sort":2440},{"code":"451402","parentCode":"451400","name":"江洲区","level":3,"sort":2441},{"code":"451421","parentCode":"451400","name":"扶绥县","level":3,"sort":2442},{"code":"451422","parentCode":"451400","name":"宁明县","level":3,"sort":2443},{"code":"451423","parentCode":"451400","name":"龙州县","level":3,"sort":2444},{"code":"451424","parentCode":"451400","name":"大新县","level":3,"sort":2445},{"code":"451425","parentCode":"451400","name":"天等县","level":3,"sort":2446},{"code":"451481","parentCode":"451400","name":"凭祥市","level":3,"sort":2447},{"code":"460000","parentCode":null,"name":"海南省","level":1,"sort":2448},{"code":"460100","parentCode":"460000","name":"海口市","level":2,"sort":2449},{"code":"460101","parentCode":"460100","name":"海口市市辖区","level":3,"sort":2450},{"code":"460105","parentCode":"460100","name":"秀英区","level":3,"sort":2451},{"code":"460106","parentCode":"460100","name":"龙华区","level":3,"sort":2452},{"code":"460107","parentCode":"460100","name":"琼山区","level":3,"sort":2453},{"code":"460108","parentCode":"460100","name":"美兰区","level":3,"sort":2454},{"code":"460200","parentCode":"460000","name":"三亚市","level":2,"sort":2455},{"code":"460201","parentCode":"460200","name":"三亚市市辖区","level":3,"sort":2456},{"code":"469000","parentCode":"460000","name":"省直辖县级行政区划","level":2,"sort":2457},{"code":"469001","parentCode":"469000","name":"五指山市","level":3,"sort":2458},{"code":"469002","parentCode":"469000","name":"琼海市","level":3,"sort":2459},{"code":"469003","parentCode":"469000","name":"儋州市","level":3,"sort":2460},{"code":"469005","parentCode":"469000","name":"文昌市","level":3,"sort":2461},{"code":"469006","parentCode":"469000","name":"万宁市","level":3,"sort":2462},{"code":"469007","parentCode":"469000","name":"东方市","level":3,"sort":2463},{"code":"469021","parentCode":"469000","name":"定安县","level":3,"sort":2464},{"code":"469022","parentCode":"469000","name":"屯昌县","level":3,"sort":2465},{"code":"469023","parentCode":"469000","name":"澄迈县","level":3,"sort":2466},{"code":"469024","parentCode":"469000","name":"临高县","level":3,"sort":2467},{"code":"469025","parentCode":"469000","name":"白沙黎族自治县","level":3,"sort":2468},{"code":"469026","parentCode":"469000","name":"昌江黎族自治县","level":3,"sort":2469},{"code":"469027","parentCode":"469000","name":"乐东黎族自治县","level":3,"sort":2470},{"code":"469028","parentCode":"469000","name":"陵水黎族自治县","level":3,"sort":2471},{"code":"469029","parentCode":"469000","name":"保亭黎族苗族自治县","level":3,"sort":2472},{"code":"469030","parentCode":"469000","name":"琼中黎族苗族自治县","level":3,"sort":2473},{"code":"469031","parentCode":"469000","name":"西沙群岛","level":3,"sort":2474},{"code":"469032","parentCode":"469000","name":"南沙群岛","level":3,"sort":2475},{"code":"469033","parentCode":"469000","name":"中沙群岛的岛礁及其海域","level":3,"sort":2476},{"code":"500000","parentCode":null,"name":"重庆市","level":1,"sort":2477},{"code":"500100","parentCode":"500000","name":"重庆市市辖区","level":2,"sort":2478},{"code":"500101","parentCode":"500100","name":"万州区","level":3,"sort":2479},{"code":"500102","parentCode":"500100","name":"涪陵区","level":3,"sort":2480},{"code":"500103","parentCode":"500100","name":"渝中区","level":3,"sort":2481},{"code":"500104","parentCode":"500100","name":"大渡口区","level":3,"sort":2482},{"code":"500105","parentCode":"500100","name":"江北区","level":3,"sort":2483},{"code":"500106","parentCode":"500100","name":"沙坪坝区","level":3,"sort":2484},{"code":"500107","parentCode":"500100","name":"九龙坡区","level":3,"sort":2485},{"code":"500108","parentCode":"500100","name":"南岸区","level":3,"sort":2486},{"code":"500109","parentCode":"500100","name":"北碚区","level":3,"sort":2487},{"code":"500110","parentCode":"500100","name":"万盛区","level":3,"sort":2488},{"code":"500111","parentCode":"500100","name":"双桥区","level":3,"sort":2489},{"code":"500112","parentCode":"500100","name":"渝北区","level":3,"sort":2490},{"code":"500113","parentCode":"500100","name":"巴南区","level":3,"sort":2491},{"code":"500114","parentCode":"500100","name":"黔江区","level":3,"sort":2492},{"code":"500115","parentCode":"500100","name":"长寿区","level":3,"sort":2493},{"code":"500116","parentCode":"500100","name":"江津区","level":3,"sort":2494},{"code":"500117","parentCode":"500100","name":"合川区","level":3,"sort":2495},{"code":"500118","parentCode":"500100","name":"永川区","level":3,"sort":2496},{"code":"500119","parentCode":"500100","name":"南川区","level":3,"sort":2497},{"code":"500200","parentCode":"500000","name":"县","level":2,"sort":2498},{"code":"500222","parentCode":"500200","name":"綦江县","level":3,"sort":2499},{"code":"500223","parentCode":"500200","name":"潼南县","level":3,"sort":2500},{"code":"500224","parentCode":"500200","name":"铜梁县","level":3,"sort":2501},{"code":"500225","parentCode":"500200","name":"大足县","level":3,"sort":2502},{"code":"500226","parentCode":"500200","name":"荣昌县","level":3,"sort":2503},{"code":"500227","parentCode":"500200","name":"璧山县","level":3,"sort":2504},{"code":"500228","parentCode":"500200","name":"梁平县","level":3,"sort":2505},{"code":"500229","parentCode":"500200","name":"城口县","level":3,"sort":2506},{"code":"500230","parentCode":"500200","name":"丰都县","level":3,"sort":2507},{"code":"500231","parentCode":"500200","name":"垫江县","level":3,"sort":2508},{"code":"500232","parentCode":"500200","name":"武隆县","level":3,"sort":2509},{"code":"500233","parentCode":"500200","name":"忠县","level":3,"sort":2510},{"code":"500234","parentCode":"500200","name":"开县","level":3,"sort":2511},{"code":"500235","parentCode":"500200","name":"云阳县","level":3,"sort":2512},{"code":"500236","parentCode":"500200","name":"奉节县","level":3,"sort":2513},{"code":"500237","parentCode":"500200","name":"巫山县","level":3,"sort":2514},{"code":"500238","parentCode":"500200","name":"巫溪县","level":3,"sort":2515},{"code":"500240","parentCode":"500200","name":"石柱土家族自治县","level":3,"sort":2516},{"code":"500241","parentCode":"500200","name":"秀山土家族苗族自治县","level":3,"sort":2517},{"code":"500242","parentCode":"500200","name":"酉阳土家族苗族自治县","level":3,"sort":2518},{"code":"500243","parentCode":"500200","name":"彭水苗族土家族自治县","level":3,"sort":2519},{"code":"510000","parentCode":null,"name":"四川省","level":1,"sort":2520},{"code":"510100","parentCode":"510000","name":"成都市","level":2,"sort":2521},{"code":"510101","parentCode":"510100","name":"成都市市辖区","level":3,"sort":2522},{"code":"510104","parentCode":"510100","name":"锦江区","level":3,"sort":2523},{"code":"510105","parentCode":"510100","name":"青羊区","level":3,"sort":2524},{"code":"510106","parentCode":"510100","name":"金牛区","level":3,"sort":2525},{"code":"510107","parentCode":"510100","name":"武侯区","level":3,"sort":2526},{"code":"510108","parentCode":"510100","name":"成华区","level":3,"sort":2527},{"code":"510112","parentCode":"510100","name":"龙泉驿区","level":3,"sort":2528},{"code":"510113","parentCode":"510100","name":"青白江区","level":3,"sort":2529},{"code":"510114","parentCode":"510100","name":"新都区","level":3,"sort":2530},{"code":"510115","parentCode":"510100","name":"温江区","level":3,"sort":2531},{"code":"510121","parentCode":"510100","name":"金堂县","level":3,"sort":2532},{"code":"510122","parentCode":"510100","name":"双流县","level":3,"sort":2533},{"code":"510124","parentCode":"510100","name":"郫县","level":3,"sort":2534},{"code":"510129","parentCode":"510100","name":"大邑县","level":3,"sort":2535},{"code":"510131","parentCode":"510100","name":"蒲江县","level":3,"sort":2536},{"code":"510132","parentCode":"510100","name":"新津县","level":3,"sort":2537},{"code":"510181","parentCode":"510100","name":"都江堰市","level":3,"sort":2538},{"code":"510182","parentCode":"510100","name":"彭州市","level":3,"sort":2539},{"code":"510183","parentCode":"510100","name":"邛崃市","level":3,"sort":2540},{"code":"510184","parentCode":"510100","name":"崇州市","level":3,"sort":2541},{"code":"510300","parentCode":"510000","name":"自贡市","level":2,"sort":2542},{"code":"510301","parentCode":"510300","name":"自贡市市辖区","level":3,"sort":2543},{"code":"510302","parentCode":"510300","name":"自流井区","level":3,"sort":2544},{"code":"510303","parentCode":"510300","name":"贡井区","level":3,"sort":2545},{"code":"510304","parentCode":"510300","name":"大安区","level":3,"sort":2546},{"code":"510311","parentCode":"510300","name":"沿滩区","level":3,"sort":2547},{"code":"510321","parentCode":"510300","name":"荣县","level":3,"sort":2548},{"code":"510322","parentCode":"510300","name":"富顺县","level":3,"sort":2549},{"code":"510400","parentCode":"510000","name":"攀枝花市","level":2,"sort":2550},{"code":"510401","parentCode":"510400","name":"攀枝花市市辖区","level":3,"sort":2551},{"code":"510402","parentCode":"510400","name":"东区","level":3,"sort":2552},{"code":"510403","parentCode":"510400","name":"西区","level":3,"sort":2553},{"code":"510411","parentCode":"510400","name":"仁和区","level":3,"sort":2554},{"code":"510421","parentCode":"510400","name":"米易县","level":3,"sort":2555},{"code":"510422","parentCode":"510400","name":"盐边县","level":3,"sort":2556},{"code":"510500","parentCode":"510000","name":"泸州市","level":2,"sort":2557},{"code":"510501","parentCode":"510500","name":"泸州市市辖区","level":3,"sort":2558},{"code":"510502","parentCode":"510500","name":"江阳区","level":3,"sort":2559},{"code":"510503","parentCode":"510500","name":"纳溪区","level":3,"sort":2560},{"code":"510504","parentCode":"510500","name":"龙马潭区","level":3,"sort":2561},{"code":"510521","parentCode":"510500","name":"泸县","level":3,"sort":2562},{"code":"510522","parentCode":"510500","name":"合江县","level":3,"sort":2563},{"code":"510524","parentCode":"510500","name":"叙永县","level":3,"sort":2564},{"code":"510525","parentCode":"510500","name":"古蔺县","level":3,"sort":2565},{"code":"510600","parentCode":"510000","name":"德阳市","level":2,"sort":2566},{"code":"510601","parentCode":"510600","name":"德阳市市辖区","level":3,"sort":2567},{"code":"510603","parentCode":"510600","name":"旌阳区","level":3,"sort":2568},{"code":"510623","parentCode":"510600","name":"中江县","level":3,"sort":2569},{"code":"510626","parentCode":"510600","name":"罗江县","level":3,"sort":2570},{"code":"510681","parentCode":"510600","name":"广汉市","level":3,"sort":2571},{"code":"510682","parentCode":"510600","name":"什邡市","level":3,"sort":2572},{"code":"510683","parentCode":"510600","name":"绵竹市","level":3,"sort":2573},{"code":"510700","parentCode":"510000","name":"绵阳市","level":2,"sort":2574},{"code":"510701","parentCode":"510700","name":"绵阳市市辖区","level":3,"sort":2575},{"code":"510703","parentCode":"510700","name":"涪城区","level":3,"sort":2576},{"code":"510704","parentCode":"510700","name":"游仙区","level":3,"sort":2577},{"code":"510722","parentCode":"510700","name":"三台县","level":3,"sort":2578},{"code":"510723","parentCode":"510700","name":"盐亭县","level":3,"sort":2579},{"code":"510724","parentCode":"510700","name":"安县","level":3,"sort":2580},{"code":"510725","parentCode":"510700","name":"梓潼县","level":3,"sort":2581},{"code":"510726","parentCode":"510700","name":"北川羌族自治县","level":3,"sort":2582},{"code":"510727","parentCode":"510700","name":"平武县","level":3,"sort":2583},{"code":"510781","parentCode":"510700","name":"江油市","level":3,"sort":2584},{"code":"510800","parentCode":"510000","name":"广元市","level":2,"sort":2585},{"code":"510801","parentCode":"510800","name":"广元市市辖区","level":3,"sort":2586},{"code":"510802","parentCode":"510800","name":"利州区","level":3,"sort":2587},{"code":"510811","parentCode":"510800","name":"元坝区","level":3,"sort":2588},{"code":"510812","parentCode":"510800","name":"朝天区","level":3,"sort":2589},{"code":"510821","parentCode":"510800","name":"旺苍县","level":3,"sort":2590},{"code":"510822","parentCode":"510800","name":"青川县","level":3,"sort":2591},{"code":"510823","parentCode":"510800","name":"剑阁县","level":3,"sort":2592},{"code":"510824","parentCode":"510800","name":"苍溪县","level":3,"sort":2593},{"code":"510900","parentCode":"510000","name":"遂宁市","level":2,"sort":2594},{"code":"510901","parentCode":"510900","name":"遂宁市市辖区","level":3,"sort":2595},{"code":"510903","parentCode":"510900","name":"船山区","level":3,"sort":2596},{"code":"510904","parentCode":"510900","name":"安居区","level":3,"sort":2597},{"code":"510921","parentCode":"510900","name":"蓬溪县","level":3,"sort":2598},{"code":"510922","parentCode":"510900","name":"射洪县","level":3,"sort":2599},{"code":"510923","parentCode":"510900","name":"大英县","level":3,"sort":2600},{"code":"511000","parentCode":"510000","name":"内江市","level":2,"sort":2601},{"code":"511001","parentCode":"511000","name":"内江市市辖区","level":3,"sort":2602},{"code":"511002","parentCode":"511000","name":"内江市市中区","level":3,"sort":2603},{"code":"511011","parentCode":"511000","name":"东兴区","level":3,"sort":2604},{"code":"511024","parentCode":"511000","name":"威远县","level":3,"sort":2605},{"code":"511025","parentCode":"511000","name":"资中县","level":3,"sort":2606},{"code":"511028","parentCode":"511000","name":"隆昌县","level":3,"sort":2607},{"code":"511100","parentCode":"510000","name":"乐山市","level":2,"sort":2608},{"code":"511101","parentCode":"511100","name":"乐山市市辖区","level":3,"sort":2609},{"code":"511102","parentCode":"511100","name":"市中区","level":3,"sort":2610},{"code":"511111","parentCode":"511100","name":"沙湾区","level":3,"sort":2611},{"code":"511112","parentCode":"511100","name":"五通桥区","level":3,"sort":2612},{"code":"511113","parentCode":"511100","name":"金口河区","level":3,"sort":2613},{"code":"511123","parentCode":"511100","name":"犍为县","level":3,"sort":2614},{"code":"511124","parentCode":"511100","name":"井研县","level":3,"sort":2615},{"code":"511126","parentCode":"511100","name":"夹江县","level":3,"sort":2616},{"code":"511129","parentCode":"511100","name":"沐川县","level":3,"sort":2617},{"code":"511132","parentCode":"511100","name":"峨边彝族自治县","level":3,"sort":2618},{"code":"511133","parentCode":"511100","name":"马边彝族自治县","level":3,"sort":2619},{"code":"511181","parentCode":"511100","name":"峨眉山市","level":3,"sort":2620},{"code":"511300","parentCode":"510000","name":"南充市","level":2,"sort":2621},{"code":"511301","parentCode":"511300","name":"南充市市辖区","level":3,"sort":2622},{"code":"511302","parentCode":"511300","name":"顺庆区","level":3,"sort":2623},{"code":"511303","parentCode":"511300","name":"高坪区","level":3,"sort":2624},{"code":"511304","parentCode":"511300","name":"嘉陵区","level":3,"sort":2625},{"code":"511321","parentCode":"511300","name":"南部县","level":3,"sort":2626},{"code":"511322","parentCode":"511300","name":"营山县","level":3,"sort":2627},{"code":"511323","parentCode":"511300","name":"蓬安县","level":3,"sort":2628},{"code":"511324","parentCode":"511300","name":"仪陇县","level":3,"sort":2629},{"code":"511325","parentCode":"511300","name":"西充县","level":3,"sort":2630},{"code":"511381","parentCode":"511300","name":"阆中市","level":3,"sort":2631},{"code":"511400","parentCode":"510000","name":"眉山市","level":2,"sort":2632},{"code":"511401","parentCode":"511400","name":"眉山市市辖区","level":3,"sort":2633},{"code":"511402","parentCode":"511400","name":"东坡区","level":3,"sort":2634},{"code":"511421","parentCode":"511400","name":"仁寿县","level":3,"sort":2635},{"code":"511422","parentCode":"511400","name":"彭山县","level":3,"sort":2636},{"code":"511423","parentCode":"511400","name":"洪雅县","level":3,"sort":2637},{"code":"511424","parentCode":"511400","name":"丹棱县","level":3,"sort":2638},{"code":"511425","parentCode":"511400","name":"青神县","level":3,"sort":2639},{"code":"511500","parentCode":"510000","name":"宜宾市","level":2,"sort":2640},{"code":"511501","parentCode":"511500","name":"宜宾市市辖区","level":3,"sort":2641},{"code":"511502","parentCode":"511500","name":"翠屏区","level":3,"sort":2642},{"code":"511521","parentCode":"511500","name":"宜宾县","level":3,"sort":2643},{"code":"511522","parentCode":"511500","name":"南溪县","level":3,"sort":2644},{"code":"511523","parentCode":"511500","name":"江安县","level":3,"sort":2645},{"code":"511524","parentCode":"511500","name":"长宁县","level":3,"sort":2646},{"code":"511525","parentCode":"511500","name":"高县","level":3,"sort":2647},{"code":"511526","parentCode":"511500","name":"珙县","level":3,"sort":2648},{"code":"511527","parentCode":"511500","name":"筠连县","level":3,"sort":2649},{"code":"511528","parentCode":"511500","name":"兴文县","level":3,"sort":2650},{"code":"511529","parentCode":"511500","name":"屏山县","level":3,"sort":2651},{"code":"511600","parentCode":"510000","name":"广安市","level":2,"sort":2652},{"code":"511601","parentCode":"511600","name":"广安市市辖区","level":3,"sort":2653},{"code":"511602","parentCode":"511600","name":"广安区","level":3,"sort":2654},{"code":"511621","parentCode":"511600","name":"岳池县","level":3,"sort":2655},{"code":"511622","parentCode":"511600","name":"武胜县","level":3,"sort":2656},{"code":"511623","parentCode":"511600","name":"邻水县","level":3,"sort":2657},{"code":"511681","parentCode":"511600","name":"华蓥市","level":3,"sort":2658},{"code":"511700","parentCode":"510000","name":"达州市","level":2,"sort":2659},{"code":"511701","parentCode":"511700","name":"达州市市辖区","level":3,"sort":2660},{"code":"511702","parentCode":"511700","name":"通川区","level":3,"sort":2661},{"code":"511721","parentCode":"511700","name":"达县","level":3,"sort":2662},{"code":"511722","parentCode":"511700","name":"宣汉县","level":3,"sort":2663},{"code":"511723","parentCode":"511700","name":"开江县","level":3,"sort":2664},{"code":"511724","parentCode":"511700","name":"大竹县","level":3,"sort":2665},{"code":"511725","parentCode":"511700","name":"渠县","level":3,"sort":2666},{"code":"511781","parentCode":"511700","name":"万源市","level":3,"sort":2667},{"code":"511800","parentCode":"510000","name":"雅安市","level":2,"sort":2668},{"code":"511801","parentCode":"511800","name":"雅安市市辖区","level":3,"sort":2669},{"code":"511802","parentCode":"511800","name":"雨城区","level":3,"sort":2670},{"code":"511821","parentCode":"511800","name":"名山县","level":3,"sort":2671},{"code":"511822","parentCode":"511800","name":"荥经县","level":3,"sort":2672},{"code":"511823","parentCode":"511800","name":"汉源县","level":3,"sort":2673},{"code":"511824","parentCode":"511800","name":"石棉县","level":3,"sort":2674},{"code":"511825","parentCode":"511800","name":"天全县","level":3,"sort":2675},{"code":"511826","parentCode":"511800","name":"芦山县","level":3,"sort":2676},{"code":"511827","parentCode":"511800","name":"宝兴县","level":3,"sort":2677},{"code":"511900","parentCode":"510000","name":"巴中市","level":2,"sort":2678},{"code":"511901","parentCode":"511900","name":"巴中市市辖区","level":3,"sort":2679},{"code":"511902","parentCode":"511900","name":"巴州区","level":3,"sort":2680},{"code":"511921","parentCode":"511900","name":"通江县","level":3,"sort":2681},{"code":"511922","parentCode":"511900","name":"南江县","level":3,"sort":2682},{"code":"511923","parentCode":"511900","name":"平昌县","level":3,"sort":2683},{"code":"512000","parentCode":"510000","name":"资阳市","level":2,"sort":2684},{"code":"512001","parentCode":"512000","name":"资阳市市辖区","level":3,"sort":2685},{"code":"512002","parentCode":"512000","name":"雁江区","level":3,"sort":2686},{"code":"512021","parentCode":"512000","name":"安岳县","level":3,"sort":2687},{"code":"512022","parentCode":"512000","name":"乐至县","level":3,"sort":2688},{"code":"512081","parentCode":"512000","name":"简阳市","level":3,"sort":2689},{"code":"513200","parentCode":"510000","name":"阿坝藏族羌族自治州","level":2,"sort":2690},{"code":"513221","parentCode":"513200","name":"汶川县","level":3,"sort":2691},{"code":"513222","parentCode":"513200","name":"理县","level":3,"sort":2692},{"code":"513223","parentCode":"513200","name":"茂县","level":3,"sort":2693},{"code":"513224","parentCode":"513200","name":"松潘县","level":3,"sort":2694},{"code":"513225","parentCode":"513200","name":"九寨沟县","level":3,"sort":2695},{"code":"513226","parentCode":"513200","name":"金川县","level":3,"sort":2696},{"code":"513227","parentCode":"513200","name":"小金县","level":3,"sort":2697},{"code":"513228","parentCode":"513200","name":"黑水县","level":3,"sort":2698},{"code":"513229","parentCode":"513200","name":"马尔康县","level":3,"sort":2699},{"code":"513230","parentCode":"513200","name":"壤塘县","level":3,"sort":2700},{"code":"513231","parentCode":"513200","name":"阿坝县","level":3,"sort":2701},{"code":"513232","parentCode":"513200","name":"若尔盖县","level":3,"sort":2702},{"code":"513233","parentCode":"513200","name":"红原县","level":3,"sort":2703},{"code":"513300","parentCode":"510000","name":"甘孜藏族自治州","level":2,"sort":2704},{"code":"513321","parentCode":"513300","name":"康定县","level":3,"sort":2705},{"code":"513322","parentCode":"513300","name":"泸定县","level":3,"sort":2706},{"code":"513323","parentCode":"513300","name":"丹巴县","level":3,"sort":2707},{"code":"513324","parentCode":"513300","name":"九龙县","level":3,"sort":2708},{"code":"513325","parentCode":"513300","name":"雅江县","level":3,"sort":2709},{"code":"513326","parentCode":"513300","name":"道孚县","level":3,"sort":2710},{"code":"513327","parentCode":"513300","name":"炉霍县","level":3,"sort":2711},{"code":"513328","parentCode":"513300","name":"甘孜县","level":3,"sort":2712},{"code":"513329","parentCode":"513300","name":"新龙县","level":3,"sort":2713},{"code":"513330","parentCode":"513300","name":"德格县","level":3,"sort":2714},{"code":"513331","parentCode":"513300","name":"白玉县","level":3,"sort":2715},{"code":"513332","parentCode":"513300","name":"石渠县","level":3,"sort":2716},{"code":"513333","parentCode":"513300","name":"色达县","level":3,"sort":2717},{"code":"513334","parentCode":"513300","name":"理塘县","level":3,"sort":2718},{"code":"513335","parentCode":"513300","name":"巴塘县","level":3,"sort":2719},{"code":"513336","parentCode":"513300","name":"乡城县","level":3,"sort":2720},{"code":"513337","parentCode":"513300","name":"稻城县","level":3,"sort":2721},{"code":"513338","parentCode":"513300","name":"得荣县","level":3,"sort":2722},{"code":"513400","parentCode":"510000","name":"凉山彝族自治州","level":2,"sort":2723},{"code":"513401","parentCode":"513400","name":"西昌市","level":3,"sort":2724},{"code":"513422","parentCode":"513400","name":"木里藏族自治县","level":3,"sort":2725},{"code":"513423","parentCode":"513400","name":"盐源县","level":3,"sort":2726},{"code":"513424","parentCode":"513400","name":"德昌县","level":3,"sort":2727},{"code":"513425","parentCode":"513400","name":"会理县","level":3,"sort":2728},{"code":"513426","parentCode":"513400","name":"会东县","level":3,"sort":2729},{"code":"513427","parentCode":"513400","name":"宁南县","level":3,"sort":2730},{"code":"513428","parentCode":"513400","name":"普格县","level":3,"sort":2731},{"code":"513429","parentCode":"513400","name":"布拖县","level":3,"sort":2732},{"code":"513430","parentCode":"513400","name":"金阳县","level":3,"sort":2733},{"code":"513431","parentCode":"513400","name":"昭觉县","level":3,"sort":2734},{"code":"513432","parentCode":"513400","name":"喜德县","level":3,"sort":2735},{"code":"513433","parentCode":"513400","name":"冕宁县","level":3,"sort":2736},{"code":"513434","parentCode":"513400","name":"越西县","level":3,"sort":2737},{"code":"513435","parentCode":"513400","name":"甘洛县","level":3,"sort":2738},{"code":"513436","parentCode":"513400","name":"美姑县","level":3,"sort":2739},{"code":"513437","parentCode":"513400","name":"雷波县","level":3,"sort":2740},{"code":"520000","parentCode":null,"name":"贵州省","level":1,"sort":2741},{"code":"520100","parentCode":"520000","name":"贵阳市","level":2,"sort":2742},{"code":"520101","parentCode":"520100","name":"贵阳市市辖区","level":3,"sort":2743},{"code":"520102","parentCode":"520100","name":"南明区","level":3,"sort":2744},{"code":"520103","parentCode":"520100","name":"云岩区","level":3,"sort":2745},{"code":"520111","parentCode":"520100","name":"花溪区","level":3,"sort":2746},{"code":"520112","parentCode":"520100","name":"乌当区","level":3,"sort":2747},{"code":"520113","parentCode":"520100","name":"白云区","level":3,"sort":2748},{"code":"520114","parentCode":"520100","name":"小河区","level":3,"sort":2749},{"code":"520121","parentCode":"520100","name":"开阳县","level":3,"sort":2750},{"code":"520122","parentCode":"520100","name":"息烽县","level":3,"sort":2751},{"code":"520123","parentCode":"520100","name":"修文县","level":3,"sort":2752},{"code":"520181","parentCode":"520100","name":"清镇市","level":3,"sort":2753},{"code":"520200","parentCode":"520000","name":"六盘水市","level":2,"sort":2754},{"code":"520201","parentCode":"520200","name":"钟山区","level":3,"sort":2755},{"code":"520203","parentCode":"520200","name":"六枝特区","level":3,"sort":2756},{"code":"520221","parentCode":"520200","name":"水城县","level":3,"sort":2757},{"code":"520222","parentCode":"520200","name":"盘县","level":3,"sort":2758},{"code":"520300","parentCode":"520000","name":"遵义市","level":2,"sort":2759},{"code":"520301","parentCode":"520300","name":"遵义市市辖区","level":3,"sort":2760},{"code":"520302","parentCode":"520300","name":"红花岗区","level":3,"sort":2761},{"code":"520303","parentCode":"520300","name":"汇川区","level":3,"sort":2762},{"code":"520321","parentCode":"520300","name":"遵义县","level":3,"sort":2763},{"code":"520322","parentCode":"520300","name":"桐梓县","level":3,"sort":2764},{"code":"520323","parentCode":"520300","name":"绥阳县","level":3,"sort":2765},{"code":"520324","parentCode":"520300","name":"正安县","level":3,"sort":2766},{"code":"520325","parentCode":"520300","name":"道真仡佬族苗族自治县","level":3,"sort":2767},{"code":"520326","parentCode":"520300","name":"务川仡佬族苗族自治县","level":3,"sort":2768},{"code":"520327","parentCode":"520300","name":"凤冈县","level":3,"sort":2769},{"code":"520328","parentCode":"520300","name":"湄潭县","level":3,"sort":2770},{"code":"520329","parentCode":"520300","name":"余庆县","level":3,"sort":2771},{"code":"520330","parentCode":"520300","name":"习水县","level":3,"sort":2772},{"code":"520381","parentCode":"520300","name":"赤水市","level":3,"sort":2773},{"code":"520382","parentCode":"520300","name":"仁怀市","level":3,"sort":2774},{"code":"520400","parentCode":"520000","name":"安顺市","level":2,"sort":2775},{"code":"520401","parentCode":"520400","name":"安顺市市辖区","level":3,"sort":2776},{"code":"520402","parentCode":"520400","name":"西秀区","level":3,"sort":2777},{"code":"520421","parentCode":"520400","name":"平坝县","level":3,"sort":2778},{"code":"520422","parentCode":"520400","name":"普定县","level":3,"sort":2779},{"code":"520423","parentCode":"520400","name":"镇宁布依族苗族自治县","level":3,"sort":2780},{"code":"520424","parentCode":"520400","name":"关岭布依族苗族自治县","level":3,"sort":2781},{"code":"520425","parentCode":"520400","name":"紫云苗族布依族自治县","level":3,"sort":2782},{"code":"522200","parentCode":"520000","name":"铜仁地区","level":2,"sort":2783},{"code":"522201","parentCode":"522200","name":"铜仁市","level":3,"sort":2784},{"code":"522222","parentCode":"522200","name":"江口县","level":3,"sort":2785},{"code":"522223","parentCode":"522200","name":"玉屏侗族自治县","level":3,"sort":2786},{"code":"522224","parentCode":"522200","name":"石阡县","level":3,"sort":2787},{"code":"522225","parentCode":"522200","name":"思南县","level":3,"sort":2788},{"code":"522226","parentCode":"522200","name":"印江土家族苗族自治县","level":3,"sort":2789},{"code":"522227","parentCode":"522200","name":"德江县","level":3,"sort":2790},{"code":"522228","parentCode":"522200","name":"沿河土家族自治县","level":3,"sort":2791},{"code":"522229","parentCode":"522200","name":"松桃苗族自治县","level":3,"sort":2792},{"code":"522230","parentCode":"522200","name":"万山特区","level":3,"sort":2793},{"code":"522300","parentCode":"520000","name":"黔西南布依族苗族自治州","level":2,"sort":2794},{"code":"522301","parentCode":"522300","name":"兴义市","level":3,"sort":2795},{"code":"522322","parentCode":"522300","name":"兴仁县","level":3,"sort":2796},{"code":"522323","parentCode":"522300","name":"普安县","level":3,"sort":2797},{"code":"522324","parentCode":"522300","name":"晴隆县","level":3,"sort":2798},{"code":"522325","parentCode":"522300","name":"贞丰县","level":3,"sort":2799},{"code":"522326","parentCode":"522300","name":"望谟县","level":3,"sort":2800},{"code":"522327","parentCode":"522300","name":"册亨县","level":3,"sort":2801},{"code":"522328","parentCode":"522300","name":"安龙县","level":3,"sort":2802},{"code":"522400","parentCode":"520000","name":"毕节地区","level":2,"sort":2803},{"code":"522401","parentCode":"522400","name":"毕节市","level":3,"sort":2804},{"code":"522422","parentCode":"522400","name":"大方县","level":3,"sort":2805},{"code":"522423","parentCode":"522400","name":"黔西县","level":3,"sort":2806},{"code":"522424","parentCode":"522400","name":"金沙县","level":3,"sort":2807},{"code":"522425","parentCode":"522400","name":"织金县","level":3,"sort":2808},{"code":"522426","parentCode":"522400","name":"纳雍县","level":3,"sort":2809},{"code":"522427","parentCode":"522400","name":"威宁彝族回族苗族自治县","level":3,"sort":2810},{"code":"522428","parentCode":"522400","name":"赫章县","level":3,"sort":2811},{"code":"522600","parentCode":"520000","name":"黔东南苗族侗族自治州","level":2,"sort":2812},{"code":"522601","parentCode":"522600","name":"凯里市","level":3,"sort":2813},{"code":"522622","parentCode":"522600","name":"黄平县","level":3,"sort":2814},{"code":"522623","parentCode":"522600","name":"施秉县","level":3,"sort":2815},{"code":"522624","parentCode":"522600","name":"三穗县","level":3,"sort":2816},{"code":"522625","parentCode":"522600","name":"镇远县","level":3,"sort":2817},{"code":"522626","parentCode":"522600","name":"岑巩县","level":3,"sort":2818},{"code":"522627","parentCode":"522600","name":"天柱县","level":3,"sort":2819},{"code":"522628","parentCode":"522600","name":"锦屏县","level":3,"sort":2820},{"code":"522629","parentCode":"522600","name":"剑河县","level":3,"sort":2821},{"code":"522630","parentCode":"522600","name":"台江县","level":3,"sort":2822},{"code":"522631","parentCode":"522600","name":"黎平县","level":3,"sort":2823},{"code":"522632","parentCode":"522600","name":"榕江县","level":3,"sort":2824},{"code":"522633","parentCode":"522600","name":"从江县","level":3,"sort":2825},{"code":"522634","parentCode":"522600","name":"雷山县","level":3,"sort":2826},{"code":"522635","parentCode":"522600","name":"麻江县","level":3,"sort":2827},{"code":"522636","parentCode":"522600","name":"丹寨县","level":3,"sort":2828},{"code":"522700","parentCode":"520000","name":"黔南布依族苗族自治州","level":2,"sort":2829},{"code":"522701","parentCode":"522700","name":"都匀市","level":3,"sort":2830},{"code":"522702","parentCode":"522700","name":"福泉市","level":3,"sort":2831},{"code":"522722","parentCode":"522700","name":"荔波县","level":3,"sort":2832},{"code":"522723","parentCode":"522700","name":"贵定县","level":3,"sort":2833},{"code":"522725","parentCode":"522700","name":"瓮安县","level":3,"sort":2834},{"code":"522726","parentCode":"522700","name":"独山县","level":3,"sort":2835},{"code":"522727","parentCode":"522700","name":"平塘县","level":3,"sort":2836},{"code":"522728","parentCode":"522700","name":"罗甸县","level":3,"sort":2837},{"code":"522729","parentCode":"522700","name":"长顺县","level":3,"sort":2838},{"code":"522730","parentCode":"522700","name":"龙里县","level":3,"sort":2839},{"code":"522731","parentCode":"522700","name":"惠水县","level":3,"sort":2840},{"code":"522732","parentCode":"522700","name":"三都水族自治县","level":3,"sort":2841},{"code":"530000","parentCode":null,"name":"云南省","level":1,"sort":2842},{"code":"530100","parentCode":"530000","name":"昆明市","level":2,"sort":2843},{"code":"530101","parentCode":"530100","name":"昆明市市辖区","level":3,"sort":2844},{"code":"530102","parentCode":"530100","name":"五华区","level":3,"sort":2845},{"code":"530103","parentCode":"530100","name":"盘龙区","level":3,"sort":2846},{"code":"530111","parentCode":"530100","name":"官渡区","level":3,"sort":2847},{"code":"530112","parentCode":"530100","name":"西山区","level":3,"sort":2848},{"code":"530113","parentCode":"530100","name":"东川区","level":3,"sort":2849},{"code":"530121","parentCode":"530100","name":"呈贡县","level":3,"sort":2850},{"code":"530122","parentCode":"530100","name":"晋宁县","level":3,"sort":2851},{"code":"530124","parentCode":"530100","name":"富民县","level":3,"sort":2852},{"code":"530125","parentCode":"530100","name":"宜良县","level":3,"sort":2853},{"code":"530126","parentCode":"530100","name":"石林彝族自治县","level":3,"sort":2854},{"code":"530127","parentCode":"530100","name":"嵩明县","level":3,"sort":2855},{"code":"530128","parentCode":"530100","name":"禄劝彝族苗族自治县","level":3,"sort":2856},{"code":"530129","parentCode":"530100","name":"寻甸回族彝族自治县","level":3,"sort":2857},{"code":"530181","parentCode":"530100","name":"安宁市","level":3,"sort":2858},{"code":"530300","parentCode":"530000","name":"曲靖市","level":2,"sort":2859},{"code":"530301","parentCode":"530300","name":"曲靖市市辖区","level":3,"sort":2860},{"code":"530302","parentCode":"530300","name":"麒麟区","level":3,"sort":2861},{"code":"530321","parentCode":"530300","name":"马龙县","level":3,"sort":2862},{"code":"530322","parentCode":"530300","name":"陆良县","level":3,"sort":2863},{"code":"530323","parentCode":"530300","name":"师宗县","level":3,"sort":2864},{"code":"530324","parentCode":"530300","name":"罗平县","level":3,"sort":2865},{"code":"530325","parentCode":"530300","name":"富源县","level":3,"sort":2866},{"code":"530326","parentCode":"530300","name":"会泽县","level":3,"sort":2867},{"code":"530328","parentCode":"530300","name":"沾益县","level":3,"sort":2868},{"code":"530381","parentCode":"530300","name":"宣威市","level":3,"sort":2869},{"code":"530400","parentCode":"530000","name":"玉溪市","level":2,"sort":2870},{"code":"530401","parentCode":"530400","name":"玉溪市市辖区","level":3,"sort":2871},{"code":"530402","parentCode":"530400","name":"红塔区","level":3,"sort":2872},{"code":"530421","parentCode":"530400","name":"江川县","level":3,"sort":2873},{"code":"530422","parentCode":"530400","name":"澄江县","level":3,"sort":2874},{"code":"530423","parentCode":"530400","name":"通海县","level":3,"sort":2875},{"code":"530424","parentCode":"530400","name":"华宁县","level":3,"sort":2876},{"code":"530425","parentCode":"530400","name":"易门县","level":3,"sort":2877},{"code":"530426","parentCode":"530400","name":"峨山彝族自治县","level":3,"sort":2878},{"code":"530427","parentCode":"530400","name":"新平彝族傣族自治县","level":3,"sort":2879},{"code":"530428","parentCode":"530400","name":"元江哈尼族彝族傣族自治县","level":3,"sort":2880},{"code":"530500","parentCode":"530000","name":"保山市","level":2,"sort":2881},{"code":"530501","parentCode":"530500","name":"保山市市辖区","level":3,"sort":2882},{"code":"530502","parentCode":"530500","name":"隆阳区","level":3,"sort":2883},{"code":"530521","parentCode":"530500","name":"施甸县","level":3,"sort":2884},{"code":"530522","parentCode":"530500","name":"腾冲县","level":3,"sort":2885},{"code":"530523","parentCode":"530500","name":"龙陵县","level":3,"sort":2886},{"code":"530524","parentCode":"530500","name":"昌宁县","level":3,"sort":2887},{"code":"530600","parentCode":"530000","name":"昭通市","level":2,"sort":2888},{"code":"530601","parentCode":"530600","name":"昭通市市辖区","level":3,"sort":2889},{"code":"530602","parentCode":"530600","name":"昭阳区","level":3,"sort":2890},{"code":"530621","parentCode":"530600","name":"鲁甸县","level":3,"sort":2891},{"code":"530622","parentCode":"530600","name":"巧家县","level":3,"sort":2892},{"code":"530623","parentCode":"530600","name":"盐津县","level":3,"sort":2893},{"code":"530624","parentCode":"530600","name":"大关县","level":3,"sort":2894},{"code":"530625","parentCode":"530600","name":"永善县","level":3,"sort":2895},{"code":"530626","parentCode":"530600","name":"绥江县","level":3,"sort":2896},{"code":"530627","parentCode":"530600","name":"镇雄县","level":3,"sort":2897},{"code":"530628","parentCode":"530600","name":"彝良县","level":3,"sort":2898},{"code":"530629","parentCode":"530600","name":"威信县","level":3,"sort":2899},{"code":"530630","parentCode":"530600","name":"水富县","level":3,"sort":2900},{"code":"530700","parentCode":"530000","name":"丽江市","level":2,"sort":2901},{"code":"530701","parentCode":"530700","name":"丽江市市辖区","level":3,"sort":2902},{"code":"530702","parentCode":"530700","name":"古城区","level":3,"sort":2903},{"code":"530721","parentCode":"530700","name":"玉龙纳西族自治县","level":3,"sort":2904},{"code":"530722","parentCode":"530700","name":"永胜县","level":3,"sort":2905},{"code":"530723","parentCode":"530700","name":"华坪县","level":3,"sort":2906},{"code":"530724","parentCode":"530700","name":"宁蒗彝族自治县","level":3,"sort":2907},{"code":"530800","parentCode":"530000","name":"普洱市","level":2,"sort":2908},{"code":"530801","parentCode":"530800","name":"普洱市市辖区","level":3,"sort":2909},{"code":"530802","parentCode":"530800","name":"思茅区","level":3,"sort":2910},{"code":"530821","parentCode":"530800","name":"宁洱哈尼族彝族自治县","level":3,"sort":2911},{"code":"530822","parentCode":"530800","name":"墨江哈尼族自治县","level":3,"sort":2912},{"code":"530823","parentCode":"530800","name":"景东彝族自治县","level":3,"sort":2913},{"code":"530824","parentCode":"530800","name":"景谷傣族彝族自治县","level":3,"sort":2914},{"code":"530825","parentCode":"530800","name":"镇沅彝族哈尼族拉祜族自治县","level":3,"sort":2915},{"code":"530826","parentCode":"530800","name":"江城哈尼族彝族自治县","level":3,"sort":2916},{"code":"530827","parentCode":"530800","name":"孟连傣族拉祜族佤族自治县","level":3,"sort":2917},{"code":"530828","parentCode":"530800","name":"澜沧拉祜族自治县","level":3,"sort":2918},{"code":"530829","parentCode":"530800","name":"西盟佤族自治县","level":3,"sort":2919},{"code":"530900","parentCode":"530000","name":"临沧市","level":2,"sort":2920},{"code":"530901","parentCode":"530900","name":"临沧市市辖区","level":3,"sort":2921},{"code":"530902","parentCode":"530900","name":"临翔区","level":3,"sort":2922},{"code":"530921","parentCode":"530900","name":"凤庆县","level":3,"sort":2923},{"code":"530922","parentCode":"530900","name":"云县","level":3,"sort":2924},{"code":"530923","parentCode":"530900","name":"永德县","level":3,"sort":2925},{"code":"530924","parentCode":"530900","name":"镇康县","level":3,"sort":2926},{"code":"530925","parentCode":"530900","name":"双江拉祜族佤族布朗族傣族自治县","level":3,"sort":2927},{"code":"530926","parentCode":"530900","name":"耿马傣族佤族自治县","level":3,"sort":2928},{"code":"530927","parentCode":"530900","name":"沧源佤族自治县","level":3,"sort":2929},{"code":"532300","parentCode":"530000","name":"楚雄彝族自治州","level":2,"sort":2930},{"code":"532301","parentCode":"532300","name":"楚雄市","level":3,"sort":2931},{"code":"532322","parentCode":"532300","name":"双柏县","level":3,"sort":2932},{"code":"532323","parentCode":"532300","name":"牟定县","level":3,"sort":2933},{"code":"532324","parentCode":"532300","name":"南华县","level":3,"sort":2934},{"code":"532325","parentCode":"532300","name":"姚安县","level":3,"sort":2935},{"code":"532326","parentCode":"532300","name":"大姚县","level":3,"sort":2936},{"code":"532327","parentCode":"532300","name":"永仁县","level":3,"sort":2937},{"code":"532328","parentCode":"532300","name":"元谋县","level":3,"sort":2938},{"code":"532329","parentCode":"532300","name":"武定县","level":3,"sort":2939},{"code":"532331","parentCode":"532300","name":"禄丰县","level":3,"sort":2940},{"code":"532500","parentCode":"530000","name":"红河哈尼族彝族自治州","level":2,"sort":2941},{"code":"532501","parentCode":"532500","name":"个旧市","level":3,"sort":2942},{"code":"532502","parentCode":"532500","name":"开远市","level":3,"sort":2943},{"code":"532503","parentCode":"532500","name":"蒙自市","level":3,"sort":2944},{"code":"532523","parentCode":"532500","name":"屏边苗族自治县","level":3,"sort":2945},{"code":"532524","parentCode":"532500","name":"建水县","level":3,"sort":2946},{"code":"532525","parentCode":"532500","name":"石屏县","level":3,"sort":2947},{"code":"532526","parentCode":"532500","name":"弥勒县","level":3,"sort":2948},{"code":"532527","parentCode":"532500","name":"泸西县","level":3,"sort":2949},{"code":"532528","parentCode":"532500","name":"元阳县","level":3,"sort":2950},{"code":"532529","parentCode":"532500","name":"红河县","level":3,"sort":2951},{"code":"532530","parentCode":"532500","name":"金平苗族瑶族傣族自治县","level":3,"sort":2952},{"code":"532531","parentCode":"532500","name":"绿春县","level":3,"sort":2953},{"code":"532532","parentCode":"532500","name":"河口瑶族自治县","level":3,"sort":2954},{"code":"532600","parentCode":"530000","name":"文山壮族苗族自治州","level":2,"sort":2955},{"code":"532621","parentCode":"532600","name":"文山县","level":3,"sort":2956},{"code":"532622","parentCode":"532600","name":"砚山县","level":3,"sort":2957},{"code":"532623","parentCode":"532600","name":"西畴县","level":3,"sort":2958},{"code":"532624","parentCode":"532600","name":"麻栗坡县","level":3,"sort":2959},{"code":"532625","parentCode":"532600","name":"马关县","level":3,"sort":2960},{"code":"532626","parentCode":"532600","name":"丘北县","level":3,"sort":2961},{"code":"532627","parentCode":"532600","name":"广南县","level":3,"sort":2962},{"code":"532628","parentCode":"532600","name":"富宁县","level":3,"sort":2963},{"code":"532800","parentCode":"530000","name":"西双版纳傣族自治州","level":2,"sort":2964},{"code":"532801","parentCode":"532800","name":"景洪市","level":3,"sort":2965},{"code":"532822","parentCode":"532800","name":"勐海县","level":3,"sort":2966},{"code":"532823","parentCode":"532800","name":"勐腊县","level":3,"sort":2967},{"code":"532900","parentCode":"530000","name":"大理白族自治州","level":2,"sort":2968},{"code":"532901","parentCode":"532900","name":"大理市","level":3,"sort":2969},{"code":"532922","parentCode":"532900","name":"漾濞彝族自治县","level":3,"sort":2970},{"code":"532923","parentCode":"532900","name":"祥云县","level":3,"sort":2971},{"code":"532924","parentCode":"532900","name":"宾川县","level":3,"sort":2972},{"code":"532925","parentCode":"532900","name":"弥渡县","level":3,"sort":2973},{"code":"532926","parentCode":"532900","name":"南涧彝族自治县","level":3,"sort":2974},{"code":"532927","parentCode":"532900","name":"巍山彝族回族自治县","level":3,"sort":2975},{"code":"532928","parentCode":"532900","name":"永平县","level":3,"sort":2976},{"code":"532929","parentCode":"532900","name":"云龙县","level":3,"sort":2977},{"code":"532930","parentCode":"532900","name":"洱源县","level":3,"sort":2978},{"code":"532931","parentCode":"532900","name":"剑川县","level":3,"sort":2979},{"code":"532932","parentCode":"532900","name":"鹤庆县","level":3,"sort":2980},{"code":"533100","parentCode":"530000","name":"德宏傣族景颇族自治州","level":2,"sort":2981},{"code":"533102","parentCode":"533100","name":"瑞丽市","level":3,"sort":2982},{"code":"533103","parentCode":"533100","name":"芒市","level":3,"sort":2983},{"code":"533122","parentCode":"533100","name":"梁河县","level":3,"sort":2984},{"code":"533123","parentCode":"533100","name":"盈江县","level":3,"sort":2985},{"code":"533124","parentCode":"533100","name":"陇川县","level":3,"sort":2986},{"code":"533300","parentCode":"530000","name":"怒江傈僳族自治州","level":2,"sort":2987},{"code":"533321","parentCode":"533300","name":"泸水县","level":3,"sort":2988},{"code":"533323","parentCode":"533300","name":"福贡县","level":3,"sort":2989},{"code":"533324","parentCode":"533300","name":"贡山独龙族怒族自治县","level":3,"sort":2990},{"code":"533325","parentCode":"533300","name":"兰坪白族普米族自治县","level":3,"sort":2991},{"code":"533400","parentCode":"530000","name":"迪庆藏族自治州","level":2,"sort":2992},{"code":"533421","parentCode":"533400","name":"香格里拉县","level":3,"sort":2993},{"code":"533422","parentCode":"533400","name":"德钦县","level":3,"sort":2994},{"code":"533423","parentCode":"533400","name":"维西傈僳族自治县","level":3,"sort":2995},{"code":"540000","parentCode":null,"name":"西藏自治区","level":1,"sort":2996},{"code":"540100","parentCode":"540000","name":"拉萨市","level":2,"sort":2997},{"code":"540101","parentCode":"540100","name":"拉萨市市辖区","level":3,"sort":2998},{"code":"540102","parentCode":"540100","name":"拉萨市城关区","level":3,"sort":2999},{"code":"540121","parentCode":"540100","name":"林周县","level":3,"sort":3000},{"code":"540122","parentCode":"540100","name":"当雄县","level":3,"sort":3001},{"code":"540123","parentCode":"540100","name":"尼木县","level":3,"sort":3002},{"code":"540124","parentCode":"540100","name":"曲水县","level":3,"sort":3003},{"code":"540125","parentCode":"540100","name":"堆龙德庆县","level":3,"sort":3004},{"code":"540126","parentCode":"540100","name":"达孜县","level":3,"sort":3005},{"code":"540127","parentCode":"540100","name":"墨竹工卡县","level":3,"sort":3006},{"code":"542100","parentCode":"540000","name":"昌都地区","level":2,"sort":3007},{"code":"542121","parentCode":"542100","name":"昌都县","level":3,"sort":3008},{"code":"542122","parentCode":"542100","name":"江达县","level":3,"sort":3009},{"code":"542123","parentCode":"542100","name":"贡觉县","level":3,"sort":3010},{"code":"542124","parentCode":"542100","name":"类乌齐县","level":3,"sort":3011},{"code":"542125","parentCode":"542100","name":"丁青县","level":3,"sort":3012},{"code":"542126","parentCode":"542100","name":"察雅县","level":3,"sort":3013},{"code":"542127","parentCode":"542100","name":"八宿县","level":3,"sort":3014},{"code":"542128","parentCode":"542100","name":"左贡县","level":3,"sort":3015},{"code":"542129","parentCode":"542100","name":"芒康县","level":3,"sort":3016},{"code":"542132","parentCode":"542100","name":"洛隆县","level":3,"sort":3017},{"code":"542133","parentCode":"542100","name":"边坝县","level":3,"sort":3018},{"code":"542200","parentCode":"540000","name":"山南地区","level":2,"sort":3019},{"code":"542221","parentCode":"542200","name":"乃东县","level":3,"sort":3020},{"code":"542222","parentCode":"542200","name":"扎囊县","level":3,"sort":3021},{"code":"542223","parentCode":"542200","name":"贡嘎县","level":3,"sort":3022},{"code":"542224","parentCode":"542200","name":"桑日县","level":3,"sort":3023},{"code":"542225","parentCode":"542200","name":"琼结县","level":3,"sort":3024},{"code":"542226","parentCode":"542200","name":"曲松县","level":3,"sort":3025},{"code":"542227","parentCode":"542200","name":"措美县","level":3,"sort":3026},{"code":"542228","parentCode":"542200","name":"洛扎县","level":3,"sort":3027},{"code":"542229","parentCode":"542200","name":"加查县","level":3,"sort":3028},{"code":"542231","parentCode":"542200","name":"隆子县","level":3,"sort":3029},{"code":"542232","parentCode":"542200","name":"错那县","level":3,"sort":3030},{"code":"542233","parentCode":"542200","name":"浪卡子县","level":3,"sort":3031},{"code":"542300","parentCode":"540000","name":"日喀则地区","level":2,"sort":3032},{"code":"542301","parentCode":"542300","name":"日喀则市","level":3,"sort":3033},{"code":"542322","parentCode":"542300","name":"南木林县","level":3,"sort":3034},{"code":"542323","parentCode":"542300","name":"江孜县","level":3,"sort":3035},{"code":"542324","parentCode":"542300","name":"定日县","level":3,"sort":3036},{"code":"542325","parentCode":"542300","name":"萨迦县","level":3,"sort":3037},{"code":"542326","parentCode":"542300","name":"拉孜县","level":3,"sort":3038},{"code":"542327","parentCode":"542300","name":"昂仁县","level":3,"sort":3039},{"code":"542328","parentCode":"542300","name":"谢通门县","level":3,"sort":3040},{"code":"542329","parentCode":"542300","name":"白朗县","level":3,"sort":3041},{"code":"542330","parentCode":"542300","name":"仁布县","level":3,"sort":3042},{"code":"542331","parentCode":"542300","name":"康马县","level":3,"sort":3043},{"code":"542332","parentCode":"542300","name":"定结县","level":3,"sort":3044},{"code":"542333","parentCode":"542300","name":"仲巴县","level":3,"sort":3045},{"code":"542334","parentCode":"542300","name":"亚东县","level":3,"sort":3046},{"code":"542335","parentCode":"542300","name":"吉隆县","level":3,"sort":3047},{"code":"542336","parentCode":"542300","name":"聂拉木县","level":3,"sort":3048},{"code":"542337","parentCode":"542300","name":"萨嘎县","level":3,"sort":3049},{"code":"542338","parentCode":"542300","name":"岗巴县","level":3,"sort":3050},{"code":"542400","parentCode":"540000","name":"那曲地区","level":2,"sort":3051},{"code":"542421","parentCode":"542400","name":"那曲县","level":3,"sort":3052},{"code":"542422","parentCode":"542400","name":"嘉黎县","level":3,"sort":3053},{"code":"542423","parentCode":"542400","name":"比如县","level":3,"sort":3054},{"code":"542424","parentCode":"542400","name":"聂荣县","level":3,"sort":3055},{"code":"542425","parentCode":"542400","name":"安多县","level":3,"sort":3056},{"code":"542426","parentCode":"542400","name":"申扎县","level":3,"sort":3057},{"code":"542427","parentCode":"542400","name":"索县","level":3,"sort":3058},{"code":"542428","parentCode":"542400","name":"班戈县","level":3,"sort":3059},{"code":"542429","parentCode":"542400","name":"巴青县","level":3,"sort":3060},{"code":"542430","parentCode":"542400","name":"尼玛县","level":3,"sort":3061},{"code":"542500","parentCode":"540000","name":"阿里地区","level":2,"sort":3062},{"code":"542521","parentCode":"542500","name":"普兰县","level":3,"sort":3063},{"code":"542522","parentCode":"542500","name":"札达县","level":3,"sort":3064},{"code":"542523","parentCode":"542500","name":"噶尔县","level":3,"sort":3065},{"code":"542524","parentCode":"542500","name":"日土县","level":3,"sort":3066},{"code":"542525","parentCode":"542500","name":"革吉县","level":3,"sort":3067},{"code":"542526","parentCode":"542500","name":"改则县","level":3,"sort":3068},{"code":"542527","parentCode":"542500","name":"措勤县","level":3,"sort":3069},{"code":"542600","parentCode":"540000","name":"林芝地区","level":2,"sort":3070},{"code":"542621","parentCode":"542600","name":"林芝县","level":3,"sort":3071},{"code":"542622","parentCode":"542600","name":"工布江达县","level":3,"sort":3072},{"code":"542623","parentCode":"542600","name":"米林县","level":3,"sort":3073},{"code":"542624","parentCode":"542600","name":"墨脱县","level":3,"sort":3074},{"code":"542625","parentCode":"542600","name":"波密县","level":3,"sort":3075},{"code":"542626","parentCode":"542600","name":"察隅县","level":3,"sort":3076},{"code":"542627","parentCode":"542600","name":"朗县","level":3,"sort":3077},{"code":"610000","parentCode":null,"name":"陕西省","level":1,"sort":3078},{"code":"610100","parentCode":"610000","name":"西安市","level":2,"sort":3079},{"code":"610101","parentCode":"610100","name":"西安市市辖区","level":3,"sort":3080},{"code":"610102","parentCode":"610100","name":"新城区","level":3,"sort":3081},{"code":"610103","parentCode":"610100","name":"碑林区","level":3,"sort":3082},{"code":"610104","parentCode":"610100","name":"莲湖区","level":3,"sort":3083},{"code":"610111","parentCode":"610100","name":"灞桥区","level":3,"sort":3084},{"code":"610112","parentCode":"610100","name":"未央区","level":3,"sort":3085},{"code":"610113","parentCode":"610100","name":"雁塔区","level":3,"sort":3086},{"code":"610114","parentCode":"610100","name":"阎良区","level":3,"sort":3087},{"code":"610115","parentCode":"610100","name":"临潼区","level":3,"sort":3088},{"code":"610116","parentCode":"610100","name":"长安区","level":3,"sort":3089},{"code":"610122","parentCode":"610100","name":"蓝田县","level":3,"sort":3090},{"code":"610124","parentCode":"610100","name":"周至县","level":3,"sort":3091},{"code":"610125","parentCode":"610100","name":"户县","level":3,"sort":3092},{"code":"610126","parentCode":"610100","name":"高陵县","level":3,"sort":3093},{"code":"610200","parentCode":"610000","name":"铜川市","level":2,"sort":3094},{"code":"610201","parentCode":"610200","name":"铜川市市辖区","level":3,"sort":3095},{"code":"610202","parentCode":"610200","name":"王益区","level":3,"sort":3096},{"code":"610203","parentCode":"610200","name":"印台区","level":3,"sort":3097},{"code":"610204","parentCode":"610200","name":"耀州区","level":3,"sort":3098},{"code":"610222","parentCode":"610200","name":"宜君县","level":3,"sort":3099},{"code":"610300","parentCode":"610000","name":"宝鸡市","level":2,"sort":3100},{"code":"610301","parentCode":"610300","name":"宝鸡市市辖区","level":3,"sort":3101},{"code":"610302","parentCode":"610300","name":"渭滨区","level":3,"sort":3102},{"code":"610303","parentCode":"610300","name":"金台区","level":3,"sort":3103},{"code":"610304","parentCode":"610300","name":"陈仓区","level":3,"sort":3104},{"code":"610322","parentCode":"610300","name":"凤翔县","level":3,"sort":3105},{"code":"610323","parentCode":"610300","name":"岐山县","level":3,"sort":3106},{"code":"610324","parentCode":"610300","name":"扶风县","level":3,"sort":3107},{"code":"610326","parentCode":"610300","name":"眉县","level":3,"sort":3108},{"code":"610327","parentCode":"610300","name":"陇县","level":3,"sort":3109},{"code":"610328","parentCode":"610300","name":"千阳县","level":3,"sort":3110},{"code":"610329","parentCode":"610300","name":"麟游县","level":3,"sort":3111},{"code":"610330","parentCode":"610300","name":"凤县","level":3,"sort":3112},{"code":"610331","parentCode":"610300","name":"太白县","level":3,"sort":3113},{"code":"610400","parentCode":"610000","name":"咸阳市","level":2,"sort":3114},{"code":"610401","parentCode":"610400","name":"咸阳市市辖区","level":3,"sort":3115},{"code":"610402","parentCode":"610400","name":"秦都区","level":3,"sort":3116},{"code":"610403","parentCode":"610400","name":"杨陵区","level":3,"sort":3117},{"code":"610404","parentCode":"610400","name":"渭城区","level":3,"sort":3118},{"code":"610422","parentCode":"610400","name":"三原县","level":3,"sort":3119},{"code":"610423","parentCode":"610400","name":"泾阳县","level":3,"sort":3120},{"code":"610424","parentCode":"610400","name":"乾县","level":3,"sort":3121},{"code":"610425","parentCode":"610400","name":"礼泉县","level":3,"sort":3122},{"code":"610426","parentCode":"610400","name":"永寿县","level":3,"sort":3123},{"code":"610427","parentCode":"610400","name":"彬县","level":3,"sort":3124},{"code":"610428","parentCode":"610400","name":"长武县","level":3,"sort":3125},{"code":"610429","parentCode":"610400","name":"旬邑县","level":3,"sort":3126},{"code":"610430","parentCode":"610400","name":"淳化县","level":3,"sort":3127},{"code":"610431","parentCode":"610400","name":"武功县","level":3,"sort":3128},{"code":"610481","parentCode":"610400","name":"兴平市","level":3,"sort":3129},{"code":"610500","parentCode":"610000","name":"渭南市","level":2,"sort":3130},{"code":"610501","parentCode":"610500","name":"渭南市市辖区","level":3,"sort":3131},{"code":"610502","parentCode":"610500","name":"临渭区","level":3,"sort":3132},{"code":"610521","parentCode":"610500","name":"华县","level":3,"sort":3133},{"code":"610522","parentCode":"610500","name":"潼关县","level":3,"sort":3134},{"code":"610523","parentCode":"610500","name":"大荔县","level":3,"sort":3135},{"code":"610524","parentCode":"610500","name":"合阳县","level":3,"sort":3136},{"code":"610525","parentCode":"610500","name":"澄城县","level":3,"sort":3137},{"code":"610526","parentCode":"610500","name":"蒲城县","level":3,"sort":3138},{"code":"610527","parentCode":"610500","name":"白水县","level":3,"sort":3139},{"code":"610528","parentCode":"610500","name":"富平县","level":3,"sort":3140},{"code":"610581","parentCode":"610500","name":"韩城市","level":3,"sort":3141},{"code":"610582","parentCode":"610500","name":"华阴市","level":3,"sort":3142},{"code":"610600","parentCode":"610000","name":"延安市","level":2,"sort":3143},{"code":"610601","parentCode":"610600","name":"延安市市辖区","level":3,"sort":3144},{"code":"610602","parentCode":"610600","name":"宝塔区","level":3,"sort":3145},{"code":"610621","parentCode":"610600","name":"延长县","level":3,"sort":3146},{"code":"610622","parentCode":"610600","name":"延川县","level":3,"sort":3147},{"code":"610623","parentCode":"610600","name":"子长县","level":3,"sort":3148},{"code":"610624","parentCode":"610600","name":"安塞县","level":3,"sort":3149},{"code":"610625","parentCode":"610600","name":"志丹县","level":3,"sort":3150},{"code":"610626","parentCode":"610600","name":"吴起县","level":3,"sort":3151},{"code":"610627","parentCode":"610600","name":"甘泉县","level":3,"sort":3152},{"code":"610628","parentCode":"610600","name":"富县","level":3,"sort":3153},{"code":"610629","parentCode":"610600","name":"洛川县","level":3,"sort":3154},{"code":"610630","parentCode":"610600","name":"宜川县","level":3,"sort":3155},{"code":"610631","parentCode":"610600","name":"黄龙县","level":3,"sort":3156},{"code":"610632","parentCode":"610600","name":"黄陵县","level":3,"sort":3157},{"code":"610700","parentCode":"610000","name":"汉中市","level":2,"sort":3158},{"code":"610701","parentCode":"610700","name":"汉中市市辖区","level":3,"sort":3159},{"code":"610702","parentCode":"610700","name":"汉台区","level":3,"sort":3160},{"code":"610721","parentCode":"610700","name":"南郑县","level":3,"sort":3161},{"code":"610722","parentCode":"610700","name":"城固县","level":3,"sort":3162},{"code":"610723","parentCode":"610700","name":"洋县","level":3,"sort":3163},{"code":"610724","parentCode":"610700","name":"西乡县","level":3,"sort":3164},{"code":"610725","parentCode":"610700","name":"勉县","level":3,"sort":3165},{"code":"610726","parentCode":"610700","name":"宁强县","level":3,"sort":3166},{"code":"610727","parentCode":"610700","name":"略阳县","level":3,"sort":3167},{"code":"610728","parentCode":"610700","name":"镇巴县","level":3,"sort":3168},{"code":"610729","parentCode":"610700","name":"留坝县","level":3,"sort":3169},{"code":"610730","parentCode":"610700","name":"佛坪县","level":3,"sort":3170},{"code":"610800","parentCode":"610000","name":"榆林市","level":2,"sort":3171},{"code":"610801","parentCode":"610800","name":"榆林市市辖区","level":3,"sort":3172},{"code":"610802","parentCode":"610800","name":"榆阳区","level":3,"sort":3173},{"code":"610821","parentCode":"610800","name":"神木县","level":3,"sort":3174},{"code":"610822","parentCode":"610800","name":"府谷县","level":3,"sort":3175},{"code":"610823","parentCode":"610800","name":"横山县","level":3,"sort":3176},{"code":"610824","parentCode":"610800","name":"靖边县","level":3,"sort":3177},{"code":"610825","parentCode":"610800","name":"定边县","level":3,"sort":3178},{"code":"610826","parentCode":"610800","name":"绥德县","level":3,"sort":3179},{"code":"610827","parentCode":"610800","name":"米脂县","level":3,"sort":3180},{"code":"610828","parentCode":"610800","name":"佳县","level":3,"sort":3181},{"code":"610829","parentCode":"610800","name":"吴堡县","level":3,"sort":3182},{"code":"610830","parentCode":"610800","name":"清涧县","level":3,"sort":3183},{"code":"610831","parentCode":"610800","name":"子洲县","level":3,"sort":3184},{"code":"610900","parentCode":"610000","name":"安康市","level":2,"sort":3185},{"code":"610901","parentCode":"610900","name":"安康市市辖区","level":3,"sort":3186},{"code":"610902","parentCode":"610900","name":"汉滨区","level":3,"sort":3187},{"code":"610921","parentCode":"610900","name":"汉阴县","level":3,"sort":3188},{"code":"610922","parentCode":"610900","name":"石泉县","level":3,"sort":3189},{"code":"610923","parentCode":"610900","name":"宁陕县","level":3,"sort":3190},{"code":"610924","parentCode":"610900","name":"紫阳县","level":3,"sort":3191},{"code":"610925","parentCode":"610900","name":"岚皋县","level":3,"sort":3192},{"code":"610926","parentCode":"610900","name":"平利县","level":3,"sort":3193},{"code":"610927","parentCode":"610900","name":"镇坪县","level":3,"sort":3194},{"code":"610928","parentCode":"610900","name":"旬阳县","level":3,"sort":3195},{"code":"610929","parentCode":"610900","name":"白河县","level":3,"sort":3196},{"code":"611000","parentCode":"610000","name":"商洛市","level":2,"sort":3197},{"code":"611001","parentCode":"611000","name":"商洛市市辖区","level":3,"sort":3198},{"code":"611002","parentCode":"611000","name":"商州区","level":3,"sort":3199},{"code":"611021","parentCode":"611000","name":"洛南县","level":3,"sort":3200},{"code":"611022","parentCode":"611000","name":"丹凤县","level":3,"sort":3201},{"code":"611023","parentCode":"611000","name":"商南县","level":3,"sort":3202},{"code":"611024","parentCode":"611000","name":"山阳县","level":3,"sort":3203},{"code":"611025","parentCode":"611000","name":"镇安县","level":3,"sort":3204},{"code":"611026","parentCode":"611000","name":"柞水县","level":3,"sort":3205},{"code":"620000","parentCode":null,"name":"甘肃省","level":1,"sort":3206},{"code":"620100","parentCode":"620000","name":"兰州市","level":2,"sort":3207},{"code":"620101","parentCode":"620100","name":"兰州市市辖区","level":3,"sort":3208},{"code":"620102","parentCode":"620100","name":"城关区","level":3,"sort":3209},{"code":"620103","parentCode":"620100","name":"七里河区","level":3,"sort":3210},{"code":"620104","parentCode":"620100","name":"西固区","level":3,"sort":3211},{"code":"620105","parentCode":"620100","name":"安宁区","level":3,"sort":3212},{"code":"620111","parentCode":"620100","name":"红古区","level":3,"sort":3213},{"code":"620121","parentCode":"620100","name":"永登县","level":3,"sort":3214},{"code":"620122","parentCode":"620100","name":"皋兰县","level":3,"sort":3215},{"code":"620123","parentCode":"620100","name":"榆中县","level":3,"sort":3216},{"code":"620200","parentCode":"620000","name":"嘉峪关市","level":2,"sort":3217},{"code":"620201","parentCode":"620200","name":"嘉峪关市市辖区","level":3,"sort":3218},{"code":"620300","parentCode":"620000","name":"金昌市","level":2,"sort":3219},{"code":"620301","parentCode":"620300","name":"金昌市市辖区","level":3,"sort":3220},{"code":"620302","parentCode":"620300","name":"金川区","level":3,"sort":3221},{"code":"620321","parentCode":"620300","name":"永昌县","level":3,"sort":3222},{"code":"620400","parentCode":"620000","name":"白银市","level":2,"sort":3223},{"code":"620401","parentCode":"620400","name":"白银市市辖区","level":3,"sort":3224},{"code":"620402","parentCode":"620400","name":"白银区","level":3,"sort":3225},{"code":"620403","parentCode":"620400","name":"平川区","level":3,"sort":3226},{"code":"620421","parentCode":"620400","name":"靖远县","level":3,"sort":3227},{"code":"620422","parentCode":"620400","name":"会宁县","level":3,"sort":3228},{"code":"620423","parentCode":"620400","name":"景泰县","level":3,"sort":3229},{"code":"620500","parentCode":"620000","name":"天水市","level":2,"sort":3230},{"code":"620501","parentCode":"620500","name":"天水市市辖区","level":3,"sort":3231},{"code":"620502","parentCode":"620500","name":"秦州区","level":3,"sort":3232},{"code":"620503","parentCode":"620500","name":"麦积区","level":3,"sort":3233},{"code":"620521","parentCode":"620500","name":"清水县","level":3,"sort":3234},{"code":"620522","parentCode":"620500","name":"秦安县","level":3,"sort":3235},{"code":"620523","parentCode":"620500","name":"甘谷县","level":3,"sort":3236},{"code":"620524","parentCode":"620500","name":"武山县","level":3,"sort":3237},{"code":"620525","parentCode":"620500","name":"张家川回族自治县","level":3,"sort":3238},{"code":"620600","parentCode":"620000","name":"武威市","level":2,"sort":3239},{"code":"620601","parentCode":"620600","name":"武威市市辖区","level":3,"sort":3240},{"code":"620602","parentCode":"620600","name":"凉州区","level":3,"sort":3241},{"code":"620621","parentCode":"620600","name":"民勤县","level":3,"sort":3242},{"code":"620622","parentCode":"620600","name":"古浪县","level":3,"sort":3243},{"code":"620623","parentCode":"620600","name":"天祝藏族自治县","level":3,"sort":3244},{"code":"620700","parentCode":"620000","name":"张掖市","level":2,"sort":3245},{"code":"620701","parentCode":"620700","name":"张掖市市辖区","level":3,"sort":3246},{"code":"620702","parentCode":"620700","name":"甘州区","level":3,"sort":3247},{"code":"620721","parentCode":"620700","name":"肃南裕固族自治县","level":3,"sort":3248},{"code":"620722","parentCode":"620700","name":"民乐县","level":3,"sort":3249},{"code":"620723","parentCode":"620700","name":"临泽县","level":3,"sort":3250},{"code":"620724","parentCode":"620700","name":"高台县","level":3,"sort":3251},{"code":"620725","parentCode":"620700","name":"山丹县","level":3,"sort":3252},{"code":"620800","parentCode":"620000","name":"平凉市","level":2,"sort":3253},{"code":"620801","parentCode":"620800","name":"平凉市市辖区","level":3,"sort":3254},{"code":"620802","parentCode":"620800","name":"崆峒区","level":3,"sort":3255},{"code":"620821","parentCode":"620800","name":"泾川县","level":3,"sort":3256},{"code":"620822","parentCode":"620800","name":"灵台县","level":3,"sort":3257},{"code":"620823","parentCode":"620800","name":"崇信县","level":3,"sort":3258},{"code":"620824","parentCode":"620800","name":"华亭县","level":3,"sort":3259},{"code":"620825","parentCode":"620800","name":"庄浪县","level":3,"sort":3260},{"code":"620826","parentCode":"620800","name":"静宁县","level":3,"sort":3261},{"code":"620900","parentCode":"620000","name":"酒泉市","level":2,"sort":3262},{"code":"620901","parentCode":"620900","name":"酒泉市市辖区","level":3,"sort":3263},{"code":"620902","parentCode":"620900","name":"肃州区","level":3,"sort":3264},{"code":"620921","parentCode":"620900","name":"金塔县","level":3,"sort":3265},{"code":"620922","parentCode":"620900","name":"瓜州县","level":3,"sort":3266},{"code":"620923","parentCode":"620900","name":"肃北蒙古族自治县","level":3,"sort":3267},{"code":"620924","parentCode":"620900","name":"阿克塞哈萨克族自治县","level":3,"sort":3268},{"code":"620981","parentCode":"620900","name":"玉门市","level":3,"sort":3269},{"code":"620982","parentCode":"620900","name":"敦煌市","level":3,"sort":3270},{"code":"621000","parentCode":"620000","name":"庆阳市","level":2,"sort":3271},{"code":"621001","parentCode":"621000","name":"庆阳市市辖区","level":3,"sort":3272},{"code":"621002","parentCode":"621000","name":"西峰区","level":3,"sort":3273},{"code":"621021","parentCode":"621000","name":"庆城县","level":3,"sort":3274},{"code":"621022","parentCode":"621000","name":"环县","level":3,"sort":3275},{"code":"621023","parentCode":"621000","name":"华池县","level":3,"sort":3276},{"code":"621024","parentCode":"621000","name":"合水县","level":3,"sort":3277},{"code":"621025","parentCode":"621000","name":"正宁县","level":3,"sort":3278},{"code":"621026","parentCode":"621000","name":"宁县","level":3,"sort":3279},{"code":"621027","parentCode":"621000","name":"镇原县","level":3,"sort":3280},{"code":"621100","parentCode":"620000","name":"定西市","level":2,"sort":3281},{"code":"621101","parentCode":"621100","name":"定西市市辖区","level":3,"sort":3282},{"code":"621102","parentCode":"621100","name":"安定区","level":3,"sort":3283},{"code":"621121","parentCode":"621100","name":"通渭县","level":3,"sort":3284},{"code":"621122","parentCode":"621100","name":"陇西县","level":3,"sort":3285},{"code":"621123","parentCode":"621100","name":"渭源县","level":3,"sort":3286},{"code":"621124","parentCode":"621100","name":"临洮县","level":3,"sort":3287},{"code":"621125","parentCode":"621100","name":"漳县","level":3,"sort":3288},{"code":"621126","parentCode":"621100","name":"岷县","level":3,"sort":3289},{"code":"621200","parentCode":"620000","name":"陇南市","level":2,"sort":3290},{"code":"621201","parentCode":"621200","name":"陇南市市辖区","level":3,"sort":3291},{"code":"621202","parentCode":"621200","name":"武都区","level":3,"sort":3292},{"code":"621221","parentCode":"621200","name":"成县","level":3,"sort":3293},{"code":"621222","parentCode":"621200","name":"文县","level":3,"sort":3294},{"code":"621223","parentCode":"621200","name":"宕昌县","level":3,"sort":3295},{"code":"621224","parentCode":"621200","name":"康县","level":3,"sort":3296},{"code":"621225","parentCode":"621200","name":"西和县","level":3,"sort":3297},{"code":"621226","parentCode":"621200","name":"礼县","level":3,"sort":3298},{"code":"621227","parentCode":"621200","name":"徽县","level":3,"sort":3299},{"code":"621228","parentCode":"621200","name":"两当县","level":3,"sort":3300},{"code":"622900","parentCode":"620000","name":"临夏回族自治州","level":2,"sort":3301},{"code":"622901","parentCode":"622900","name":"临夏市","level":3,"sort":3302},{"code":"622921","parentCode":"622900","name":"临夏县","level":3,"sort":3303},{"code":"622922","parentCode":"622900","name":"康乐县","level":3,"sort":3304},{"code":"622923","parentCode":"622900","name":"永靖县","level":3,"sort":3305},{"code":"622924","parentCode":"622900","name":"广河县","level":3,"sort":3306},{"code":"622925","parentCode":"622900","name":"和政县","level":3,"sort":3307},{"code":"622926","parentCode":"622900","name":"东乡族自治县","level":3,"sort":3308},{"code":"622927","parentCode":"622900","name":"积石山保安族东乡族撒拉族自治县","level":3,"sort":3309},{"code":"623000","parentCode":"620000","name":"甘南藏族自治州","level":2,"sort":3310},{"code":"623001","parentCode":"623000","name":"合作市","level":3,"sort":3311},{"code":"623021","parentCode":"623000","name":"临潭县","level":3,"sort":3312},{"code":"623022","parentCode":"623000","name":"卓尼县","level":3,"sort":3313},{"code":"623023","parentCode":"623000","name":"舟曲县","level":3,"sort":3314},{"code":"623024","parentCode":"623000","name":"迭部县","level":3,"sort":3315},{"code":"623025","parentCode":"623000","name":"玛曲县","level":3,"sort":3316},{"code":"623026","parentCode":"623000","name":"碌曲县","level":3,"sort":3317},{"code":"623027","parentCode":"623000","name":"夏河县","level":3,"sort":3318},{"code":"630000","parentCode":null,"name":"青海省","level":1,"sort":3319},{"code":"630100","parentCode":"630000","name":"西宁市","level":2,"sort":3320},{"code":"630101","parentCode":"630100","name":"西宁市市辖区","level":3,"sort":3321},{"code":"630102","parentCode":"630100","name":"城东区","level":3,"sort":3322},{"code":"630103","parentCode":"630100","name":"城中区","level":3,"sort":3323},{"code":"630104","parentCode":"630100","name":"城西区","level":3,"sort":3324},{"code":"630105","parentCode":"630100","name":"城北区","level":3,"sort":3325},{"code":"630121","parentCode":"630100","name":"大通回族土族自治县","level":3,"sort":3326},{"code":"630122","parentCode":"630100","name":"湟中县","level":3,"sort":3327},{"code":"630123","parentCode":"630100","name":"湟源县","level":3,"sort":3328},{"code":"632100","parentCode":"630000","name":"海东地区","level":2,"sort":3329},{"code":"632121","parentCode":"632100","name":"平安县","level":3,"sort":3330},{"code":"632122","parentCode":"632100","name":"民和回族土族自治县","level":3,"sort":3331},{"code":"632123","parentCode":"632100","name":"乐都县","level":3,"sort":3332},{"code":"632126","parentCode":"632100","name":"互助土族自治县","level":3,"sort":3333},{"code":"632127","parentCode":"632100","name":"化隆回族自治县","level":3,"sort":3334},{"code":"632128","parentCode":"632100","name":"循化撒拉族自治县","level":3,"sort":3335},{"code":"632200","parentCode":"630000","name":"海北藏族自治州","level":2,"sort":3336},{"code":"632221","parentCode":"632200","name":"门源回族自治县","level":3,"sort":3337},{"code":"632222","parentCode":"632200","name":"祁连县","level":3,"sort":3338},{"code":"632223","parentCode":"632200","name":"海晏县","level":3,"sort":3339},{"code":"632224","parentCode":"632200","name":"刚察县","level":3,"sort":3340},{"code":"632300","parentCode":"630000","name":"黄南藏族自治州","level":2,"sort":3341},{"code":"632321","parentCode":"632300","name":"同仁县","level":3,"sort":3342},{"code":"632322","parentCode":"632300","name":"尖扎县","level":3,"sort":3343},{"code":"632323","parentCode":"632300","name":"泽库县","level":3,"sort":3344},{"code":"632324","parentCode":"632300","name":"河南蒙古族自治县","level":3,"sort":3345},{"code":"632500","parentCode":"630000","name":"海南藏族自治州","level":2,"sort":3346},{"code":"632521","parentCode":"632500","name":"共和县","level":3,"sort":3347},{"code":"632522","parentCode":"632500","name":"同德县","level":3,"sort":3348},{"code":"632523","parentCode":"632500","name":"贵德县","level":3,"sort":3349},{"code":"632524","parentCode":"632500","name":"兴海县","level":3,"sort":3350},{"code":"632525","parentCode":"632500","name":"贵南县","level":3,"sort":3351},{"code":"632600","parentCode":"630000","name":"果洛藏族自治州","level":2,"sort":3352},{"code":"632621","parentCode":"632600","name":"玛沁县","level":3,"sort":3353},{"code":"632622","parentCode":"632600","name":"班玛县","level":3,"sort":3354},{"code":"632623","parentCode":"632600","name":"甘德县","level":3,"sort":3355},{"code":"632624","parentCode":"632600","name":"达日县","level":3,"sort":3356},{"code":"632625","parentCode":"632600","name":"久治县","level":3,"sort":3357},{"code":"632626","parentCode":"632600","name":"玛多县","level":3,"sort":3358},{"code":"632700","parentCode":"630000","name":"玉树藏族自治州","level":2,"sort":3359},{"code":"632721","parentCode":"632700","name":"玉树县","level":3,"sort":3360},{"code":"632722","parentCode":"632700","name":"杂多县","level":3,"sort":3361},{"code":"632723","parentCode":"632700","name":"称多县","level":3,"sort":3362},{"code":"632724","parentCode":"632700","name":"治多县","level":3,"sort":3363},{"code":"632725","parentCode":"632700","name":"囊谦县","level":3,"sort":3364},{"code":"632726","parentCode":"632700","name":"曲麻莱县","level":3,"sort":3365},{"code":"632800","parentCode":"630000","name":"海西蒙古族藏族自治州","level":2,"sort":3366},{"code":"632801","parentCode":"632800","name":"格尔木市","level":3,"sort":3367},{"code":"632802","parentCode":"632800","name":"德令哈市","level":3,"sort":3368},{"code":"632821","parentCode":"632800","name":"乌兰县","level":3,"sort":3369},{"code":"632822","parentCode":"632800","name":"都兰县","level":3,"sort":3370},{"code":"632823","parentCode":"632800","name":"天峻县","level":3,"sort":3371},{"code":"640000","parentCode":null,"name":"宁夏回族自治区","level":1,"sort":3372},{"code":"640100","parentCode":"640000","name":"银川市","level":2,"sort":3373},{"code":"640101","parentCode":"640100","name":"银川市市辖区","level":3,"sort":3374},{"code":"640104","parentCode":"640100","name":"兴庆区","level":3,"sort":3375},{"code":"640105","parentCode":"640100","name":"西夏区","level":3,"sort":3376},{"code":"640106","parentCode":"640100","name":"金凤区","level":3,"sort":3377},{"code":"640121","parentCode":"640100","name":"永宁县","level":3,"sort":3378},{"code":"640122","parentCode":"640100","name":"贺兰县","level":3,"sort":3379},{"code":"640181","parentCode":"640100","name":"灵武市","level":3,"sort":3380},{"code":"640200","parentCode":"640000","name":"石嘴山市","level":2,"sort":3381},{"code":"640201","parentCode":"640200","name":"石嘴山市市辖区","level":3,"sort":3382},{"code":"640202","parentCode":"640200","name":"大武口区","level":3,"sort":3383},{"code":"640205","parentCode":"640200","name":"惠农区","level":3,"sort":3384},{"code":"640221","parentCode":"640200","name":"平罗县","level":3,"sort":3385},{"code":"640300","parentCode":"640000","name":"吴忠市","level":2,"sort":3386},{"code":"640301","parentCode":"640300","name":"吴忠市市辖区","level":3,"sort":3387},{"code":"640302","parentCode":"640300","name":"利通区","level":3,"sort":3388},{"code":"640303","parentCode":"640300","name":"红寺堡区","level":3,"sort":3389},{"code":"640323","parentCode":"640300","name":"盐池县","level":3,"sort":3390},{"code":"640324","parentCode":"640300","name":"同心县","level":3,"sort":3391},{"code":"640381","parentCode":"640300","name":"青铜峡市","level":3,"sort":3392},{"code":"640400","parentCode":"640000","name":"固原市","level":2,"sort":3393},{"code":"640401","parentCode":"640400","name":"固原市市辖区","level":3,"sort":3394},{"code":"640402","parentCode":"640400","name":"原州区","level":3,"sort":3395},{"code":"640422","parentCode":"640400","name":"西吉县","level":3,"sort":3396},{"code":"640423","parentCode":"640400","name":"隆德县","level":3,"sort":3397},{"code":"640424","parentCode":"640400","name":"泾源县","level":3,"sort":3398},{"code":"640425","parentCode":"640400","name":"彭阳县","level":3,"sort":3399},{"code":"640500","parentCode":"640000","name":"中卫市","level":2,"sort":3400},{"code":"640501","parentCode":"640500","name":"中卫市市辖区","level":3,"sort":3401},{"code":"640502","parentCode":"640500","name":"沙坡头区","level":3,"sort":3402},{"code":"640521","parentCode":"640500","name":"中宁县","level":3,"sort":3403},{"code":"640522","parentCode":"640500","name":"海原县","level":3,"sort":3404},{"code":"650000","parentCode":null,"name":"新疆维吾尔自治区","level":1,"sort":3405},{"code":"650100","parentCode":"650000","name":"乌鲁木齐市","level":2,"sort":3406},{"code":"650101","parentCode":"650100","name":"乌鲁木齐市市辖区","level":3,"sort":3407},{"code":"650102","parentCode":"650100","name":"天山区","level":3,"sort":3408},{"code":"650103","parentCode":"650100","name":"沙依巴克区","level":3,"sort":3409},{"code":"650104","parentCode":"650100","name":"新市区","level":3,"sort":3410},{"code":"650105","parentCode":"650100","name":"水磨沟区","level":3,"sort":3411},{"code":"650106","parentCode":"650100","name":"头屯河区","level":3,"sort":3412},{"code":"650107","parentCode":"650100","name":"达坂城区","level":3,"sort":3413},{"code":"650109","parentCode":"650100","name":"米东区","level":3,"sort":3414},{"code":"650121","parentCode":"650100","name":"乌鲁木齐县","level":3,"sort":3415},{"code":"650200","parentCode":"650000","name":"克拉玛依市","level":2,"sort":3416},{"code":"650201","parentCode":"650200","name":"克拉玛依市市辖区","level":3,"sort":3417},{"code":"650202","parentCode":"650200","name":"独山子区","level":3,"sort":3418},{"code":"650203","parentCode":"650200","name":"克拉玛依区","level":3,"sort":3419},{"code":"650204","parentCode":"650200","name":"白碱滩区","level":3,"sort":3420},{"code":"650205","parentCode":"650200","name":"乌尔禾区","level":3,"sort":3421},{"code":"652100","parentCode":"650000","name":"吐鲁番地区","level":2,"sort":3422},{"code":"652101","parentCode":"652100","name":"吐鲁番市","level":3,"sort":3423},{"code":"652122","parentCode":"652100","name":"鄯善县","level":3,"sort":3424},{"code":"652123","parentCode":"652100","name":"托克逊县","level":3,"sort":3425},{"code":"652200","parentCode":"650000","name":"哈密地区","level":2,"sort":3426},{"code":"652201","parentCode":"652200","name":"哈密市","level":3,"sort":3427},{"code":"652222","parentCode":"652200","name":"巴里坤哈萨克自治县","level":3,"sort":3428},{"code":"652223","parentCode":"652200","name":"伊吾县","level":3,"sort":3429},{"code":"652300","parentCode":"650000","name":"昌吉回族自治州","level":2,"sort":3430},{"code":"652301","parentCode":"652300","name":"昌吉市","level":3,"sort":3431},{"code":"652302","parentCode":"652300","name":"阜康市","level":3,"sort":3432},{"code":"652323","parentCode":"652300","name":"呼图壁县","level":3,"sort":3433},{"code":"652324","parentCode":"652300","name":"玛纳斯县","level":3,"sort":3434},{"code":"652325","parentCode":"652300","name":"奇台县","level":3,"sort":3435},{"code":"652327","parentCode":"652300","name":"吉木萨尔县","level":3,"sort":3436},{"code":"652328","parentCode":"652300","name":"木垒哈萨克自治县","level":3,"sort":3437},{"code":"652700","parentCode":"650000","name":"博尔塔拉蒙古自治州","level":2,"sort":3438},{"code":"652701","parentCode":"652700","name":"博乐市","level":3,"sort":3439},{"code":"652722","parentCode":"652700","name":"精河县","level":3,"sort":3440},{"code":"652723","parentCode":"652700","name":"温泉县","level":3,"sort":3441},{"code":"652800","parentCode":"650000","name":"巴音郭楞蒙古自治州","level":2,"sort":3442},{"code":"652801","parentCode":"652800","name":"库尔勒市","level":3,"sort":3443},{"code":"652822","parentCode":"652800","name":"轮台县","level":3,"sort":3444},{"code":"652823","parentCode":"652800","name":"尉犁县","level":3,"sort":3445},{"code":"652824","parentCode":"652800","name":"若羌县","level":3,"sort":3446},{"code":"652825","parentCode":"652800","name":"且末县","level":3,"sort":3447},{"code":"652826","parentCode":"652800","name":"焉耆回族自治县","level":3,"sort":3448},{"code":"652827","parentCode":"652800","name":"和静县","level":3,"sort":3449},{"code":"652828","parentCode":"652800","name":"和硕县","level":3,"sort":3450},{"code":"652829","parentCode":"652800","name":"博湖县","level":3,"sort":3451},{"code":"652900","parentCode":"650000","name":"阿克苏地区","level":2,"sort":3452},{"code":"652901","parentCode":"652900","name":"阿克苏市","level":3,"sort":3453},{"code":"652922","parentCode":"652900","name":"温宿县","level":3,"sort":3454},{"code":"652923","parentCode":"652900","name":"库车县","level":3,"sort":3455},{"code":"652924","parentCode":"652900","name":"沙雅县","level":3,"sort":3456},{"code":"652925","parentCode":"652900","name":"新和县","level":3,"sort":3457},{"code":"652926","parentCode":"652900","name":"拜城县","level":3,"sort":3458},{"code":"652927","parentCode":"652900","name":"乌什县","level":3,"sort":3459},{"code":"652928","parentCode":"652900","name":"阿瓦提县","level":3,"sort":3460},{"code":"652929","parentCode":"652900","name":"柯坪县","level":3,"sort":3461},{"code":"653000","parentCode":"650000","name":"克孜勒苏柯尔克孜自治州","level":2,"sort":3462},{"code":"653001","parentCode":"653000","name":"阿图什市","level":3,"sort":3463},{"code":"653022","parentCode":"653000","name":"阿克陶县","level":3,"sort":3464},{"code":"653023","parentCode":"653000","name":"阿合奇县","level":3,"sort":3465},{"code":"653024","parentCode":"653000","name":"乌恰县","level":3,"sort":3466},{"code":"653100","parentCode":"650000","name":"喀什地区","level":2,"sort":3467},{"code":"653101","parentCode":"653100","name":"喀什市","level":3,"sort":3468},{"code":"653121","parentCode":"653100","name":"疏附县","level":3,"sort":3469},{"code":"653122","parentCode":"653100","name":"疏勒县","level":3,"sort":3470},{"code":"653123","parentCode":"653100","name":"英吉沙县","level":3,"sort":3471},{"code":"653124","parentCode":"653100","name":"泽普县","level":3,"sort":3472},{"code":"653125","parentCode":"653100","name":"莎车县","level":3,"sort":3473},{"code":"653126","parentCode":"653100","name":"叶城县","level":3,"sort":3474},{"code":"653127","parentCode":"653100","name":"麦盖提县","level":3,"sort":3475},{"code":"653128","parentCode":"653100","name":"岳普湖县","level":3,"sort":3476},{"code":"653129","parentCode":"653100","name":"伽师县","level":3,"sort":3477},{"code":"653130","parentCode":"653100","name":"巴楚县","level":3,"sort":3478},{"code":"653131","parentCode":"653100","name":"塔什库尔干塔吉克自治县","level":3,"sort":3479},{"code":"653200","parentCode":"650000","name":"和田地区","level":2,"sort":3480},{"code":"653201","parentCode":"653200","name":"和田市","level":3,"sort":3481},{"code":"653221","parentCode":"653200","name":"和田县","level":3,"sort":3482},{"code":"653222","parentCode":"653200","name":"墨玉县","level":3,"sort":3483},{"code":"653223","parentCode":"653200","name":"皮山县","level":3,"sort":3484},{"code":"653224","parentCode":"653200","name":"洛浦县","level":3,"sort":3485},{"code":"653225","parentCode":"653200","name":"策勒县","level":3,"sort":3486},{"code":"653226","parentCode":"653200","name":"于田县","level":3,"sort":3487},{"code":"653227","parentCode":"653200","name":"民丰县","level":3,"sort":3488},{"code":"654000","parentCode":"650000","name":"伊犁哈萨克自治州","level":2,"sort":3489},{"code":"654002","parentCode":"654000","name":"伊宁市","level":3,"sort":3490},{"code":"654003","parentCode":"654000","name":"奎屯市","level":3,"sort":3491},{"code":"654021","parentCode":"654000","name":"伊宁县","level":3,"sort":3492},{"code":"654022","parentCode":"654000","name":"察布查尔锡伯自治县","level":3,"sort":3493},{"code":"654023","parentCode":"654000","name":"霍城县","level":3,"sort":3494},{"code":"654024","parentCode":"654000","name":"巩留县","level":3,"sort":3495},{"code":"654025","parentCode":"654000","name":"新源县","level":3,"sort":3496},{"code":"654026","parentCode":"654000","name":"昭苏县","level":3,"sort":3497},{"code":"654027","parentCode":"654000","name":"特克斯县","level":3,"sort":3498},{"code":"654028","parentCode":"654000","name":"尼勒克县","level":3,"sort":3499},{"code":"654200","parentCode":"650000","name":"塔城地区","level":2,"sort":3500},{"code":"654201","parentCode":"654200","name":"塔城市","level":3,"sort":3501},{"code":"654202","parentCode":"654200","name":"乌苏市","level":3,"sort":3502},{"code":"654221","parentCode":"654200","name":"额敏县","level":3,"sort":3503},{"code":"654223","parentCode":"654200","name":"沙湾县","level":3,"sort":3504},{"code":"654224","parentCode":"654200","name":"托里县","level":3,"sort":3505},{"code":"654225","parentCode":"654200","name":"裕民县","level":3,"sort":3506},{"code":"654226","parentCode":"654200","name":"和布克赛尔蒙古自治县","level":3,"sort":3507},{"code":"654300","parentCode":"650000","name":"阿勒泰地区","level":2,"sort":3508},{"code":"654301","parentCode":"654300","name":"阿勒泰市","level":3,"sort":3509},{"code":"654321","parentCode":"654300","name":"布尔津县","level":3,"sort":3510},{"code":"654322","parentCode":"654300","name":"富蕴县","level":3,"sort":3511},{"code":"654323","parentCode":"654300","name":"福海县","level":3,"sort":3512},{"code":"654324","parentCode":"654300","name":"哈巴河县","level":3,"sort":3513},{"code":"654325","parentCode":"654300","name":"青河县","level":3,"sort":3514},{"code":"654326","parentCode":"654300","name":"吉木乃县","level":3,"sort":3515},{"code":"659000","parentCode":"650000","name":"自治区直辖县级行政区划","level":2,"sort":3516},{"code":"659001","parentCode":"659000","name":"石河子市","level":3,"sort":3517},{"code":"659002","parentCode":"659000","name":"阿拉尔市","level":3,"sort":3518},{"code":"659003","parentCode":"659000","name":"图木舒克市","level":3,"sort":3519},{"code":"659004","parentCode":"659000","name":"五家渠市","level":3,"sort":3520},{"code":"710000","parentCode":null,"name":"台湾省","level":1,"sort":3521},{"code":"810000","parentCode":null,"name":"香港特别行政区","level":1,"sort":3522},{"code":"820000","parentCode":null,"name":"澳门特别行政区","level":1,"sort":3523}] \ No newline at end of file diff --git a/web-admin/src/assets/images/3d/icon1.webp b/web-admin/src/assets/images/3d/icon1.webp new file mode 100644 index 0000000000000000000000000000000000000000..631094c535ee590cf85116f982025cdfa3fdd5cd GIT binary patch literal 10076 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 XXQx*3k}r&AvbXz>_KWy0`v>?RO2)Ex literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/3d/icon2.webp b/web-admin/src/assets/images/3d/icon2.webp new file mode 100644 index 0000000000000000000000000000000000000000..a9e47428dae9eabdf1c63adaeccce94990dd6f59 GIT binary patch literal 6712 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 z zV`^-s!C(E)<}8B7v6zaZxvtfS6bOFwmoLwZ^!+A*p$%lNv!qsS{``-0et818Ulr1O zY>YjXSTghE9!(66mThy)LuGyF;iB)X*+wi7@NU{4JsEMKJ}TSw`_HQTzxclZOxO_V literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/3d/icon4.webp b/web-admin/src/assets/images/3d/icon4.webp new file mode 100644 index 0000000000000000000000000000000000000000..522108f67aa47ed2d5a201fe615cca63802c9008 GIT binary patch literal 5762 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/3d/icon5.webp b/web-admin/src/assets/images/3d/icon5.webp new file mode 100644 index 0000000000000000000000000000000000000000..b8f794dac5a3e04a21f546391531e50b28eaeda5 GIT binary patch literal 7932 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 n0plREUR` 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 cmY(20IDjVb)DMN`D2T(p^ZM$jri0Q@7_2mk;8 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar1.webp b/web-admin/src/assets/images/avatar/avatar1.webp new file mode 100644 index 0000000000000000000000000000000000000000..68e256c297cea6017efb892509f005290f32c95f GIT binary patch literal 2296 zcmVLHNCsINV&i=yrkQTpUuSn>Acb z2FE|`v?5W%`1-J1k%&b^{1D+E*v&*cgPXpOkC1j6c3zl~THPT33XotPrLtyQ6T5WG zK)!TAT}RO#s23>vzA4R_R4Z`A z)!tkNowc|9f8G#J-=@;b?8g;}XfMv3vXpQ%%8H}JEd>Q-E=Is*dOG0dKP#mpzK6Zu z!~hOswhdJQ>~$JV9YE{yxG0G7eyp!4WjSqX4`vFrIzpIQ0C7!XfcamHM$sc`M2fb8 zp?r)l(JQ^6s8qm)T%}1_SBx8Ei&#F=-z9}B6N}fuspI`o)nIez>LrpO#ZCv{{2?o7 zizMB-j`ht%neuFw9`x-5QLn<^-`6#2Q&Jjy+o`+KTIQK8(?v)43qCH3lBIY}J^8V+ z!&1a_htv&I@_M)c0092^2zg+Z2FA6yE){J(rlOXGqB`_f57m^A&4PKhbc!KFs7OB8 zdlaLr7TvuJI%#4#-P7{r$I-Vawb#sYrY1ZHul|y?8{3F>u|DwD9~|=ZB=TKNp#;aH z6p{8M)-)<+c{^=m6B0X{RudGJjVD&&L_)4Q_O-UM8aHDF436jm=6;o62nG$yl1N%V z^US=K*lNl}uT*xK!uV;kLRBU>FcxuN!aJ-6^T-zU<4BjZHoo!!CG`NKe=YJ;2G_dxc7RRuC!*ki8f7LL%n`-+KYn3a!J?P@;tfvk2Nst5@wK3y zRdIUSYB8(CZTDhk8nxBMCfFOiau)hb=Rx7ub2hR3WL{Hyrpsf+J+hGLMDG-~woLz+c}Z@!7eEkAC9e9%w>(!zlJ@E3xS^#||H1lMw>!0H5qz`? zDTk_akMd^!5{RFXFk>aW@yCUb(ne!t0QU(B9Kw(BX97mmD2irsOwo)JKe)-C9>6-W z8>zQiA&goy3?**OV)g6ha!+LWYa$kEDvBX5cFt_J}Y0=#0<)9Gxp~2QlLcB8}FqW>Rt=Zky2M5|a z;Hc#Pb0Ak4j|G(TYytIeThz9Q7q9nW1+bIw%qZ{hkGJdCN^(2I&!>>*jiM;zsNsay zfD%f*gMDH+xlIIpl2^zsEveXG-)Itxrc5f{VG z2+%x%J-=#LxVgp3INtBtb9Dls=&UII?9k3BspvyU-yDWy#ZZ~p{*3H`GxnG%ZA&CL z&*2_n6+ig<_r zr$au4SfLz_%DUXgc@3zY%{O#}L*SV!h@$ z0&J2lMSWRS?_2t+t%IovykIn^Gf0E(4)1S?`Q&xoPeYMB3I7AQVb*GGTG&qx)z35` zm-*_NYHX|F!A=SFfAm+@A_k_kST8zZ^As*W84Ywga!W-8E;52QU#|P1>A>0AG0ZKh z1{j-VQFdICVO6OER;VL$V>bR5N9PP03GmD;8Qdn}J)%-_?J)}HeZciZ5q@(VMY4g( z+?!k6V8t}Nw0vuxbc5?JCw4MK7peL5#PnJHvA}FX`~lUGz3J zY|qT!%$9q#ltNvl4zfC+1!n>208_(%8;BBBv?g=;kmh|_nCPRCC&3y^hj$-@-t&>} z-b^A#l{w#iwS?_Z7@c;6zG?p5>zH=`r^z&UF!0@+o>6G)n+?TjkXzz577X8g2C<5o SVD2lzkuUx<_ZG<9l>h)e2Ygfj literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar10.webp b/web-admin/src/assets/images/avatar/avatar10.webp new file mode 100644 index 0000000000000000000000000000000000000000..a813d4c23ca9d2945fa089f0e4281a7e6e122e42 GIT binary patch literal 1410 zcmV-|1%3KbNk&F`1pok7MM6+kP&goN1pok0BmkWODxd(M06w);rA;R!qoSu4ia_8N ziDxRj@G(#c8w@MiZ2Pm1xtXg&SV}tO*upn_$e3T{3IKsG)2P7zl)<|FlG0beLZ66? zP8MKY$g2W!|C9%Jz7n>$67R(*k0AH;%P<`vmTFO)=V##pXZCZ)gtN(Z%p*SC`lfMv zD>&oYT&*hXU^Rn_m=qyJP9*z79qaCF(f*3BmcvomuMR=u8kHme^Vh+Y#SverH3t|FRmiPRS&TRUoCKe-bsYMg$7@O?MPgGwcid>XA$|n6Z=L) zZ2uB6qou3e=(axuwzL2Vp-2eWFAM$_IkRILs9hSH#S0Z+MXb;wb8oKdBte3;R)bA} z*+BGDjYM<{i3fa8{Zlse2Nb(xOK+^ybEndK`Zlp`kDA%hMHUtv;J0j=R{~n*D$iXB z&!JSJ=<`@=^kw-&i^Bsa0`G0K_b+M}`aMe#zB&dJWAP(c47c>965b2)B(4!Vx4$; zw1H=hX#>fy7P?nk_rl#aH{h1yQ$2BN$smP1u-VbsMnWv11? zLp058?xk1an|Sw(?NjDb;uebjVkWHHiQ7W(f`P#D#fli5R=&I_)-XU?fc6SBhQ?kN zJ$AQ42J^$gWWE%oe-N;M|ApbrPsxz_(cK-~ZAFgxPE2^B`Q75YhbMy^7Pw~YD-ChS zA=>F9_HN9N3FH?)0f>*-9{l#atdGpurvFT^8H)aFa0%PFn~F3`ubg8gY$SI3_!~2` zS_l(^H=T)7S7kzz(;dvwpf17sUZ}3lKcvMGGLfTwlHX5cAC;>SC~wT_CZ)TPLJ|+^ zO1^m4YAnp%qoe6yc=?;Ew9>7%+BplwY*&G+-T%ccSxkn1Qw7Y2OFWn*`da)d=D&$8 zPbb~qkF!m1wX=~@J>R*@ZYZ}fr6gbA|E>MzHvxRQN8k;s6giiV7hzBm=J2h|Fq!!k zd3*yobrI{Cf)}+vu8w>&2vWX5W68fofgrK9qFsRY-2?*b~wc7TUc73C>=31jaEDl4iGgxUWZ zB4rTdKzTY{)gGK&8Am&B2>R;B9wKiG*l5R=A=#t?3mmUkxUGS7kn QTF;h&;#lF?m{x!Q0CCo}*Z=?k literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar2.webp b/web-admin/src/assets/images/avatar/avatar2.webp new file mode 100644 index 0000000000000000000000000000000000000000..6716e3ff9a7c07198562500a8b7b15d86eddd92a GIT binary patch literal 1214 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 SOT){6x=sa6x ziDv-LJda-J@i#;hzW8~^&ycs+x+Z)S_h@HPs{&NWIsvF}Yf|wew7S9Za;U>aQ$~y5id98~wmJMzcHjDBq)*uuBf~SLu z)Gp7IuZx!uI9P=5&_Dqy#yuEZD#{4@MMZH0ciM^|XF*;3r z9;A{NP`bRGi#ZJEeNWg`G5RMK9xvPpo%yTs_LyO5m9BZ6M8d=6DrzKBk#26MucKg% z@Jmlisk&6TglV1uE@+Mi6dU?WTlj^OWWD+VusOAR0QO@7&Is!osAf6}pPg{NW71Lz z;rRW1v6D6$EyDKb`U3Y#iU6JgDBoZ>M~GrxedkT`+jJu#XwKj42Uj3@#eB16DhPMe z?b(<`( zs`~_!4&_XB-I(Go!Ti!(B zzX28-dwQ8RJL`7&KAUMlIpDVwTj)zHMR}xDz-D@3~Cc z7|ZkGAVEdXA(ao{SKLu?NRz`qi;$@P>N24l+deOf>s))>An)p$#2X!_5;0xOako)X zjIOe+FA+F+H}$q69Y(8V+=}dvt+qbRSF%REpd_z<{gNTS|1wDRih&;=->ZRCM90dv%N9SSzr(f;PM-%fXrH3Pfe2f(DQ2NV&X2&-DORYw}T--4;V);q5 z_0DY^&XL%`xt(>cWVu58mGS#f*E!W%9W)`^Ht({sb?}UPP-X{41Jd+OelWn1DB=!? z?MC>k2#5dG-RGm{KTf5t%~`eqSg6fR1{uXI1M|uCGp8g4^^df%E{456Kx`7P(>#EL zmhGFzWA7={)deTE9PtU4F*C@=vOzZKQHFT0AgxVwj1%kfZW*%UC{wbm;GRO6K_yc< zw+EhfXW12v2HeMBD0!Hq=)pPKt|b&p`+N5s*oO##&@~ZAhA7o3S52Pz{bcveBBC5r zCvhxa8Nh;#y@aO<5eJyW?$Hl}R1WvJQx&b&?*|4N4T}!E?@yxeE3b2sV1`a@^R+7J zp27xGD+@x*xmx7d&{M%Yfd#$BB*qzx1LzqTkQa0)>ycf>%P|WAHa3;I)bi6;o@^&8 zlF!9&kvZXgXme;5J9SggsLI9x!bbkq`v&rTj4TS4=%It-3h6O>)z;jL+26!mg@0s7 z{4(NDv3IR6vYgZOFlTl!c!b?aLBP6L#|@u(xpJ83IMLF?7);-IWQly}m|w*of%ad$ zs4&NHOL!Vvik=DMMaQ-=WnunMXR#%% zIGbDlMeFoEBXYga#NI7n8!Wj(pa!rZe>u0q3$8d;_hEE_F!k`bcamCdsV5*a6aolrOAz(+B zd@P)%Sve@b1T5Gzk>0D?uqoxzL9g;Hq#>W|iLtr^A-5BQTpT9ebo8522y|Yi&}N}+ z!nlr^T4DNF?&R$Cvv9rm^Me9(!ik`_w@ulxS$XEX<#KKx{wypTfIc~YJvA0GHEjBa z{tEX`KyB>SnrEk(@oucu?SqXbBaEcn5w^tTc2WGK(%4D)aa56stfLL0kuMEM7Rqi; zo`xQal&o-#zU;IGUcZdFg?D_jdE*(s*c%p)6)*r98xXMy&ILWlQaYSn60FD<1I}dkS@TL!3$rhUX&agD&Hyk%~IJImH>Onl3MQU|Ay%bPf&#ECZX4~J>IhG$r&FUr~Xpd&X)r{G|={i?b_HnA@GVU z)1>)kALc5Yj)mf+#4Bd2-y+^^2?%cJf4F uD!N*}&DvQ+z%4JRZt z**wNaQ)XNFP~Hyc-5LfbIC&@l{_)m6_A6qduzFFQLe7hG z+`Dg7`MP=8PMs#W z>)Zvn?0Q`J3a~$cdz%M6qCYPRal2tH)ADr7pFDSr0hhEecfKJAnD?cGv8&)tngt<% zBEa;{SzSMNkCB(s_+f1EmeKCik^88@dGSs1>7b6hrH2O!%;F^AILl`PB#npS3=mrv ztu!z!I`*4f;;#|N@y$x9puJq@e%MLELvFmQ$7sQp+jYi8zXn z7!yB{(N+rF_;=ECz2YtbVQ{P8&hmx-SM^Px`+Fx?{VVD?*kb%yULK5fou&W;zx@57 ztjN5fd9K(%4A*ppn$C~0uwAicQHGUJqaXtTq-SEO3i*S5UtzkmT-;2S-*yKx^S4)p zu(xtY`uuGFdnEcF#&D-^5r5^8ea?Ikb(enTfiNd*6A`*r_w3nuP4|nOjv4Ar7>Bn* oum=sD9}=@(JYWHzN=bN_eTt*WCui4r!^|MQ?*(KtUpN2&0LE>RZvX%Q literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar7.webp b/web-admin/src/assets/images/avatar/avatar7.webp new file mode 100644 index 0000000000000000000000000000000000000000..e5ef6fea28c4dea1f9e10e78c8183bbb544b75d6 GIT binary patch literal 2712 zcmV;J3TO3FNk&GH3IG6CMM6+kP&goj3IG6bGyt6eDxd(M06w);p-ZPFBO<9-OL*WG zi9i_aoN0I-4^TUVIodrc|E|84pR(K^4Ye}2him)-9_C)Uf2WJ@`4U!&jCB@!jQSWf zkWi1W!e|7=uqM|}&jWCK0bJPHdljLAMtSOBhK2FL9vIJwZ*jR0^qz{%o|;eu@jIID z>1Dho=M;OiIBQ6k90N7)U-LUB4fNbnB zcVd!#l@ge#a^5^>ovyb^=oxMdg}d1U^l`2Fm~d{`GrP+hqwRdlsSp zZ-P@AID|3okzavUmSMCE8gScpMng0Q`5{KtM0ZUi0ncfw=fKTHEdntzAfZJM&W&Uv z67K-k4KmgBg(%$Njk|Jg-*xprnCV_zKfhnobWW_!Q|jolDX+OMrq@H(J)qOVrR-qv zRIBNovB7=pht`u{?#HO!58IuZqG!54`tQ%x7=FyAh}uj_ZRsSbgQ2Z1#W=b?n({iD zm$Y-O(G)Itc^B80u=Sua!8J2(sb2BUsv8#G)g?fpX(OpesA<(_`VsuMZ6dfL41iYJ z?*M;4b?t@DbYfq${(Al({l4n!l089uXnn-u$MA2MX|98@2|Cx#>)`8d($l@QFME%7 z_6}QMOoeB?j@rwb*TH=HoDV(FiLvgaLY2@MYNJ=k3TkS{3csOEw_&C-HxHy;ajX(Z z@#lxXph1y}+iOME!-6i8f&P2>gA0==<@-?sKQ{II&j$D`7MMhkLpi2;N%;HPy+G{o z000uB!pDPiCpwuSQQiLY##czfeQr3R&d!)&9!I35n8R!_q{}a)ZBY|b^-u<_=bdjLM zsH;7oYDXr^TFEo<|H}DS%GT1C0L2i5=EqD1g9i2J^W;u>#;j@z=K^hzFU= zYY2QMrIAKg`G1?4OlL+SauH1y`A{Uz#84Uv44XbR0-O9-ol{Wgj|tx$nKLP-P2du% z-Q0jz6G7SVI+1s!A4*xZp5N|eZYSJHTa=>)Ajvyi?EeB#w59bKeTsO@(I;I(WI77R zTk~JMwUgwE@w2~AD^;ya94Kp&WMaW0WwLS@H`8wZvU0zjb@itK&I(FIx@VOp7hB0H zotLS1e03mJ6E`f%jAQB%^&LSPkvnigLijZK-J)3ej9wE3&g(7ejXm+7C@$Tjez_I- z&tVa7hX+KoAg}8LEcb@&UGwPMMlWWtOM7&0LePzZIRAMRmZmAs1`e%T@SSGa=*OGY zhQzw}Ca-M_vl&mQDqK~wClFH;H49m0Y^Ym{L4&A ztXLwKYl_@y2ljr2kkQYC=V5w0{+F69RiFdTm)%T&!mfzP-kw#`aCmmRG$H1>hu-6$F77UAgTvGa;v!U9uan0`(ci0>}JF8n)U zn-=c1mA3i;uD8W=(^j(nz4X`EN%~rB&EFjc;cV(?)IMy<#JIAZJKCn2H!jd#+FP3d zh|Te*k9)A5x_gw)Y-n@x$ zX==z!&?XI>ePW83uOwKEkDLxe*zeJA4Pq9#;q%y~fS0-v=()A!rQFSY%-}3u_+s~H zW9zimEqBTB=n_B`hS84Ispf(XDkch~Aqqj;#aFJNd-kp*#*uNX>22y$d5{l&6GXjo zj>~j?H5qFF3f<<()y8WFAO-OjT6Bgy#(Rr=E4LU_h_>6k79MC*;=Qq*6sN;;TC+an#IgsR6KrAO z$c@_{eBZ9#Y{_X^v3H=kdKtigpF(Gy(*r=wmktt#QMs28C30ForRlH#j}jMaWuk@E zA_pE51~<1C0n?zwLyZVm9FlRO5^l`sqbf$ri^uN7MVKB^fThgOshG+$Pouyye&KMJ zbG2%FWThe&(<80fo5owGc^_cOzvBH@`F?*~*BqZnd>}Yoo_nqw(`pk)V z*Z@dqLMOC}XJjR@tX1aZzBlMg5_@O^19uBchc*Buw}AJhXJgG{jpTle SlnZDgHxy*uU+B%U0002~4@gr0 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar8.webp b/web-admin/src/assets/images/avatar/avatar8.webp new file mode 100644 index 0000000000000000000000000000000000000000..b66e48f7b056cc570d368c4e0f5d962216d29971 GIT binary patch literal 3946 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 E044g>D*ylh literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/avatar/avatar9.webp b/web-admin/src/assets/images/avatar/avatar9.webp new file mode 100644 index 0000000000000000000000000000000000000000..7974139777dcf5db9848b8f0b97b58708d60d369 GIT binary patch literal 1680 zcmV;B25Cq`s!Rw6r*sJG2T- zxVvRExAV}fjI%u($cwje4h=Qh8M^Vhm$-}w&Q^=5w2y(KN)o9n&3k|tlSOs7*31#L zZd*A}kBRj5Ao@<*ftTKbJz|QgG6yI1)!FB5ojbeD5SIT??x5_85>vF3(iY~_s}B6z zJIL03h+X)vz5D?ncg&2BI7M|1dFC`>e0JBim5qthgnd;jgMITvIsJRf`(5IKpu&FX z-rCs3S~Eqe$321H8YQh+4o=)+a^L}065GaGUCEK0%hpy+*Qx>$m=Rv}gtBWa=77lX z(VYa&S4AY~L9+k={`NoGgSxyFZfl)Pi^vA#KNDL6dX8Q>us5c5t;6L0o&x6W@m%lA zDM)$!t-!khhGc^`eu!>cuJy#x%f0VI5!yaa=td}Xunnnhr8ev;uMHIhcr0J$XyqK9 zuX57K{X^gJE0uk0OB+EWP-c7ns_RMON}bt%QVj{Q$m;#|WErNiIZFFI{kvAmC0JDA z6S~aC#;gaT!rVstFalV1u>i%0BG3(ck`%1_k7)7_k4dLbflBWF-$=y zYXuFm?Pkkw>>-p*ze|ub5=lw7qz?%ivp7%e~o)zuOB^QE*8~1b{~M=$X$;g4OB&<`_pQ(fAcH!qE9%DO$8BLT*BZq0o#qHcMiMyX~<| z-=+m)v%h3{wy>hD`#}La=L=Ej{j!TN*UL@gmGY6yNO_SKe0~V$KMCY{uAJ4ke=00S z#(Ss89O&bj<#0={Y6sz^ccLBU{iacl0AlStaKAP5^H&%N#arv<9wubKsR@^3#Bh3j zH^cK&-QW8*&El;j|62<;pvqeA-&I-=$SY3PHw%JH{W2HBMLgw~VZOlbad0jQB0lI? z&A2OQ_kK9>21w6V#o%fNugN!cbI}(?Mnr>8{3YLGv|JBl>tsulVv@2-!G>Bp(?L%z z_4KMfeT23VcUa&**Qq9gpKCv+thWy@(5FZ;SP-pYt;n#N8hgyGcT~yp0o7wWy%$XW zaP2yYd?+xSzH1i5u=5^{bo z<@blJ^<1?6)cNf7eacQ)dqC94Z}gOf7S(g?b+Z=2PdS8(tvK#JzU@=G-<7lJE^qf| zB`U!>-htj`Lio0dQ+Ic}ohghs09r;1A1!tJ0XI!YVxlj%Az=?yczeG5GPnkT{O zS^iGH_&v0;c>ZPbqB~?md!#IKb(FKUmVRUw=bZ%(nx>OTGVw(Tc|O;5oLA5MX`wQgQMaiXBB zpcHtwlRdTvXZ+CKlb4)N9T#5@t0>l_Y-OHSL)^qXurPW*__rJjBN4{NpNd!kblcd- a+aN;YfSUTyaGIA8bqP%u?tI%K&_Do!2TN1{ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/ceremony/hb.png b/web-admin/src/assets/images/ceremony/hb.png new file mode 100644 index 0000000000000000000000000000000000000000..41033245879f1051f34c33766bb6fdb4fffb38a3 GIT binary patch literal 2275 zcmcImS5#B!8a)ttO(dY8U=WaA1Y@Yu5|SVSLls*nQRyN9At)NUNHK_l2oV%TMHq%6 zW~HUV&dd2T-CeP=QYuma z0LbETXb%7o0!tx40s`K`s*ZSpjlH{z7Y1zkPUy`(6yFK+V`I>pEOS2QpB60u2atRa z*&=|CHo&?cCD<6u+7|PZwe=5v|Ia}Tf6!8(^HbId%`rgn(T)P-2M!tue5VWrG=c1Y zkT+Nd_-qS47W*&AGXD__%+_x6kNBj)76=aZn@?`(2$HZY1yh1oaM~J2Z-T)_>suDMOUNnq>hN9D^-_6J|>Uy(NO0(zje=p;q63A<>}zMlWb#0TvU62S8ac z07zD!Aq9aSF*wG<)f1pZWe1pPJ%2*G6%G6F_GRUjI6r$kBgt=^G5T*;Bzg0ljC=>^ zTA$bQySC>KX({n%kGSrXof++Ks6K%aUFVLzA`*S^mMFw_IJ=zSVXphv=Z`g|v}=@v zkW=o5F-T**U1gO1`|gn_LJ|OoE#T4iUh%`+ku$z3_HZ#yp`3kNGF)E^iVL*YYTQv? z8+LCYGgG%>Y?9BXh&0l}l}5J}sGqsxre+&;o>0IpvWi1UB>&w09{yeJikG(;SxTLS z#Wn6tiR!tOM!#_~RsUW`wJIH9zsm|cIN*~Rvmf1v}8ir>tu{H8@G7<-_?S9f4WqpX>ZAj-RS!{3iHgYJB zUwD;AvY_vo`WkkWk(^XsHys=n)m2qKB41Wbsh5zOEWl?xo1jVXChu6YO<~L&VFjYw zw#cTr@2bd+kbW!cXN?C?T-A;JvN^iHmR^4TNyPNjBe~X$BU#ALLS7$a{CvEOYDRRV zG6%F*{<3bL?KU@yIzv>b<7oQjr)z$E;WZSrh^J8kV~U^F+JusB<=9WDqlDcRbn?lo zDw^VpRVgbFTqxPpSSGWpx|7=Vg`GJH({vk>Wl(p0=&mBKY>r9U9Y&BHDmvuUl><-- zke+~Sm&f6DQ|Cw)7o~azQXhx8IGA?04Egj`Qze(paIRz3;vJsB&Y1brzu-=qc%C*W zd2@Bwt3g;?GotQhY6qXmmG&yXwFUU)Yf$?(kc(W`pdCN5-v1v zToE&Uf$CjP!!rM9eto^UnAX)6u2_d=JoFBbCuX!>Up9};7BjBz&PorOhBeMurH0=f zJhhx@)-9aJV>Kk5tAI5H(RWDg%UMq1Vdil_oj?8Cn($3MxV$#rSQXuVp<QP8WMB>}Vqe`-kf-H`C_x$6V+`uqTu6i7O9 zesm99cek;XW0C5kb#mWzqqrL(Id-*-nH3{LNVOzgqb`tZiz|gS zah?EmIB}!yIU4$WTNq*NILvI~9UMQ^rq$Ss{Djx zCuivMP<2n!v=%s=P&EFXkiv{8Pww@7q^4wA($G!y(@*=7XW2erCPmTxN}3%W@7J@n zaUixi-xr&6qZq&N&WHO&%gqHbB?%`2iTK}Fk8vLLzZD8MFBRvK-fQCu49rUh$Mx+uW!0jUCcU-x}#WRz?c^S|49F*g^)J36r3gg%c2}Kte-E~7qe#2lqfT1 zofWC(7}s;Jxq}l?&*3doa{VHgsRu_M2W_J`=m3<@h2QhDWJ^j!7Kdz;Bt^7g4C!;^ rtK9?{oKY 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

jl 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�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 JNvI~k{{d==#Tftq literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img6.webp b/web-admin/src/assets/images/cover/img6.webp new file mode 100644 index 0000000000000000000000000000000000000000..bf3537af0667785dd9f51851bc83f272d67bf8bf GIT binary patch literal 10898 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 YpsJMVr313*o++Z0S;D(V008iR091e}^8f$< literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img7.webp b/web-admin/src/assets/images/cover/img7.webp new file mode 100644 index 0000000000000000000000000000000000000000..bebbade4da1a71cd9f9c45d14e4e62663cf8a0cf GIT binary patch literal 8694 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img8.webp b/web-admin/src/assets/images/cover/img8.webp new file mode 100644 index 0000000000000000000000000000000000000000..0b38bfca7fbbf479671e78a0b95143532c5b9d51 GIT binary patch literal 9580 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 PKda^^UIT^0gaf&~cSE&1}l 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 IaRA`|0QqZqxBvhE literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/draw/draw1.png b/web-admin/src/assets/images/draw/draw1.png new file mode 100644 index 0000000000000000000000000000000000000000..da5d87a3528ce62da611614d3cf3ed57c8b0288f GIT binary patch literal 11315 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 Q{0ji6DrrHR6s@EF2ReyiTmS$7 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/favicon.ico b/web-admin/src/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..21e7063503b8c6eaaad646f6592ff0372aa0cf88 GIT binary patch literal 4286 zcmeH}S!`5Q7{^ZmX^4%bgOEf`9AQ5&B8oFA?$zA!I!YZ;>n%y{{bj?D_FL0{^85fX7IpmzXuNGUKjz zsqSE+ROd>RXb=$jMCCKi_Y1J^o>{Yy4P-D{>;kHF0vQD^a=K zC3Trya<9cDQT3sGR+kj8y2POE06$o;DK@zOg=nei?L=vA2-lZUFs&RMqsnuD(}d42 zC&ek}97tT+4$(7N5IMFPBF8tw#E+Zd$;mAcJDUl7LoPs{8RUMH&jND53Ubg2Fvx&3 zWPivHz!u&0FStoJG<7Wz)l+9O7X^JU$ z^a_tMg&IAGwT7g;Mx37u(Njt9lem{e#Ws*J{(y0Z0aS zw!$z(J!)PRE_$j;`cjxGw+4AslM zEK$F>zTAjvqQX5iqpl#k1=X6A&}fWG-DXb7yXt)^_Hx+qNEpe_5=Zj1*HFC5NMdfw zMy^Ufs?`?eTlFr~VxFhilES7;RErUy71fTqifoj0)y(sqj?YBDty;#KSL$v6<4$WH z^Dcy)-;IS1ElPxoHU7AF7lCtY2y9?8`()N);2Ps1N*xZ z)nx{;i)oE@7Ovp^J2px|=1(Q>*zd`HbNs@N6sB_{`5Idt#N0OW#N&LKa~pb+Y#r8F zvc9D{WKuSbH}&0$bwxdQAiERQjWvGF3{sDIjO%f36?$ysK~o8lf{rib0Y;{EFAv+| ze0azEaNSHE4o-Vl`Qh^)5#D1U@oGko=f@)Um&TvUxkPh~Y*}F=AK5bPZ~BhuMelvK zN8U2|wLS7SM@_89dp zp?9U$sP{HhN0JSc-Gh5Tw$yLE&iV4wdEX9Yxk%3*f?OgD=DjC|?A2np;7wt8y5>~o z+%xNCNWyD>jjuKRmaIA2V>Iu`#d@RO>IZSTcIifvVXz-vipMW=;uwLsvvChcSK9^{((VC;)X`OeeF~>8$-=uz~hV>V} z$oqF{%SJBf$XJPC+2mz?j^H&M7Mjh@L@TqBZ!u|e78*oron)eR$8w?G+@N@;{3-9W z=9HXc+@TNq&1bpC`SRWp{B~`*`=w6u$N4>rqZf5wa}_z0Vx122W)OrfOI575C@tPo zsLfqyz&Dx*+sI^yO~${Ibw|A?W3Sd5{;tZR-~QEKzn)Fu2X|{rO_W&)>Q(%IVN~$s zV*K=2tN7i1OPmilbwXfzuiBU93?>>2Ntfqz3g2uwDygx@y3@SV-*i6{5C#fYi379y zIa+Qa(Q@-U`1>4@>d|{U_G>T3EocET!ZtIj#TL_WvhI*idky0* z`^-`FVwHS)^4Ra1wLr|n;CtP+lJ^>Y@)cxvW95rh zk=t?!*T&>YS4~l+?r6WEchP6PFcH|5IvIF6m-icX6KLN`;*Iu9vE9;%{drdk+J@PI zyj^#FA1)dX?wLV(_At>|NTMCZOT`XLi4uF->ptu6@qWj8*0*pR$6EIinAkuP-9^jA zK1VtqELu6{Kb$hrxBuC|d7et$_#WwUtQNbipNqY=W4zC~1%QypzE9_w{ruMR2>gE{ z0P`G2=ihz`-ltmJiy9>)b(Abgi;$(Lw6!c*yH+IWX(Gu;l@%RH1tO-xQ8^X9gf#HY I1HxPX0yQi+Qvd(} literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/lock/bg_dark.webp b/web-admin/src/assets/images/lock/bg_dark.webp new file mode 100644 index 0000000000000000000000000000000000000000..1c334354f0145e7ae1d91c8d51022fb8067d0b83 GIT binary patch literal 70592 zcma&MW0)w(vNhbct=+b5+qSja-MekuwvFAkZQHhOe=~F6^WFPn=A2W%;>oI~GAkoi z#EO-rC?P7^f(!_tCL$=WD$kBz@rQi_0+Izt=?l&d!kZ|6X89%e{pGOzJ!7zUFZcbOjDE+;#D|@={rx4<-SGX{8F5m6D)T_D zr}tg9R4`$8=NWHMZHq+h}^Qivmar}MDQ|9wp^qt;a#I{4R~VpXZQE_ zht}5{C#>i`5yPjz)2wHD<9dx zM^3_>x7_GIndF#tf8C`F#5?C6;J$vH*{9CP8n|PvA3SZ8gs0x7U1I*E#B~dGtHZqp z8%f2i{HtSmcN>Ay4b-UF@ppVc>$5TYA=59La`_((WoM@~oVldyH(Xf)R&~b<$z3DP zUHJus+EQV5v?K#9DM)+&Xxb{hF#}Zqtm@1rHlYRTQ9{lvcu*2TxL96Cg}_4#LbGyL zU{sTP(Oq?sJ1i=UMZoN9n^t~YaSg9744{A8ceK*xSgAwz84_ zqZz=W&2BNWH(vDs!uq7JP-9CumThC0-p3r*=6kfCNWE1bM55E@o+QMPjRP8KaxnEa z9p`QwnqHgVnpZEMLQt#OKAbkE9zX--X`wzGZ22EO#cu|G<2yynFNlAoC6UTG3)yMh zWp&S0=xmLddQwjN9uGK}cv&Dd+gwP=D;l+YN489Qz8-6Ybz_$;IaDm$i>8CEqK5J- zlVywVEV#XNa2bzR@IUS8Uz;9vEzwx$?7yTi8j?=C#_>whwn~H;@L=JJ60>`dSW?;H z@7Kc)>mtzo1HpT~JlgRWT@JD?3fL;Bdo}FI4@28-Bk#mS{hG83C~YDY`qzrQ?AQNHh>F4~7JkoSkuQl}9z` z0w7GmewMj94Y!IQf2~y)+b^_rSe&dkCj-Kz9xw(|m;ZOpO^6npY*fL}z13Rc5IZN* zeZ)K(L(;?A-QUbA`~{$G5_Jj93s{)fV%aU5Ln>;iEcv_0a^fEQn^BsNBI@C|2WqZk+a zPb1^HBy)0Vv`b2$OHCNJN2q?RA{+TlV$+v1xmEo*(()d9+@LQ>=v+yy>)1@&(|;Gi z|C+KMCumsF&xQ^ss?4ihIwnYXMz5ri<35=8G#LDyl!9d=aJqfq6WqEZn0e9+X2p2* zF1yXqcQCO!87PUE>0Dl{g-^7U%+CJ?kN^6b zKL8ugiQ2AJx5}k~v#4SKo-yJV=?0K;n3L}JX|Wi)zlrt;05xB9#!jU{y`=bjXqn>s znOr=LM!e6fITcn=DOgcR6yk7piJx+B&(F}b8TqCCN9gY+?1I~{ygfLA7%wwR>vYxd5RZ)1AARahpKzu{a>Je5b~0Z49CJd0ke(GG81A5xzkY< zhQ)F`WDs*1gCE@(ggyf$AmiSk`>15`1=Y=#T4ZvQJKs*iSh#|& z!l8)f@2pXb|1rq^c%br+`r-d#7Kl4IqgVc}nVZ2NOUg=6j-xleXKdE?hN$KD3O`ipSR>55jP2ZKpx;OtCJ=6H3!!0O`t=LV-D4 zxG5$78*%|EO~aZXTl1i2m651sTNHLe9*n&$a_^0Qcx}*FpHGe`QA#FIWQzPa%Yy{q z!J#VRzohNUr^mT*Z_Ure*s^v3TY&IiP#AtKVBr3ejTy%A46Zi)o811txcuE(XH#}2Qd)O8oym_fWN|-%QNJe=pzaK*XEuxSAK35z z#B8au6p0-8vn2mpVdv2){m6usUEJkU%aBKLh7!?t0lg*CIrfOcxzT^Yq5h!5%Kdz; zKfLkgW@wC}i}Ef5COA(6)SVJj!~YEn|3BCvJNUc+&EHLcwr{k<34|73>b)tVlZvtW z)7MHN$n8@c2qyo?8vkn|$^cCSwX2y4Zv}osOkfvcD<6Y_f#fQx8yMNUBQ^9-0!Zg@_W*SGPGA7;zj|i4Y z5mCkFYE0lV%MBX^I4!B-VfGEhk!P8FyXgPSu>%+dA&UM^hQ`w4DG&_y3qt>|z-2GEp z!IsH6k$Tgh#o|Gp;luro>W;*`PqxYk*xY2dS~RlmFk}ulJ|8$MLHOqu!OV8!7tVA4 z(n3XW-cTei`AZxvMLr%%(;Wmhol+xutV&i>D58X){N4b324=Um4#IG`8 zU)4bx)cdEAynq2#g1GGm=|LaCahheM0*JTU-{%!+9SlDu*kMUwXa0O8$jE_Z50TCj z(7M$}fIZKt?m5MPZAx*XAsUF3xoXTGtPK%pf4`JWdn}@^-7^4*88wqrzA>O9ex|WT z+3Wo#<)QSDH5bU*-H(Hls_`(&=`XEf+Y?)Z@1loApV%AP&lMJDlfhFPHI5eTn~1;Z zs1D8lqy!9clFtQsb-d=~vbE1(eNFLYF0)Lx2_nE@D)$#-_HqRoST z$YcETFK?E=286E|HULW9-RUa@a?_1)I?ypIF#6Sq*bD!O2KuLB7OXa8yiPVDuS0Fr z)MM3PwQmtt)r*G5WP;OE^>C!A*o!1C3ZQxtiVFcnkBl1l>eU}F4V67FoA(y!kjd8~ z(e3c9L17Rbom%%LSj|B%bi@{}Ou@g`elgTzkh z_*dAiDt>PULBr6FTfW)|&{GRu<&V&UUzj7b_kr=ItI=tH3+5ZfVar{VVo%dSe+`|b z&3F5HJOU_myHC$jOe^4Jx(+(D#vC4;8D?@|I?t3Vy+;T*Prz6qj61#+Xf3)yEB|Uw}Ap6W6;BgxDd)F#YkDP7Jyv z$t`^%)ZZ8Iz($f}^MB8Cz9C>i!iIfo(13c>!PS(f1m_%a7^;E@FO@xeK#kJvW{dOc z)?==GpaZ?36#R#&-`I2ROhPY)1`bfr)3_RiI6HA2<1O8jp@_}?XaKTD$r-9!F68`| zjVFQWe)b<1gZ6uge+RtE`&X(@$Tb4Z4M(Tw_zC4N_1LG&epB#?|KJI!q_?;HZ2OIU zqz1M7Sf1k3PrUa}1>&tE;{R3sxjWc!nhlXFv|L^UA}dJCE}Dh#2zEymhE5_${w5%a zTkDn2rl`^lsL}?NV*5^5r7pUx(T#X4!RzR{Kf` z%<>?Qrp}C3vVh$82sKI3#7bIw;|-$_Bq;ZE z*m|(225w-|b;|)T@*8lZE}Jo1{^X_*y2H9>C5W{FEl-HOK5$)+F!1A`*f?WXFwD%Q zD_oCQ`W@!6X-0g2WShg^O6viuZ=&H+buX&4f~4uxcbhDkjOVMJaH9jFbpxDV0SiDR28BWRQ2#L(aCr}8U1{-kZ&YRfIyvltzId^L?BF>yMOER$S!jbbFaYJ&)k6)_dmBhV$X36 zt}<9=l)>51e-b7OH~xnc_QwEX`1{Yzpxfs~`8&K57|jL5?QM5CbQdw@7bF^yWN>Cn zg}AR$6b*raL1VILewXx!EOMvk8qVM}rahfk0+M(GtuO-}rEwv#F#v=Q%p0G&p$D~Ng(L+2eMeokmQcz_@;WUwHywOacSiMu4s?gs9!OE%g99C<`PpcI~| znGMT%R76%XS1c?5-PqseT6%&AB%ws`B*}|~biXJtq7%*T?;=~j+fIQfGPPf7U^oL^ z;^Z(B^g3!W)2@NwsiwjIjgWcB9NLnCX#6-0J~A|JT!Go=P7oF)>mx9KfW;q4cms}D zsW}yW_0iO%WYVUtqN_Vd2vaBXDX<^Zvc+44GH`Gdwhf`#-`EpgZ7UNvwf+r|GBcZY zY0{sCsp3^3^Ycc? zm8TgJwY_nwwNpxBx%dldAi8y7*_VR@eofszZL28=T484`7}uWhM+T_^b%DMzKq>~* zdiwRX@IjUnaP!)&C`~AfPNkwCbuRHeIst5(o5uzeWte4%|Eo9s4MW^BAf#w7-PsL7 zHwj&)+EFDc9U?~AcwedM!2+R1;8zhxzKq&Wh^kQZ<3R6MuAeZ(#$6hJr&7^BGR*Zl zww+08Nb*IoN0M^ljh9F9!uI2vB;oA0er^5*W;ChwI}A4H_&dUkaooG1CoUD(T6A?p zpwCAS0=K$W!;LV2wZc#Mt7`&brRtYAhVbNOWu0|8XEp4sa`#QsP;z4KFD|-je&J4( zZ^SN5V}5mLKz(Y^|0$k-YpQJ)&Q5`@))3pQSw1=u2}X!w)PQY|6t-fozOSvel>)KP z1Lw-z@71|t3>N2x==2*?b|d^Ck6)+ECJ}y#h#AP#-7vmoM{e4kMf0O&-TD)Z;IL_?4-vZOJ2DI34?g z$Sr>Jq^;P7c~+;rnJ?JT`?s_jY$+&+Wlt}AYxaK#3T@FG6LuN+d{avk5vSH-ANOUn z3LCL0m{uu}@5c#6NCntj^c#27a`&*je3vpO@U7JEyL!)y&WyS=as@YQl zgMC2C{WyCo94#Gvx6?L&SH0@~!@*60ifm|jZ~-HspP=CS zJB~{nWq!OP#HbYqLJWVSE~tknKDYz&MMwrOwI(YszFPDafP&6b8+CrWQ;7hvy7`i0 zX|x-;+9d@k+igQ1?1R0~*pT^bZrFlwjpYwaUw#cct-jGR`TwM2)zwV#dLZ;6&ndDJ zFEeYp!f&c*q97uUHt%aBOV7Yn^c0_! zZ1A?%of+AQo3@CXOk1J}l^Wv;^}>a}W)HP#@OSB+%~Rc-${BVG8N>Bu?ukc(`l0uq zB_JldZkeVSM`A!Xpx%61(k@Y}oHziC-*{P2d0PPi0Z9EZgMA#13QJI=1NIo|YdUG- z7!%nM+UI=J04L3RWx7v&J^fp{__iPu(i~y9S!(0ws?O1A+?!?Hc(Mdi827_qHRr{4 z$*lmYHwFJl2mVz8OdnGnr`46^)s?66Z9U|Da`DV1>h{-L@@6_Z%zqRSqipGu+9TfC znvT+!>w*6vg7IrWkoe6baI#u_n%oDx9@Zo+O|x9MEkF$CN|z+uDhpDy{?nQ3|EfJ= z`RS+f+Njavh@^lxOg+%Xd2LONopCi#Y{8=KCIJU3^2O4-Yk;yWEXN)L492yqSZbqcu$OG_r$o%J#%|GWv!%)VLuxTGN|BqJ zQ_wC{AjrY!Kqv6ovnDQDUT<+&Ti9iKes&pZd}o%-H!gBlzk4sOr$BX<@SQ);eCiqt z|AFcLU;djWrje>y^V|kcItvy6mGCfVA;82>Oag&*odHQJ{&SC|2s2GfPJDOcsZb_Z ztIu*H0KKAMNm{!{Zc;4VO@0ir8RPa1vAq-%rYWL*+)9TkPB!5O#`mQ_Tf*qE2Rn`o zV)I4zyK7osL2nLCsv>YG4H5sfju6xsz%hih*Y>B$V(pMDF7u zp{H=!{pzP#1e{oL+laoZTU1Sz(k%vK+NrE(^jwA>73*%PinyrKKa~2SFxzCm=HPBc zYjpUYBU60-#4;`O^q?;cxWfhIfbB^1&g3ylQWTZ=YPN7M8xLPSv0$7SoD~k39X?C@ zofcD$q-#kI>n&X$b0{y{{ll#z_@E?Ip1mf8P#&Y9*fa;_+IA0GF6ui!=hLyK9#-kc zt7qbABN!e&^Py?4JlcRhud5OD3Y$MfIJ`-Pp|ED`QLX3Pv{*IK;YhVIO^+qnr8zy0 z!t+(U#oxRTtQ-6%U;!fYM~#WcWcA)#a?XqXTVi#|B^v|h%9g^v)_$n? zqG<SJegY+G?G-ZI~uzX2UejAVw~$kZ5@&rS?BEYV%wJ#tKG%P6WA3TNMw zmppkhq=WJYi+_HU&9K?A4Qq+bg(;`MnJ8YNmu%ph+6GpV(ID-S<#ZtON&FAmZHA2l z(oPj(!9L6ipe&_>Y+$P@@Vxo}Kj$^Of^jQDyu3@lD(uJc;s9d-V)?aN30Yl1^y8_o z(_S=O{IW4m5W-Z|iDnlKhsB>xla8 zjz=oI+6MdUtc^xdj&WH~kIu-h(dJy;Cympk%hy^#IklI+CDjv^Sl+ojW3}76KB-OK5CftTIYTg z#T86Ctcv^)8(g@KVi`i}t_(40@KKTAm|?UkfG_VXQP<=!ZHCpDw<;WpIgTo%ATh@Y z6)CBgMThuK#c2-bUML7H;_s-CS0PS^%glne!A!ww+e08Ofp#_+w~3~#0F{4DEWh)s z9Z~cpk>RE%2MjuGE%vk9qPI&w>e_$GeV^r-%c$Z4t5o0O=895V`iidsHT3sf<%`@r z_)*b?QID9Q#gb6t!&9!%{i6v$22RZzDrU1caBhH|}kBDB$~RaaBN{niOk8!L5Uo{clU-R8aQh!>8vbB-#yf01>yJ*EVp^df8ltWVgs8 zHc`-Y!YT>D+oUrqY8FI|3C0!c7ASd1LlSr`az{Lr)7W~lP7<5Sdz?k$zEL$m znuCy#oE8Q@#b_exKG0p;l{&WN>YZ^x_cG?wD#EoR9lFKdo($U^d^l+7rcuO`2gJW;z;&eyD#V3#}{?DCm~#)(r$H3`6^3g8CAv1z&8PHDyKF}v)r<`Xv(CE zsOF-PuJ<#IN)(bI|FTN8Hh8!U+PetyW99@<5?Y5pWCTd?ALxxoAe`F2&(b>g71rYq zQWt9|+VhA4N)N;+pHLkAgmzAFkKj{h-_vHgLqbsu1|b-F4g;t$W3lY^!CsIzkR?`TXj+qgir$&cP8^m`t z5=%Ea##<#7!5c|IW*Ewvpx!*CmUoo=4W}oTd!Et(O%ODp(7d|p-q&+7zKZekmW^ev z--QK}cED)T@l65i!l$NMmIWbv$mBo}bQ(DUCN^SocMtQ1<@9XrOiQ3_!`%pGnG(b? zs6}3PIA{C;))9_#Pl*2bNA$xP?t#fbl)Qym19OWp7^MhBd&l!>s4);#C--{7-)MAY z+{qY)+oJ?(xO*xaY&vveOyBv7wb!vplJ}KTsE#c!XG@B6m`7a=tBPX`AEyj*vo=4~ z)+0Sc%mn<*N5_h2(-8KDkkR^>UR^w@3uV0+WZrUS6E)D-a!ZJy{anV{FrgT&Nz%vL zmxfm3O!)W6FQ5)%1l&?qM=Nt&LI6`$OAXLUiwr$HUlb_~K1EjX0XKgwva7G`{otVJ z!1lhsumxaPo1tB+r7yhZ=3p8;gi*!6PnpZ2udCL)xoc-($dyv|gUib7Jk5#aV~VN|=EL1O3!)&Gf|nLT!EH z9s}T@Yl1^zqOHpX;o^|QUk_mBrTFK&fy27&Po>n_-+%>By@`^P*So9i+we)EvH|!~ z`A$iM?2DgMclt>Hg+E6xvN?LZoMVLA3^B#Svq2&C01-Wbce;^YKJMY${qGe5b@ic= zDG)fZG`N(XPoRG#skz{=yG+rJh* z-Y;Q@86;Ol`!GR_lS~jOoEJqN#kBxIfIJCR%%4jyei}EIGaG^a zc7pJXHdRJnH$80v6#6k(r8_eza}E-($a*eQei{NO5du-yKK{g>)?x1~??x4vcWK^VbKhw)9!eQbD;qa6*k9R0{UX*|p&th>wFE5aRLn@=%?*wKPA(uw9Dw+JsJ zPeab5>98)Xy@~CJU8k8Phq-2q5Q(P9a(?gDopAMrsC!`BH=v&FL0uTOTl6;L0{XPv zTy>s64KnRviFf2iPf>w(Y|V@ns}%vTq+^Dw2nv~MGKlffn5I7iIMbPUs40p0gFf~z zjtAP`0zwNlE;0Xj=$?l@Ann{vkSGTvG&ftq?Qj^1SdkLYZ+Hd+}>Bl>pbeFq|aG~M!^ z!%{a@n;?H@p6T^wA>48U^ejVKof;tK?(MHc_guB4Bi>~nh5%UZD{rBs=U7S`^@4l) zfUMB!6f681+f)C$tvjuvzle@YXt}FG%;gF1f;r5&YmYezn|@AL$uMQ}lwKYey$j?x zJQv!mt@#k3LMA5S+S^aCkJl34G`)&HafEFoUwPa4bSJHz40XE;CFMbC2(UDoPUoof zHuk6Hp?L*C@GwW{m$a4`f66@HLX|+$ZXUm%NI)XvQWWDJmty6;d|E;u_Loc^SJ+>YnHKk8JpcmZ}Joo!o&KJ@c~X_NhKF8r zD6v544cA#qD-S^;1mx|2t{dG)1uJ9aiWdNMuEB*AL-!TY?GTPk7s0ya4t*oAX62<- z4mzybAT`m9|AoG~msRvO!ev?j_wLZfQ^RLw=O^?T8DOe=N^DM2BN2%nfv!*#w9cF3 znSQV7l54{_?=5UN<(iU56{I;~K|VV`!3$mVdd0lw$10bavN>~3BEA+;k1Ud?uPcCL z{b|ncVTm4V_v1vl-=!x1^N>?8sS3;?8zb9JAY^8yujHXrb$`JB(G$ZypZ0+>|9L5N zwlg0)le{hQ+65s5lMR|&@kNmOG0b4p>S;8dDI>ZeBaq^C+Dd{1!}o_~S>|ABx0Sy! zA1DCK;XH7;*=|)b2uwUBS`(-uxOU*j)vh^=aygBd)XonVkBm7aw+vCg%9r zZJRtHqODKuDY9^sNZPb623AqlKbSAoq&VxLLN#yCry9J3Q2k=M_v>FCDkU4 z2$NMFl$fUg__@&Wc>D0NbLF_DYp8N1&(>dNCf7(Zp>I+qkQV^fTj!< ze&_kvur5jS&O}Q}risHS5R!@$_ zQYu)LQ>BMv0wM`~5qo+oZ;#*`bKz$MOINdOE_^?%F&iM6q(7jz1#FeOyxLo{ zp)sk5vl(Hf)0MO#f6L~rK%8kdtXljOI)(pSmQ;!W8QMw&3MhFqT}19h)FUYQds;W1 zmB_kbltZCwk$mtqbilHJpFNx>K+Oq$B-)1dxZ;2%{9b<0oKY22Y*j2MJp9(@PLjQh zQs~jT)X4s1MgnDjOP^_ueQpt1rDz6CP0{o60ic4;5W2%+=GMI^fJt*vG27I)M<9EM z5|&(KhP}!I8>%aU-{x*2p5X)Shn=Io$kL7&&J3lLXJ1ZxGRPdsPy9bI2ebtOO59PX zw^|R6GvOo7h!NP;g5^%L9>U7z$ymqG27P2)HO@$fRMZHDQkRa(U}G`?bllpK*>e%{M@+V69PfoIPrr$9q&k&cEH|I{MZ97)o%f+1a4H(&f@x(MY+x^I%kd@g(!=-4nD zhLTWu*guX=A91nX&?-CsRzP3Cu<7%Pnl~QpzxOyr>hZSf0;-?!Dv@f{@8e8xgSekm z+zIGWw=Sj-rr^wizLhShY04Z->yJ2#rg+6Ni=gC$gXjYYt5HR6Q}pI%Y}T3uhz#)E zFd9C!>K(oY>1r$8<&OKfTO<;~uG@^v6#yGDO*)%R``w=oj^G{1$A z625t6i?#8F@>BJ7?doUB4?!;Fl> zxn14h#yk3KDXn@pa0(e_=V7ylVSta5fF#H6c4B5`CGlwO@P|o@Y)EB?GVY{QU*nNX zsLw8v|NMfE%0IYQ?QdVZ5=1!gxq4)Y@!H9|cv1NH&*P&OAz zEAH&-KxP%1!M8+(d?nEXy5Hju=p|2jO^XNi&k?CM4mI=)D#qXyZP0Q+i(xH1g}Ey^ z=i`RxQXh&28Xul2(^2vJwD{F{cKnr8Ss2qJ zvnOGjspWkkh5Hxtz3sv{>?aKX_>qrYs3o?nl4##CRRA!;6!NfsXsM4W%0u4k%tSvo)|6U)rwaO<+y9r>mGD*h*VT1@IiKg$}YG}?g> zDx?cyM^v~WJC*z>>z^)*RMNz+dN@>pvNy>|y##{s5UOskk59qv!xXA+G_hhQ#|f@Y zyR3c|wH_V~>FZUtoqS(SFzaYc;}kVUV-eLp%3fQ%tSm@%ji)c8(jOQ1f@F(FN~^+y z@e?{>#CNFjEY?o--t%HveC==EWxs;}q1@XPi?9jW%nG1D(7B@he%tS#1D{_Oi9H#< zn%4pDdm(lRrVw(z4g)j`^Un%9O;y8c+r5gdmGQP<_!{r4HPU^|6qh%_W5-{d(Oojp z{N^9MdY`nql>LH}d`z6nM74tflfMvtP_?0~|-d<2ei){H&MTK$?Ps-GofyV*UFG30We7^g>avF`p$fWm! zAtp}ripYd7jL-zC^wEw}-`1ja)={aoJb`z2h1${^2w(}pvY<)|EOw?Dz=^y-K2mZ97$syuNwr!wU@`J&AXzD@ZW4%yIIdhFvm8lt-fK>)6%@Y+2Io zUXPdcGBeq_r>zMmcFdzPbKrX$W3i|8(#ks_blr>p zh>J!re|JpTAAjq0q!J=YLWPA<9Lxli+il&P^6+1abkv9Y52mmKDpoL}M9kFMNg4eN z(5cRn^QH&_3R5+_d9g~Btn;d`UWtzT#$`-_%xD`x+LqXFYzqmlyU^Vp#rReTH&7swyBEbSW{av@%%HP?VYHIft#Wmo28Bn>XydcIX@YY9!=`r|nev!s<=NcvyLE31nOuqbOLLHDqQR*7uBka z{aY90{q|B3V;j<;gTnX;vbt0ZH4bZw4wZ*e|Hjn zN@%hWERg#;+N@m4l}Wu+JKm3enmx$RV$G0Kh3OvHw8QA?fTwafZ7+mj5F58Vopt!V z?MQ*JM=4L0@A>J*69g5A8@b~vfyE}cQunB55izl)PCIr~MQBaw(ryLaUBwe@K#{AF z*@Bexo)qW+bs=Xhe6!lBYD6$nw_!AMYkUs>7jCazQ#HTvM9Pa$W4dSN?v`NMq{b3& zqXhp!U?lB+)G8$oc*6@mV zz1{I#8p<;^LM`Z$GJBJ38+zxil`S4qZuo}J#?F!)v8>q>aOguClAEoMi9D{-3PZv(vheifJ%F5+M{QvSTqXpBCm{mTMsj4 zKz20Qa2)#EX{@b)lgzQmq`h7uyZzh_p^JJ%K-?F}!Ogp+Ay zC3Ot`gc<;dC5+z&8~f*v76HC!+~Wv+BP#?6JA%P-c~AVkuVlTS5Pj)3HBi9IqQ*Xo zw4qyWV9ri#N`OrkC>IJe`TC(qkEgS{{1dP>^w=%uEwMTgLRrRk<c5u-LKM;B zLFyuV1O%z5m~QAj7;N`ql#50JsESMlSL``?gKn$X327$bU2XXeSd~9UfFU%uqOGH| zc!r8>n)g$lUYhfsLPtgsA)24?xR8EB#m5~d;V|)Kb`8SW?HTyp6Y(upPacAP_WIof zq_6{vli0VDZ-uEMFq0Q+vttVpVTNk}25Z}a zlw0`t!#-FDaqI-b_zf+|X+YUx%+q%*TK1v-qLAq=y3*FwbrVyi*dzcsEO|wy(AG2b zPESUkA8i2$tN)=l(NeQUWW~CQ6-$B%OLLQ`jgE@|>H}7w%ERToV9iNQ2wqlQlj7n| zZ$7!|Kc6iQOS^s(pdVf7>chsKrc#L71THX$nvGJDg=^$9LQ~^Tw7tAYqR(X*O%Hya zt!K*ZVbM%vese7j*5U*pNBg!&oL1i3(YhAa(5{@|$rYKkSuI!?mQg6Cs*i$hdr91Q zK(Y6!P|{RU1D~EMw-MHu=r^d;KcBl^aCaA+jvUeuhj)y%9e5wQa>1ysZr3?U^jMS| z(lTtukpAWg)xM|I^Zb*xg_OgU-*J0B3Ps!ov?1cd;1|?$8F#iW(~e-&0Grr5&F4Z% zS{xlRiM8t^*bL#QWcyg86RQkTm3i?Rb?AgiPpliT1U>D`{L!%BGv<&!>I$gRb9~Iu zv477afgjm>eCw#dcqU-s3*-2g8EQf;n#K5(bfOO)B5ki4ZiVQj0(~M9KIZdxgkX5` zPmrn#c{=363gxHExL}IVzrX}wH*pVZ@$JNXc^?aYV@^-oMbxL(9Eyjg7CG)_MedMh z%y~xsbv}snvj!wZ(`HBU)$8Wvo1W{~?PoHN@(;CHaHYm*Cd5Hu>@wdk<&wi1OX5rp zK0RotYin=Z^#B2N)(QE*>>k|YR^*df|GIbYtjjc|>%MdHx;zd#8+whm>9NH2!CxZO z0w^tZ6Z|X8GQtZivSoa))&u;Tz3cw#TThDp(MUdCHN0H#&%s})U^696k6)j^s z->LeG<(+)x@3;03l&&QBYeQUsBS7gBSI&ba)A~s%)`Yzm&ERBH5KYGWsUl_U2D|}i zGLY=qaZxST0cG03h!9*P3Np4Tog8+rj=|?M8YewEW>@jc$FkrdMD5E=C$ol{yVW*2ZVo4;Wkc+wU z%9AxwBh!Wtl4p3g5J}*$Q|4P!j%imQ>r9(e1842T6X3w^bq?N1+O^n=SL0pU*2mP0 zx7nocpgG@VdmLK2ZSP=`}^L1+*Wpr3mNZ0fBp_k_+QPv&*AWqYlE z0tf}XxK?W&RKRRkAnbKl*C$-O(}gsc(W%kir@2C651mlBY>+PIHY`_lYb4`cBG0n} z82~+2N-=CFsHjeyFMubVL5ztn(IXA-wVtM+sLQyxnOqs`e@((}1Kg-9W6cZ5QZ6W4 zi#)O$KrKt%!N{6guI*qzWr(=F8*|EGhglEuq9UAbXEJttXA}Z@j-24nn!BEU?tZRI z$}o;Sf=PCCG&pu&NCzL7d;hjkpbA3N2ZO9F!!YWl?OgS_{l?zD!}cMi6<;8EFLIP5 zFadf09$Au^6h7D>t~;(dDQOX5?ku4@n-PyKk>zD9D#cYzQqYah&-PDL0y}^}y&%|| z?pn)!LLy_Lk=|ldzp%&RSI86NPG)k*!WAP2hi3bC|DWR7fBPX3sii>D%Xa!8kR=X6;0FoY_D~3 zYW^b}sXsB~kOmBSido0>0rmevRF;|CD$DTLlq8YAj4BMl}34|oSQChR) zG+2JBk1=(A!USJ*9wi*I&7MwpZ!>`|o9=4%yasm7xjiZU<9z$N_=a$XvxR!(fwyo6HbMQULSL4>Rv4ms^GtO02rH z5TXBb(?bmkZ_&GK`qt+;hpUxLf=FCe(f)C@@T&9jMYlWUVTZHXO9g;(71{G*S8 z&;mFg6H(HJBO$=7+uqdV1oI5=y^*UeD;{0Mr02`2mp}p;wE@anfc%LE9Q2j|b1SIQ z)v^op#It7zir#m>_ffFA3z)Pj-Nfam2#P@AnI0uyf;*x^FJtU;O%K>bZA|q~%-KmU1=pS6l>o$7;_~N3%7q7??f7r(`2>=7OT9!5{~j z9-D|D+VnMzdfO%$2*rJCG#be(rA@oJeD81lnC@W<^u;8TWb({(6IxO~S)MZAX<_3B z2JSo4&7^ZeYtDfzliPq#a<6%j|TX?KzY!n2*l^6W!!qS7r;%%|HmK1`YaA4%63Bnq!A z*S2k2XKmZIZQHhW*0yciwrv~l-0%ILN=+u+>8hk_1}h@!&8L6j*Nkif*U`YT?qPs{ zK;`>wO8T`%!4YNjEfUMXN_kniWe436v2Q}}sPTLYcXVj=b5oDP_9khGa@d`-G&y(n zu4fzbEw(^dUkFNLw?Wm3VtE&uL=f2r>qBKsaZLGp>kgk(oDtvCpCd*uKMpHEv5Sl&>9mN+U*`B9 zLja`$Q}MDmX-l)V7{*cF6HyxUIR40iBrLk0jgFBYxfV#D)}A?6ylE)peK!$ZaL4clD~B5ZZSm!C5+I#d0$P@gWCdCoFtZ(*03V9oI}43r~Ayucr8G z$&OIhw1q1o57pnCuHA~PHQ7>GelEe&il_8>v5Gf^_{Cx*oJDK30@recREdm`-{VFZ z92xg-k`0M%)@BIk9zb#UkY5g*IT=I~JiM~3r6~-Ep5c`@EWpy&Aq>6bs+52NGu9o6 zJB+yg%$?YxHC*}~vkZ1!D}9#Im&s&)hg5T#os_zA9F&Yyjtylfns?$b1<~0jvbMB+ zw9PV?DEOKy(qtxMegA9yBO{5YVzd`>AZBk+CZ0#(;vloN4$kt&<7lQ;it{vn3d z?a!Iu5@+b=-zorWQ=6VKobV50k8^RAToh)}PIQ6R2W=cu^J^U`yY$hxl0u#`=Re034ZDTqOT2LjyCC8%(o0Qpcis*b0TL@vFSG#`n78i;+K6bum@u~zylym&A z-LTRc>RuLVHcj}$fMjGSfMe$wSpDE+Nb`=iqw#0*iJXB&9(0XJMF^iqdW>O)+SOiZ zoA!T$4S5@-fK&2;06QT`z7fu$P13C4B?!yTqoMlU zLP=G%W~>UYAU7CY0DT_j!rSewhgr_N zZI-zC5UqwEnJ5Tlp?hko{FI~!`5jF`!#Xi%MrF#$`vlfu!VboC_B#7cIKfSo1v~Wl z;hCokaI3n*NdszFuMUTY7T8QeUTtmhh8|$k=p4cEgb*F6w%v3FBJs0uvNl&qlXs8e z8zNLD$!PMb&O2PyPb0xf$;_T4G}r8PD4Sn6^|htCu-40GF`hv*XfJJct8mG@sYw~13WPqRK`7Kjq88YJMtn{S4y)(+C*(s_oOdXW;c%7Ph-89?*1hV3}(EhV}rg>cFXHzhU| zFlAg^@UZMd#-#f)J%*_x^=2uhg@@78Eygz%NnKO7DzLhdQeDGGTz7(d19wWYuKWqo8h!mUIZ& zo8|L#uM6U*r=REPmMo6<3w-qWYg_~06Pn~D`G=`&di4L(6@9tC{49(p%s_oWbKN1x z1!Mb!16#ZRQg&NQsWg{__mmQsZ8)-8YRc$>+)u(v&^O#DpCP4wcU&YQ7*giUv2wx_ z2HkBJjJiR9dd@GjKR!>sYskrVuM%=w$f;X->npjhB7imGt}T+i!qWjD`|6>>wXA>x z2n4CvXJ@f8hX6$8=(ziowO$tle6e(t{N_9kDhqnP#yW2VB$-y|fAjj4`uG~|v$3w6 zkXbVCELc$55p!f)$g#+TzBWYz1J-$1h5(;$f);zr`gZv`BK@fVo3I&iP{`@Ly2K(i9MOcbQjA#d;hYt7iS)7Ok z@0Ol!b$wi!*}d&k5o1+(gU6^HBP>rMXZVr2N^pmEr;h+(OG54sr2y;H8uZI^#)Oqb zl35U{ha!XpP+CW%vl>2MEQBV-Iflt@%VnjVx~6F0Wy9ER2G=PqpMh7Xq>e170O?So zcAybR#5RnBSa4x zy#wB@ct9^0Of_4gw<1Hpg9tyf$?*4Gr{Mnk2Wn66LsQdia^&gTEV=|N)l*}Z9{!xG zw@@-QH>pnZx%oN?`J!rq*fCa8w{vQ^Vx>Na^~*q}7y|JuWL;!nN*a zlHZRZi-gXMKW_?Rm*9RhoP{HxK%j3);oPjDVL`$tUj$m%>1H&=Er}c~*6jfIP3h~A zz70#AiY&MOMxyoZID|H0M9$4X%g}kq#$jOJEhf*>sSO;S=j|sM!Q7T`T=i_G3~Gyp5vbBo*$oBwjw$r^Zkn zJ0km;-&~7kWlA%l+Rd6NC+$hj__+4vcL5Tj&5_S{baZNsU84`Kxw-5CM_v7`5TOj` z0JK`bf^Gt}()j2;G`w%&b>UXD#n9Dp0OsO1T6=wky>k#J_H@1z{>E}7NbaW6vlb7- zsO9X?e-r_^`%r=MVn-!fmqpn1du~z444%od1U$r!&g$uyHPcbbt8s~_0$vSOZM#m9 z?0r_#*cV$y>BMq=5;?=6ipf;-1Kvzmk0f{BZ_r;apQ^g!2Mx#$gt&O|=n8t#CNe?s zhN|rzGnjPDSvrj!LYnZ30!lmEKDEJ-fS%)V6&tva-d%+O4X}OP{J8Dg zpi`T2c34QDE6{BLD4%_rer&)M-kbUS4D9LHAai2dwEXAm(!EU(r10N9+zq?};SPa^ z>`c<74V5lrxrXFGzK#m{tBV6eLx^)KiAts6bRwI3558X3B=c97BFAqwU*XDIBwO@A zf};t6=!=NYVt6LMWitI7wUeR|BG_ToV!Kol87y`+a?%&)`6u5F1{#Cr6ArC70pxH6 zwGpL-mUGN*zE3%1**rI+Bz!27>pflklTpY)rM;7UU{cxCHZ zaRuMrk2S^PD%N_*C{1>O7SHoOD|G zj)Cwq(&q6dY`Xo>Uoq~NQ%Kn1{DH#Tsx{2lc%7Hu&zW{&@*Jblv?SkM2dtoKHSeQi z?7=spdSX{${wNW})h=fLets*SLb{_7IRqkXjE_k}-jBjxQcifUP;92}7dh4GiQF0% z4(M{Zs7!MQ3*sRd6u=@-_Y0&2?7TRiYI$sLgpE@(Qs|^BKU1;8ep6M8q&WHO&cn)=)%(FGZ;S$&sAOX# zui%lBC9DP>mdBncduvTAf?~hBR5z$M`LFUZ@7(~X+D(q1*2&PvepXGwUBu;Ry*$8MnR@cDTy*_)$Sf?-}7jRH*pnpo%#!UUK zc%#8dikMIkY?)Y+4Tlr4 z^yHtN5j80a-VXu>&UR688a|K@bl!GCm3>`^(N$6~vJEyx25+(PrIR*5{!S#`(_p>9 zU(FFAk=U$iI2B2(F6)R+Eea`O?Aps5Vj>575R@9JdtAj@lWGl7qn?7G)le}o+86Cl zEOojYxTt|#vj%l%?0vG2b^uKPgA;TJTjC9y&L}&}$g^k;v*htrTrXT27w?`o8OUv= z6gkM*=A7}peOW}=GlT}pc*y+Nm&ifYd+K@=fgeJ-aY?Hli<4Ki_yT{<1FzRkQbV1l zoFv0tF%;Dd_=UCS*l!q6(*aYI?>Dt4EyUY;ZZxyhaET&(#b+wrBB2ez<2`Ncxl{6DU9+!nTF7bu&zk+(1>FGCWVe2Y4UHm>=`+xDnS zy24)huRF=M_>2?_)Ou+-RQ_u%q2NV)eb2d`B&2y!|coVXdTTKERqOH*vy_@OdP)q*7)dD+(Z1S)mPz}>1UJv+S+a+-xJ*^ z2pxz<7~VbhjH>__X1ee!bkR;te}ZX(dc|Hz6=aNaGS0#Z=`6`2-v){&FP72+;v2A> zBJqH})?!!GX)tiYyQ}xSj)vtQ46aGlx~Kq{2KOM_r;@<31s*Sx|Xk*MuDw%Mm7TB%8 zT>uq9o6KImN;L!)t5JF=VDz|7)W5$S4`tck9Z8~8L}s^*6)kFEGVtT#GXb|yU*KSn zjA@zf0FgzfWTg+Z0|8|0vm#_521G=BemSXzW6nVD?nngVL`fl&(2ts~7t+>o4&?*& zKL(qE5fT0x;=PZO>2+cd^*(#7l;dkqM}@RjjFp8m*@Q z8dNrV^CBf9yp-n^BY$KsP4qHpP=7u*HcrZ-HrmiJLp_eap7y>OF0<=``I)T-5fxF`bzO9Ch`N2WQfY;Dmio zGG8S5R*_A#-*;+mR&Vu-6s9_Q!=e6X|f zmtU+)T*|1c9Alb(>dOE@P+{4X#=_h@#=Zq&73PBw5L-`a;t*#3KjufqY9BC)akTrs z7gS{!gcLy!0h4m>FPy|pmCQ_CRL=#z;R3o(0kSY$EPw`=yzAW4B>;=7#{gQlGaY5V zUaESVxaBty>v+WXzrhu}goi%adFrQc;N0 zw6`j7$O=Fbtn5!^0y@il6I(dH+X%0}w!q+D}=7G7+Tj@!mx+TdW$NZUey*U1SRIAWO~6~I-|s5W7jhSpq=Y|eKkP?OF)CL6 z(s#@ez|n)Gw2iGOI;s20@p_QoG#z@oe^s$Hm~lh%GN(t?*u9u$VArHbS&b&XjM050 zyAS{ioPQs?*m}H_p_i)D9TzOnJ?1A|SMc=dqJe_{!{~WgJ|DAW_IO#8FAx=2M(<2!CdpUx<)V z=3n4IH8VwqRHZZVv?mUVgd;N@5BJ%z_xqeyV4)Q_IN-<2TrG#VFhwGl*1m|oo}-h8 zwka!Df$TwSxYVDefHfK>za{g59V(pZto`}cIhP2Wf68LGSbI6&-r|Q?xw?ke z{R9K#n<~?OC;_4NK2OqMXEFSne34Y0a8PM{?Rmt$G|l4bHj4&;A`3g3Qs3Ihj6kHfX6(ksP_LL z2Zzr4L;1~K=!#cm)Vl71213C6Gzm+dB({9$I;`>OmK~fp8rIY-yq}7j48ph{C-+jr~lM;Y! z2)el$6Cc?hezF@u=1Q_~cp2v1AJi!?FOyz<7^^o=Lw1HsGqBd762s4{QtX`s!M&Ci znjC(S>KRA9&Zc}dK>O6|5W|yvsA<*Y4Gock>5;94 z3W*;quW3(H4}C#fqnzWU>vMXnRy$*OgBW(ZBs^F(uKjhO{Yq2)ukWuX#Q7^_2#Z*? zeH2y|jysBdBTv}%?wPCQ3^9;k{?DsCjDMp%O-rsD`6L;?a#bd$%H>~uBiH+v0ie5X z|FwbZ!rxBak_BMoB`YP<>0P3TcPw$=UiNx7spApNarh91Sc>j>tfSKxa_5CHe~4xB zU^ui3;x=X%r8{L|Gej@zIC!bQjx$1Rc)djT59dnO?KWm8y*PkH;K)%r0`Ge?leWI`6f7ivPE8vn`{{rwRcBJ@)W7nWn>Vmsjv~b$}3< zEkT(**)5+^$|2#CE3lig6?@_>^rusA zAiNgs+QCQO<kQ_zi7usj0v((8ts-t z)94&4sU}K5HI)}VURx=TI@njWaU%P&Fzku;V;tx*wEmGNRN=RWs=8RtlLE)yYq1@r zc={unSk&)+^i!@6rB(c4iD!fWQJ`m;bVuciLgN|4v-L+!k_*;WH}r=q4^0dowB!d3o&H5FM0H zio~EuH@l}n;=Q&X9&PSSXM0UW^7sCVwEsp&`;n0)W@xiu>Ugl!iTpPNpj*~H4frm+ zSx&PwDdUSnQ?K3i!$I69Sw5JK+#{*tKF1}U?d}x4JwoIi#S3gSiVU3vIE6RsyHh9e)Jp-$d}x#`1KbrxnV%^gV%vF#<0AazRAk;_aDK`DU8IQ5D& z0{P~Uu6CpoP#97laTmdhE?L+*@$RyEbfH%$p1~3#s&PYZeOYMTq!xH)joA|KIsa6K zE9V&JL?xOWa%PJDmmZomrV}yy5qYo`m>qC+7>UR4n^uA8pEI}rNAm~QQekQz80H>Lj71To5_(wC6vL9UW%#l`YrMwb?;k8Owb0XvGP=5BEy}Zt?#oF5S3%Yx z2xR$hel8!X^Ymel*BkvmowEfKA+2~VjP~98T5Z`Qs}wGN!-0;xQy&16@}*F}0`L)S zn`eMPrO|ggZgQCv(m4kehksOH!`TmlD8I%TPsU#(IpSaSkFj-eXk(6i%l>4cV>MI_ z%^jl^r4{Z~&BkODAAGU}-F{R#c7uY;gq>Mam@#@cf@c5&)dbbb%)H=fNLJm}Zz&YVSJT5(!3)cu+GLQ7TRYYYy5V@ZR&r<*9mQ z;mRa-DC-&td`6#W!Ij+rn@`6aPK^`J&H5TIv|dSFU%fEg=Dcjm)k>HT9%BPyG2_{ zIh{pre~UGsWkj7xD9+O0iad2+h~muX&y_#zdb;BO;aT5cYryx}^8&@X_sGIUDy3W3~sde9>`zX2iwOR5D`xwMGxy@vr!i zxzB-1@!QldzS)evq&UrlF^YHQiDUe-1d1+Fg#`h1ggO6Xy=lQmIpwiEn&&g6qzE`~ zZL0(*VDTFy2l|H^LH1@kp_f;Kowt5vreuSRYD*Q^>B-(9T}KhtV77-+)}M*dU!D5L zhVs>!#7kHpD@pM%XHf5Mk12oC5>GxsSjhX&`>c+O^~oa|u4O(n`0t|@MV{egly6Eb zD?}Lse_4wTPWV`WR6U7})K}p!gxL^uF$dei1NuDcf)>yE>rB8kRN8Wt=%r;c{{9ZU zen5Km;qLf%<(GrUMJw>N?`*d%T^ni^ple5HaC)JY0fC7gDSZc2i_G+SB3o7PY`~H_U{qSDiuA2&PxvWaCzAonv>0 z>aCs`^UP-uQTUd$@%#;O=K)TM_v6>vDJkMX9totQTgUiC z&(JkQ8_rN%R$C(wT!O9;Mmz=*AC*|d)CLcO-e1c*a9wXS(=UI@uW@w6uM%NFQ-gs8 z5m(qqbb03wM4I8MB9CZe9iCtc%e)T@WdWv$B)4^#tD^>KM&P^k*1E6CTkn(=t)rmB zy<>x_Le$1*Hbm1scEaHpZ!~A=)R~BszXq!y*o*~#F=>+Ide&Ll5#?5}EGj{Ow7Bss zaJ|jF5cvpu(bD(w%1K^_EaCK|?d?mD-hylq%z%EhrdlH%FYZCB&nUiJMq5k+1=`HNFfrd@+ZJ<|0@ddIBwq z#~woFPETvbJr|Paq)LIGku5lXm~)S;LNbCq6$*QC89@~ddk?pQXJxeC9yNxf>uRtHU3LI ztF{S#wG*_)AB*AU3gP|>y4dCEQ8D*xcQ{lcI-^DHPDHV&vs-!2m(3qAa;75-3okMy z&B_1ji$TX~i@KGom$+%A`iGmnE=HLJXYnN$opFgy6pVS_e`<7!d`uiDydn;%HaUPg;HPQO_ag5GleygK)=CIzln2tQitaEDC#4yj(f!18J!cVJ}hq36X z-+}l#TQA=ei`RJH0R2U13Uf{Bga6hksK88982_6Pa zA9;yl>>4-s#K7jj;oj1r1CwpfU5+D_^J;pAx;KQF0W`SZgnQS#`}?Yxf}8I!J|~d~ zahm90XkSt~Z6rZIF?#$GtO4n_prV8TsI=v*zK(>!9|-kQtlRYFx8WMbsl#l@UGGyA z-ARKXoP~Ifmm%DaO(jK)*A}We(0Y_$FYUun^lUfqB|quiyS{b=aN-srIh-e~6L_t8 ziHL$DA>Z+IEjTV#no1i!5nHxPxM}XAk|uvg#R_t7!QhWF1LWy&Ev#?Nadw)nPfLZF zU{~JyNfnr6{x}Ntg~-?@e?ZSIDxaWw1VABaDG^Fg=S~O{**u>?uMRgKE-2mP>rM(VEnt`> z1E-m>uGCj#8-@afz)M1)NkW$9*Z?K2=E;vxN;J`v7P|FDxh{H21Hc&w4;kJ^A7`(-f28L-2GV1cLQvlMDL#5vHoM(u^C z!jru~h7E^lOM!ZdqPALjlgD&oY}@(#*-iYn4>|}~`1bT7&ICeQ*Qr&)z8t+}T^RHH zL&UdWr1QN9XMcj7?yUYaI$&$evEfA-H{r%dLrSYdodKG0Ddp>R(L9aGX=wVD^2Im3 zwZR={CK^VKT!8^I(lH_9SmRdde*v`kZeP)(l(AaV^hetdRCk^Lq2tQ^@u`EkM%92E zLm8+TCwQ~62hBRug9d__p=GoOf8w%R4vWqBZ+L)Cl7@c zD2rw}_@S}fUP8-ruKawKQ?1}Y((T66R`&TcNw2t2o0zKk0^`H&qKk?J^Bfwp7bkW% zG!bNVCUqWaq#`Fy#!|5``8iL#8;NiE3$v+T2SwOj|DDZ@Bkg?wYaI*$*ja+Um)j3H z$s)C;g%ustnhV4fwYj^%^CGy+#$Pbd7E*`??{_z6;I8od;C+|iiE@E5@66RoV)TMl zm1^#e(OshRQ-yO}Hb&9=hLzRAIIM&rGV#SDRIH4*y+{jqi~JVc3><&|tqNmMb6b7= zXwGyLJrq#>Vw?BIwab_SYiA98Mrc}{03wJAVTj*OmsscjKU_fFMd99aB7}o)s2C%z z?<1+9-}j9YGH2fae-C0l{|8~`7*Fn z9aZ_>q=}dJd$~e~TAb3Xw;-dK1}+gHw<}xe!Ssm7A3o7k{C+}VG=)RY=itSP;vYdO z5y?`3MLG3IbK@8|aNhtqFDS4oLSWLIE(Zf*oj)xOco!YBu^;o|=<~@hBK9Iea1`o8 zR@CND{J@{qClGOk53?o$Jer35po7}IxqAi3c_T>Bj0yy93qxUH!PpVoU zjC;57(9WHdsZ!5uqYQ zqgeWyRh%|#sYS3-PcUADNhb>5DF8=en|lDaz^E{uEmvG&FF$9$!)^{ifNDSez?3F-~Rqk-!Ms7_H1 zh-mB}SIZ3gD|4WuHATY#z~iiaA+=!Bw(}jFYw1AvdTI8EOP%SJQh*dSRjHfOAZkF* z0~^V?jmCwBhx-U1>1x9)zA>ew9o@SiAao^EUAe|*%NY`01-ZotonwG)+(gdm2js2A z)=4Kmi4zLHFweWlH7Ie@G_$fQ8b>E4Td0)Xy#4hI#2MnKbg5)8x~se%l2d*`O3_^{ zT!bZ3W=phGj2U9@_RtoXwcWnux5*j6LUx|9_9VGvalhC8Lo@WiAa(Ptmkno!=jSY= zZ#mM75kkn&;vrH%CwE+M_*5{l=lK}<6Si^2mK<7xBgiU)7<`;~${%77wCM~p0O3?>@PKA(oT_I@94DTRtFVxR9tAwX2wb0T_32QSfOiEDCO=!O)f(%rq|cViIVqwj>v zEu(k94!Kf_=}fqj+Z&Tf%sNrB{EJ|MB5DKM&UUw4o#YV@<&$KfhjsIBNGrA&)k93zEcHRqzSnAMGLzt3QAw(G?ht?tobS5#yiU zAI=y8iMIi48%{So6)Pj64gASVLJJAsU?YdN_KQ=GHOvML$OxXvbMvnH4Rgqmh!;j z+_Aon!3D#6EeUS?tZtMMaJKxx&{`~h8dk~TlXu%`K(!m+$qHhSjt@(gr@wz*<{$kJ;uZ$BzRc1ae-gvTP64t4jw>-0Njm=s*Z7Nz=G)m_7+( z3T;x<6Hh02zET?6ECkod!k}0AXT<62Iw7_1;^Xz~54khTK6d*-6Df%n^2c?;1&|4#?mZY3Fot4v^4Js^;5I56yt0F@LtWdFF~S@a9esM}n5 zy0~ZIF8{xFLb#k}lSg4jyIe#1MLgn}PKgrVHGg%FY$#8 z2{Z`;STJ})aJO%*LNxk=oJ8J+<6g#dS>Geh4bz^*u3+?{BcMxSJ2 zi8+eH@!`#2j>RVITeFJ^b`#p6nPMLg4+V~_OsCXCEVa>20WqRO$Cm1uvr&q|>gVum zNNP1c&g8){?q!zO1FxboHzZQi!asTnYM)x>zxJJdBic2(n^K_9LwIZ!_dGXC`<`2& z|5qwjQq8ikA6VwQN@=>-OB4awpN@?4= z4q=KHW=F75s005_9d&pbvMS_s!hUVMgv$6SxFID&mvj^%)QVfL%58LSgt^Tr%15!Q zZvqyrgjrMkW36<-b2Id?Q*av=l5kxD2aQm2l!mID^wqRJSJ64ZV4@!$0LnK!g8u-9 zSf%pEBoD5&is1bQ^##|Q*z8vpq2q913eg^bztN^FQdJvO=rct@ie&edlbLYmGu|X0 zBH##m*JXx33I+$Y?vwYYOC;)=R@1pib zB$l9W18WWsQ4Vd~9lia8r0c@Y3^NB3R3u0e>QIC61R}mu-(;9du7Zs`aOmFGjkpOT zZ4@-{>gNqHWtEE@0M5t{aavzY;G?961k2#2ab3|~JS z?@}eO(=90&1SQFR76wVHh`qO1Otk3!anus<-1aYFQ~-9epaq+?IlnRp@p{CmGs;*c z6}5Id@3bhiXbqQq%&kD%;z7IxL^G6!9blBEuDiF#SfT=BSsaW8X7t1cmU^O+n5-Tw z3p8hxtJbW(w_~Aos~1Qyx0-{ge55vNBN8z<1<@FLMZ|N`z`u5Tk-EGVPU)HMK?a^# zY&=cB*9iNu8}9X2a6NnfvJuTB|0`div+gt>7(kvqU*1 zO|Ap?3}Qb*AS&MK&^OKfvq?E<&57?5!Lq^sFB2dY<$ktu9H;pR+_=UzpUnOK1O+~f zn|KNL7JV?p?8%g?BXF9Aiv|5HO=H5bLK$bKyGdxDDjZS~^mZ6CQdTZm8kycU^TjJk zfYPDOmpP*cKsA~Fsi+Rx7ShIDz>TYr;C2we12~f3Uvdwv5TrAWv@(%G_-7ip9Ed~NCMnP#%!VixwnA1UYs|7e+(q10K?(bp&Zm8xbTC{If=@Ix zqFga={BL41I%YR1B}ztv>hO~}j;P8I!2Fg2Q=w@FA0n4)=7bqOEL3E8a(vq4N$WJl;B5W>xL^3ljinXzo2T2nf1u)X4a|J-q8eW?4>j^m9} zxY8zAAPg05Td{;0P=XQbPj14{A$%7M+IrFN$*dkTDNNuu1k18v!Mr1B%>WoR>jB($ z5+Xu0vH}SV8IdbVhkdk&>9QoA(9wD|iteJJKo~Lcg!C%S5fjLM9{POn9yG1>GJFiy z{CMp44BaDby+gUHWirMlVMCUh6NY(XAJh?kJyVSqj~CF#Cf@ z^?lB_U?lIhpkp7jiWM&fO3zwWp}BMnH-zSUV`E zZ8o|daTtRa7K-!ilN2TC4YU*lU$c|g;u2y#t_cYy?$Cli3mx-DY`)Sz(w|s{e)CH*^|#w_)T;m z>a>9%(I5>~3*KPUbp}^aYoTJXN^j{{ZoEiP?mXX22ZcH%D+{HYR&~up1~n#9X8{NTqPpZ zlRkS65k%!FU|@!gjJIq44L$!{!p5F3hzt|1>Tz$~9Ic{oWih!D7>ED6v5%xLmeIsf>HW^Yg?IgsiP4Zxd<4nZ zYd{`T=}J4_CS|Z->c_cCpOM5nfFZne9Nhx+w|N@8&q))YmLq-l9dI=rV{4x7DG+dj zi-MX1ZFubr)FaQuTp!hZ%aa{9eIxoH&f?jUGTKI}7oj`U=JaKSVZ85X2AxTcp>D`o zDVVIVLi?yu*VPf8i(0veO;I8pE%DL8-1X5WQ^2hr@D@7i2DD6jNLti8?30?40y2c4 zVIXw#5}oX*#R@X|)6)^ZwRjY~ZCco1#vXGDc>G7wU5V^~E4Gs&mN;P~{h)4p{CGDX zSU=ZGqEa>j^%qd5Z};j->6ak~+W;jjER!*=C4ueT$kGX`0~P!8=#E9fESY# zfyuDCX#=vo7l4>?3!O-(^rmS%n-Os3^Za#}gpA&ECPsBRj zl0So##^V5XK&)=klzm5{^p|=kt>1SgR0*Erwfp5H6$e>Ww&Aelf#Op=fMbhZL+Dn3 zjanIAa}4v8nNHLF9->iQKN{0FsD1!rkjhy;mPA+}p7V)a-O!XPF(H}15VohJ?cv(J zT}Uo^_xXnOucz&~f}PD+O=klTV@R$|P)4ek?Jh^x4`-7o_ze~*%R-mvk&w)R%L zY#YhI3kmgut;yf&Xsc%jV%vP+^ebIXl zP0dMsYazNgs=@mI)Et`3S-v`$8c_@u8q!SQ8_fnjFC&7A!%?yspK7|<(VrdP8B)b- zGzrE|;5H05EmN|kv+kzIJLts?2NsP+2Cj`DFk@XHac(je1f$Rroe<_|QdjWyM>r>R zaq%g{VVNqusK$5E5ujCbtx!pq;fTd)WGq9QY@BD(6ZI*K{RR*L`!UmZ>5$KljkKY&K+ zr!w+9Z`;02zot{y6YMJT^4Uu;FjjE{0Wr?oCU%K1`4EjI8+>j!Hr~c?SA>mF@{aKl zxRx&;W=AOpsqdyPoospNzAbSG+}pJnsHzdSj4M=Obh zek~VA-rw|0vOs}XlP%~{0d^xiA+)DqQ3^&gl3Pu&A;Q8=vY<zzQduRMwNzIyaH1YQTqa(HK!$b&kp4^eCc`NH}D#(?H#h zeYCX886DUeB2Fm#=U@I%4E zt+Fb=wm{zSaZ)r*gR1LpG?F{`;l7)RqZz%4z9hAtZ6cXYp)ytdg)UT$?jhE37B_6^ zNuTzL6iAeUzV-VPR^iWNzriOFtADBqn1lNg2^i;i&4ZGglyS1H@5t5IOo3VplwkxP za|uvP#-nqeHE9*al?Pg-w;|n@BGT)t9_mm^Cj&Yq@#*Q8Pn3}tqoeT86_Id{QL-TY zlW@Uqza!?fWFwnH{ga4Woc*e`BIhl^jlR8~Wzz^rqGv^#)>ftX4!Ax&o+SLzG&ll$ zSe4q}!FTy{Sp*$?YJ2it7;7BOX9U;VZ&{CTA+X>FG zy{IhlrxF(m6W&2FsSrZFaO!jkcP*u|K(0Ie^Y@O*{c;(D_$L5RH3|{R)3t>X*Onn7 z{1D}lW7{(geQO|kO*rx2V~O?O@i0({{{vY-roW}mtrDH1I7!Z^ZQu_}!|yxRG2gN0ew$)Tagg029EJpXxX9kDM&vz3IwHAPBaD_lee8VjUAx zl%*$~LEr}~!cd47krMw6sE_~yrGHC+PuBzDDVYWm4YU`~YKM}Gk0Q zHiL3lOW*`UnO`f#o7|W3YCLlpPY(#BO4rkUU$UJSzY!Z|qQrkx<~d0NJQ9~Ia;KPc z1LJA|A9CX1i*u&~S|4e4QO3R~EQ z$s~ciT3eNnwrL3K`-`FMt*+{j{Zf-^oJ=rQ&Fc!Kh-_Shw+x0wDLTjK(t7zi|9*y; zInK)+I{^pqhWIyE(ym0rUPT{5Xo1P8{%B)E~(P&EH62^;+)!Q zySH`xF^m$5jxR{XnT9B?LPyMHU%sbe8?4msnRj54` zE3x=JQ0vwWY^NCzAf6lpS?A4fb6M!a1E@1yy}k#EIg%{hXh_CvY10}MoZQ?DeP8hg zMxZ_a`wu153b<#yB(jktkG#Yp z(UOl}Vt&ChqS7hg+?|~P%;<*Zn za}jkYs&ayF{0Ey-?}oD!3lr@^T`H;-giF`d)&BWDd4P001Y5;B}=vc~E#NFI``DBrwy` z1eRD(W&}T&TK%eIWq`zFZETPJP~juY9@kas%8yomDENwa0!>&dJ-QmXBJ`ul8d5io zq7%l(IhZN8xrU`8Qk_|Yt?A)r?I)3`#&cST{uHu#n8Ut7r^-@7jKK|dcdN~FP3g2D zp(w&UWw~stwf0v@c@YSY{e4TX7^!D>xF`MO)aea{)pdyWP%}NUKv`{H5NimRaCz%O z2cf&g5IE5-!2t2vvTJMH42LvzIUzf#)n}mKvL6U(O6+38QH`$L&_UD8)-fu!aL2Td%f#i#p(XL<3ELU}?SuR?~=ewnsW27r$ zxmN*H^)@$R4#Wcl@#lY(ub463Fe8`W1vg+JlIc(3b3wg%v-Lr@SYbjcG-jJ|aw*ob zjhJwM@(9rW*LL)fZ~fv`lwT_Q)-H!Ssfo#jfbL9duD)x2P^Z-Zu^s(NBh@qZ3i@x}%$GR$|B!*>0+DJNV2yr6L(+>ugAZF{1ux%)a?XmETFMPCcZcA%s7 zlrEI6bui|)sw;uQdmo^cni9J4whRCr_BoN5&wL63t?AD|+^)fIlJb<2aB!D^2TF9x zKh4&eDL-Oq`Tt&G{+rdmTd`3&+bD&vVsy1f%xwD=zke@()f6>%tl_S8Jz}!g6*}ACEix*Qyt|J70XXc_n9T1yFJvyu( z^d}GXo1!!$XSg|FhObr*I!o7#+*`*guMDnICrTqWdLe%b`7QscMlm|YIVcoJT2h4X zPy?*$fbaVkLfc;7iVRkF+Jrc;O`_=yC?wjTVVNWL5K9XDZX*DTy8K$8cZ%mM}452xBl25dEmJlqby zfMDI2!L;*AdkNg?r$u-+wzC-O-JMhXuS$j#=WmiGt=Z6u3Y%;OD9$Wc$>Il*IHh=d z6+A7^BND>yLa52G+n$q^3R_ly00000cdRN=BhU#1Tw)3TxZO8J<}`M~x6pYG@>9&l zn$9GVXCFC)P>0~#6&N313Kbw22GDzUggsK5k75ZmUtzbpb%-T>lCnGlm@o@-4%r~Z zULG^|`Ogm^!>}!j4``(Q4W0_|F& z*a7IZzAL_u*uS4EEP&D960%U?aRaYV+WNrrY%&&^!0aFZl3i(3)BD~F%UUgY4hV^X z)!=4L+pl&pyaA1%CJTtmeUF+4jJnP>F};6jl;XmMH39J05ArRNPJHX^qDhRsaKGAh z@icr2&Q6=7u^>iF?1)ETEZNca9nqUd-IP<19q2fBd?UJCvfJUABu~AIHwmRE&TpXx zNTnMZfo6tdsWvKd{7T8*HYdC8WW`gV^&%vYE4_P@BrMJrtqDD?3s#Ws680K3z-R55 zW3?C=(CSb9ts!Ya>A5m6bl4tJ7^MOjhcJ&3HWF-6NcHp!N#S~vgb%KG23E8R-dxbC zwesC3-<9W2*zV#*`6BO%NCmEj?H>SH+0rv8D5*8koTBnZ49yvLmezlJZA_dMGH`}3 z9n57|3W;ur70`E_o%)gfUnBuNFIO3vV=?inv=8)0-cF;jqW3zy#qHau+hB}S?W_ON z_c^GupA3x|i2T%D>YC*`%HU3d2Gu3ILL2IFB#UCfN=>ncm|36aCP$iWg?(`hlST{sA(GOi%VYW*=we=HdYXu*gK6)DgL}q!lsB67xoMB~E|(MtAt2%~xv1 zI7FNp-^@ehVXzF}US-2sr=t=(UnIRv6x)C(FVF#1O@400wPgdB(| z%&j8P(v|a=nWu0TkC#m){oQWfO_w(N{U z+s2)noqFk(#QwoDRVP?4k0c1{b?PTOjRxDwLO#^2$}mQ7kbe`IeI$j>BK_h+oGwCO%2CWi^5`L`$g3Aaw+@Y2gtp zV>8-ifp|3y^)_;ir{tVPLsYwZUG%H}uIf-BSpr|@vO1|bBtLzmhv)ziQa_~^>9769 zVm|PEZ0Gmb8TxCn$nScH;H$=wpx>jRM56hs=QhCOI5x{yAk6N8en;dj|Zb z7>E{QRY+rzDo5Dcf(uo|2#`6h77=+!qPA`zh>TkM-9&?r>Cal<$(!-WJ;#--i<@-L z!GMLI*xrrG`b4#MDe_dU#i0`W=ZiTXYGy@0000DPTScjG5?PxN0?ZF8IB)3 zY9VcImQ~o!9UT05*bF1jIbr@hWcbU3Xqx4!@)PI><9j`D8i42CK6bhIRJ8Aiv)Zsb zGp&g40Tl=JvXqJ3~E!?Wsh?aDc;f$`jE;gYQ$?GL?M z%2>Pn1!cnczmWYy+hVJ~Z*r#lIuv#*vXeDG4fik4UnNBmRJaItQsn@)>c|x6%6ac3 zdTL1gKuXiEks+R{tk!ltqNPcehugCU)^4Lk)BGHR2obTc_jfCN7>Uq!Q(6DW zx8K0mT{(F2v<*n;#B&ctrmsztw;o(dwnSR+R(}=@0p_Vl8bhAR6{uV!uTbdSOEaCf zNcG~3+uLDgsmtz`dAesoBwzgqJ~Y_9K|nMDp*G6#{vFQRgI!Ulr=B_OgZWWF&ub?! zrB(kDKzG7sN-*(f<6{Ta8pC(D^cG}0)kt;Q@BD5@yNVT|g)SxALUFdn z;v$J3NOG=E(!q{K?1-xFk#y0ONV2pjJg{5IUFS^+4?w(HejwE6AQm*BUkz9FPPpu| z0Rt1IDP|smt%D_+^D>cc(X4~=DyL_Soj_nuNflSR18L}5hjl1cXj=-Lz&FK|K^!p< zG#qpc#E!fz`(>|`0ascumZ-qGo*+zalaQKVLOd%LoNsy#(1zxtQB=>0yJWayTeXSJ zjeG;RAfNk8?wxbBh7==BRCAzVKdFCo$L8nC`e4JVW=>CUh2gKOp}6`-QU5ZhtXo(g zpE@HmSi1=>Krh|$CHSBqeU=%XQg+71RAEqV4_)IWE1F!G4ZLoD03hu7cW^yo4P8%S zT!BC|a^)4S_qKfz>Nlfg~<^}m( zx3KBRe4Mf9uga4NR_`RI?13L7>LlG6sKv=BU~gySOeTE;KEmPU<*t+IuQw`u**!d= z{MvgB|7B)9r}l)B$A|b8y^J&>e74r00WfR0b1hvc--CoO5)CHx1z^_*Er4BWYFv5X zo}0zxIUV{{F6DZ(zQr%9lHarPRI)-l>=t;wZwYNz6WS9-EQ>ig^5IVLZ};R76Hp3z z;UMbP|K+-7?A6G4UwR7YJxrM^ODC^fC1;BVkrGRQLzZvx3+m2LWzKRihx;6uy)eYByP_ThP z(7DF!3m6=lDa0lO^h9*brLze6=vM?ZCD}hfh7spV5`d@;$;19Eq8r$vq1A@4j;Te)pp5%!4dwW6maso8MxdRK??bd=z_05o++rZm-!O%6%}siPFDUY8 zEXq>0b}4axJ*xm|oM&XC-4K60Xhfxe4^MH4O7}5b z{qY6`P%-uIqB3oMK(3K+p!ATU+kDOvm!+SYz||)iXzlaIY^Wl)fPH<)(ie}}6KmGr zg}0$zEL_1F?bzNMO;ygQE!~bi5KKmiQShi)>w=@?gl=%pX%b6=J_W;u;!0r>c@QiC z{kilDhLGr54UY+VG#cwrA%pVOl|Bun>`4I^#vH^+G?2~Mr!Iy&3bLwpJ#1=67gFCC zb-*W@asI-uH{*<9lELIMX8uc4td&hZ_pbJL8OW1!leDwB6-G(IH>SDa!?eiA&^F$J z3eP9-IvNp)`10xqTWYC+ae7z*MkdLStC8Iv2$yuVwC4XkXo%nsn|RUV#mxO@z!;Pv zZL9jqp@qa!p{xl)>ES_jaJ^bi$d7@)nuV{WN|oFwNmlJd&PLv^o<3X|_BG@EX3I@_ zga{`!Jvfd5)Occd8*{8`8H|j#E#rG)3e{5^5S1Q-!%-+!!_7G2DvPU+a44u@n7gMukvV#s zLoxi(gS)UzTPa!u(bK_eE&dBDeP3Q{eR+ky;nt`)#*>71Yu|?PbPo6n{xDrR-q$l> zdC#1plTGM7D7H@)NTmdPrZ-ypo_sFlzhhHX_ASzTDwm2mg2hX{Z!+vCs?ez|P6;vw z-I5R_I@FR?i379l`}KF93KXacFt6Tx+$$<)BbRiqHmJ(~PEGsVjlUiN!IU%Wn&URg zneDBk^XP0;Wf9uZ>Mdn&6@iKL7qv%~YWDiuZ#GX9kFi5LVB&GVXUiT%uc+-YREingEGD;? zgXz*YNiMfYk+Xm-o1$|6)(2>xDCS&$1i10oH!;G-Wgn00!f;|j^}ON8DDC6U=V)z>CQN% zeMb2a0T#-)-6U|11Mui}q&T`ZpRb$XCCI&n?8l=Yx!z#y+M1`!E#g>y#k9H6#+OK! zQ!Qg(i*6J!mhH&Cu73-pdi={?0|&?I5r@2c&r=0WV&hnGYR~qU&UpQy{`wCAMM(z~ zP)mKBlN!#qk*&cI>76d(pgRMz94)C8b`&Y6%2Z?Qyaq?^izvesu6a_~;txt+cqMNm za~!%h@25)7L|}yR?a}AVG(h-bIVxRCy#ZFJ_87vMiev$5f-LgaYJQUm8M-_`7I7ZF ziiQXR)A%YeUnp?E*l|7|TihK`V5$iET+-6Wzc=rJBUo(h|p@jd4Ru_Cp?Y^j`l(J?))(vP42T=Fb;_9e7)(4MkrBz(=mzd@sC({JzwI`^x4p zE&G#Q1f_@z?If^vUz1(p_cO9Pgl0juS(8~aY>l`ANwBo!?&gp0UdY;YhdVw{j{7)=_;H`QdI ziD%A!yYT)mAeSJs6_N_ij6toJas5b^^#9th?5cl%Q0g_|Vs_w#@VYWo3__ zIkAR>#@h4WdA;x-0I=rcok&0k8Q77DD~Hh5wXVK|9$f37goppG)+$bfE?7PBa5zs3 zku(~5IKC2EK4PVFOp3faqxvAb5Q{o=sKhg83U9S~PFs{pRuF$7$w|Jmuh>3}*oIf_ z*4%OP4jEg^AweQI24+m5gM@IWzUY8|>-R=2nlM}tzcV%=kS&+VD81*!xIc;Xm+8-a zh_=h@P0&yS#pTDh6!L_EHJ?P_R}c;!KOu>BKZ7L>y$n6#4~Yq>@i-@ybkpe0D#1)$ zZ|14A%^A{rbXA-B@rMV*z*G8%nCvYu*A(y*o=-ih`%IQh`k#W5{W zJA-aL{nDZJpU{Ohm%GiZQ^Ub=)$s2RlI?Ol*-1W%pR7nd+)Y--^1;K?yR_ue zj<6muF*65m_971)Pk{RPzw-a%mNUWF8sY;NOe@$?j*P{>OmqQUM9Yv9lcZ9jx!DVE zU2i$swQ2;;g6*f>0-{0*S#EFxS+3(5b}FWPf$G%>X-sJoKNT}G@Zn-j71i~Uk_NR@ zslzt{gr0+3rC#QPc{lWY_QYV1iN7IPv2iyNO}7sf&kYbt7r2iELMt7dCR|ct>^IF- zM&q$I+2>1OQ)+uwO4|l+KKSnz zB)D9;+>;RC(ODPNQ&-_;KsGs@AD9+_CuL*`0C46MzO&Uu_@9wEd-Fon7u2lQ+Ropq zY%@me2jf0&8b*}OK%Zp4e1q*V2qllot@|fqgw#t3{@pfbrZZw5_ezW8-YOywiW>JNW?iFR$zL`-JZe`bqr+R>oWzz%lyvYvgpY3?eX5_;rshIFp_a zonSbAjOAIFV6Q6$VOiDNDRCaQ@@3*$IMU+UPqHQyHKs_T)xQ;9nY4^xV_--?wG}zl zyuKca+x>q|0;2>9g34SkN80p=Efr*dB%(WNpJ8<_Z={GM6IGlnyf;8ryY~vdR_&OS zzje@5iDN@7!ywK&+Blu_cU;6qlwz3Ua8k6Nx0=}y@neIo)J4AkWaixug9!4DT!kR4 zS9Z(7ERVQ?@?IFf-P`Ye%*x^UtaR5hRE!-z6F4 zGHbj$x*K9ew`PVnCPpK$&Tc1UDpCf+lkgyand071!+YaZDIPkeYQm~fQ+1|n=#KS- z`PIjQfqH2`>9>%;j1bEedz?iTeiK)e8#sB!`I6F$RR8?JO)Ay4vn zxN=${8Bed+n%5sc|G5rckP56DgdOf#8jIbUpv@M+8f!*OeBZ_h9>^ghZNpWa8e$D` zCt-U;iDXhBdu6|~F0M{)+bomV63=U68sfcd#6;JXbKo9+v|dSbTj+JwC0bL<(-F6M zsrq&*1@zS0-#&i{8w|OmWJp&r#V4qAym7NF)0Ph}IFU?R9sPS(x*r@)yH6VcoRa_m z02eQZW)|IwP5yA*8FabaB`st@eWwP7e6tmr(utFoQb2C#LIM^d6oNIcd-d_VLZ7rx zaWMqz6UU+tUN9=7;0yqs$1t%v1T02c-B;SB82up6-QyAth}05h>gI-=TsncI^WnW9 zz=C1KB7uoCJlRqh@oc+ti~Jl8Rhm=Fk!S!C&M}r8Vqt&I?8aDG&qQkmirMf`_YHcO zHbYLs;`mi}ij`~-zPbtmj*61BvVCO+!iuE{p<}k5!(J&`!KUnGKWSHj#pO;P0mH4} z@{!0V;#sN0lH^0{W4fTcmFm^@9-nlbgQU}e zc*Fxgi{EX~lf<~+Q@XqIcG}!@?0;?*#J@&_n-4Gm;O?lvnYHje;2}n_O*?}rXI2B! zT7>@t$KiA75#*LqAk2LE=gQlzVdtIE9{oYy)_I3uICKwFjweOMQ+cV7owv(;zlc1_ zmuES%`S@(Goz)273Q}afp}*E&P#6fK2^Jwr})k@he1BibO&!BXhy^fz&b;n&X{`TStuB`Z}5odB;E9u*-W6Ta!7q8XD@to z$ORTyFClhXXwFe{Z>%fzzMnU`UJmBmyM|inTi?R3@cih&T~{) zV*P{t?>|{dDAA770>>f#z8mcMLY31gImQOhe8Rq0O62qXQ-oLf1$|%{T$c?!k4*Y^ zcR;#v{&beX0F=0RPrO_<)MhH_gG&d~(MQrlP`_bVgM#i9L$k~kKdWM^PpSrMcFFgW z8XhE3S2{0{m7M|AcbDuZi!i#sh4B_>s|`T?F10QLzaTIT!U7n&lGh-s6W;`63Rrw&1n(Un=-66N&7ENJ$p;`YiUi4mQ^@ckZE5p|;}{j<*N0 zmonp~Ae(F@hvK@g>}gcG591V^ymei-7=v7lTn^(%Nib@-WF}@ZN?0X2_BSyXA$l)c zP7Xf+@8O(WN0`#7*9w$k(YD%{o;_8=3A8qa-95fe_9Vl>+W3ecEx z3?4oaG8p^uh$7|$0H${{B(SPF4#+663{kcln0(Ks1q|S4w#3>dMQvm!1Biqqqyh2k z8hF}pF|HTmMW{b>8T140jx+9%y8T-VWcXl_ZAVpO#4y8o4wXORuh0zcw`?{%IA^l- zklu7PuYC&j3BM}yn7)d#f>( zR(}s!aZud7+rc^tkhJBE+S>Uc#vm~g7XIQD0(_S$i$UJ&jJBAsPDWW98@|d(r%YSA z9buUKs)ZXgB$dS!CX_G3?#R+DZHcO2yHt}wi~{et1+z#YFnZ2fn#J(A`tLL7{nb#q zi4MYy_Twtogd24#qv6#8=XQx!}u z`#J7x=lpbE1kBk#%fejI%J1*PWwSPh0zDE3tk_x$3<^k5w7?F6B(`0;m#L`h#6ju9 z`f?#FUUbK&cF+-+`-w-$#%bY{UO7$&hf)>#di^^P1923Qx}^uO9E6}LV~AlL2CySr zS`Wf&GV<_Uu;vG{BvCk9rfY3P1$Wx9e zY(!w1i}RxU=`8gufPB8C_fcg)!YE|;DE7-g*IakD`W&iZQn=v#V-SzU08kwGXl=yA zX)E!?2O)`F)xZR}Zcxkv=2#A1K)02~nfNRoO4A@velMV@gtpGYHTB7BMke4QD7##T(bK$`vh0R%A{|?{a%PF1SC>2Z^f^)Z;JvXRSfI-R`6nZy)ts`eo8;gC00FrW z!f?O?4xY@HyQy^CJdRjfb*gFYbwm#mGxI_hnQCLJNU-3(C9c<~RYgzRCzwG9w) zHCen!Em@S5Neu{Hw-NDN z5=IsCLY9?qHnwXc6rhF$U-yn1oOcFiTVM9SW(Ua#ma2zRD{Ra-r^yNuw4)ZQ+myVr zN^?Z3#JLmPS-*8Rb@uhYxn)HmDQY^{ z5_Y+g4aQ#|iCumrYc#VO>0TG$#D}LE7k@Az#C3?EFOIUscAuP>pt;*ScwM`WV9#$I zNsKL$%BU(%&^}=(XG=qWQF9IX_hnvC-%yfkGEb_$5E28nA}t6&!3*i?>g6zV%7}PC z-eKhZD7%0={=#V~K!Ht`%QagRn5{x8x9gxB4T=M0ag&6Jk+>6o&>~^nL7AX(p%6hk z&KS+-rCiOA|EalWUnL&l7j_nOXK68-!U-UC73zSA1@bnU%^qL_SyTGLjz&D6u1Nf* zi|rI`maww8uTw0^cj$^x2Bm`zSE>w95uEFv{q{-u=rQ+I-L$|A^yy>Hp9&;ovvKMl zoO&?J8uu3UEM_FOyq_GWnt`k>n)&1~DZOOIF~CJanezR!0vuaPaxQM1jrz@|?YkWL z^s_?=bQ!BD(l{;`6*$ktj0Y6v`hsSWhoHR%E~pLsI#9B5n$nv2A+oLZvtq$fxSa!k zn6$7wJOYJ4`oCE+x7~nPRg;}QT#frILzG-%hpy2$YHObHd?X|>=wzNjWGhG+7F@)+ z8#>h3>5B!JGf!7mj&GI1wFjP2%C1=$EzQv8Qg2w`^9w{uu=c_OZLhO+oDm;^fK;uk zseU*C=chr#A6KrrP|_L`8!kaUTjlN3XMs2-u~-K$u}kzCM4G8%dH!Lgl>3s!52!V4 z=iV!n0ar!sQ7-aM_NKXY9&46I*Plx?*n0yj&wWXNNL`o~o48_A&(Tmo>BfWQ<83O~ zp8=OZocw99GZu=vX9MEOGoHzp+#%{2#BB;Ku^6wNYx2%Hk>2k(&V3|!2D_6s^m)mv zd{!L4<|uCvRofX{+O8_OT~UZQCS>aoHSye1JZF&M3Pw}cCE_3W;)CmgtGM3#kU1u) znNUtn91Z&SQye|xqsK|;X0jyW(}|GufB4H^R!-5XwBM~v2OzbofrO=yP9Zf_mW`Y` z)w(#$RQHn0n3!BOYPH~ZsDYuT4J4dZCNy3~pCG*ftkyu!CiYnna_F{cn&F-y$!$%G zqru(!c7?e}U^~l3Xm9M)-G=!8LrWgNs;(R=W>n4^fmNT3e=R|idv;wpsDIDorfL`d ziv2&b#w)z$?e+BCry{(4&Mq6sfFuol%e-1-g8#>qrPVj0O#NZ^K$-eRc3`;KgZ;NE z_rzD5M%YA-L1<7~fF1ByyMkE{x*mLBE9v0~P}#SUw}!4xGBY#G2D|gU<>ZIFH<+GA z>|&?r9jJqcR7ch`s!G2+oh%9}{02?u|KEqjEv`-`9rN!}hL_&_L-9zmWhVkHBKJ5N z=OJ^#ZY$z6sok-PIsXxg1EMGNU3%{i>3_^U&1WZYg300uBWMR{>}Y+!IP4Yt%L-v6 zi&q=+;Rlu4?EmsKGr6`Y1#9Z??m1SJxVk2Q$r0ch$G}tg_>JMH0AgLZW}@PuVSU#! zE6ej@yP7YO#FTWIs6mFk9Cq*-f(QnVwf*xJtTSq{7U*jyZ_~GjLOdd6v_mOd;AD}> z$BT1cUmd7sRa#j=@hb&v68yMT4j|=YOznwrh`F5&9cFbqu@ATYx!oC)cuLNrf~F0~m}A;`@#dt592QJdM})68Ob14Wawy z7Crkn(P)?la0&nb00A(LG%2a1_pV#!LfmN?c)A$NMVBB&Y3k=|lk3%Oo;79e7P4!` z!#F6vt^mij2R*C&d*CQIY_DL@d@J6)r5tDAIX^=`m%mYP7+mH3iQ`t(K1)$`4T98G@(Dxg(q4OV5yqSo-gA(F}iVgFiy*_L>ECCQ@= zp+>e5+){}rOc8Ko`=te?Rd^~1JO!3(F~RQ_3c&LL#XC!X{T7f4kb^M#>u^(&A38ic z^%!5Ob;c71C`E(oE%Xoa8FVyjtBZp!=d4|sfmyP4Nb(q=&mQS(WU%B>B?*v5L7^bs z(wW)ztt%CmaAbNZ?zYFNSXfO+=XtN=8+T+i$BU?ql7u`rZfm*XB2z_r*L5MSI8g>9 z((~ucF0x;f*DpA8GDz;p! zQzG>n;HJf9fDM06Z${2o!u9{gTj+u2;_@+$$cpThziIM?L zMn084AR9|vDtErh94XAS6jnOH_|&DNZ&Jq|Muf!PmSpex7~^b;xH2E&hKdgM8UE5o zE3z-~8~E#s#X}Vzb47Qs_{Nm+i^6DtWEZbdg$w|C^+J{ag)dN0x%zgN z_1Na4F&VX^;CZ*c2Vi>qvDl+p5)7h5^RYbuP%E(*Pglq{i!!F){p-?7ycURT9E57w zr5hpjge*xzNIGR5E#XgOqpR) zY+odWwCtDs)9P_YD_nMmtIL@tUDDuHx9JA$d}t{O`_f#E5Od8G?ON0Y(xhOUj8Wj= z(IT~rWMSDSQUv>}ro=IN1WA2)ha&-_90Yx)oRkd$yd+V5JqonOnszOJ%W!0NqCq)& z7=_9_jeD0h^76{uM@$Z*bS|_b3b$w%l#EYi(E$Q)sAgr;kr_Q5T`k%=V#>ExYq-@t zZ)0^{1a&u$;q{N%Z^%64@Tr)i^A5r}Eea9)^lV+&%kc~^OOUMayl@Uq$^>nj^l#yD zp8(yK&U`$Yyw0`h*Zy~?0f>oFQcdSO$i+F2q2+?uQB>`IVQ@&It(oC~=h&q>aG#e+ z7z$(__myt+TkMQAuScjhx^h~)-fDI7UD$5-a6Ek<*LxedDJQd}TB&T?R~XT-N}5jp zz?z z9Qf*am*8lJw02fPd1 zS*lF6Cs#}Y!LPOw9@t@IU_zruD4 z-aOykOE`901}95h>|XZRxG6#+VG=ukwT-@%HG2RZl)=5A#fQ*=Y(}CCt?^+uBLj^FB+~Qg4&!#maeO-^*P$X@91ViMOYPOOZ<&7`ECBjccd6hJXstOT+B9Q<+&jU0WP`BLZ2%gbWmso< zo?9NYZvChAhl0}06<~HYM6BBGCns=O_zgI1jjI=jlT$nl>%g$J`&`Y&)jP6sD%M=ao!}=kmg+Q1s2(RNAwL7?MGnVkba)64uadE+5hWq7!j^# zmZ{Rf0000G7h1SAk-R<-h-07eK|hw{8y-w$RsDL)0fV;kBXkV3teyHORxILt2lBf- zW&U~l@SG9^$62;cD^sF>LY(cP)kyX$A)C^z8WjZoCpI0m&Tm|CeKAu+W4&k3Aw}n6 zCJp>^gt{Q>Ic#eG=n!P}9c?mk(e)MJP|^w8t8Z0hNT2XDJ2vcwzX|xPcm%BM*K#!E z7kj}Sc}I8So!ypkB-TELHxC2DQkKv92aEHAu9?WuXIC+LJQGVJ!F+ZiC2OqL2ilIx9p1yf_-#s#}r4;{>?4%gca zp0>E2C`9FxK1=zt>E_3n^CwbhxTkS-c-B`M$(op!-m3rl#;#tK0%0pD(4n%R_3Bb( z8lW5<-u&Ws$$+GOb8V)x;SQ1WE@`havYPc9hmup)44Gs9I~KbN{4t6Pj{*5pu{HplvD^9qoJ79j2aj5Jlp?hL*LX$f51 z*Fp@ZfC?1WM49LgHfCd42}`z#H~n&$%q4RR+eNLScC`C?mBnG`U1oIAB$zHafl{R+ z#y*gDKTKQsJ`)~|!`P@#56->RQYk&g97#Nufa`VtUa_iFzN`uqyKYk6Th8GH zd%qskBK_(a7Z>U(&gyA_GDrF|bi(bvWb#26rtcZ9mXP^DfQ{w0w`**keq(PIE|$WH z|23rnaCf(w0Tr`Y;OJ)Dg$FsRtnrIWV`ue58!9>u+qk=r*>cws=mgDO-YpzC2x(e6 zAeyP5Lf5)qCBWl!UmR;wg#XZd#M{N-Op(1}$Y4M`Z?HK4=opbF{h}{&qQjKfVB&Z> zFMXGeY08MS*wR1mUyqVG8dqVijmpgmXR%Ve&5&WMJLFq!jZoN_vbri7`>`$gB(YFX z#mbb3h!v5VaS=!Nh_!Nh>I)M9L)*K-UM02RDV(+^W z_D`UUS&q-fM#Dk|z)>dhn<$>85O=Bl+2ghPQ#&I#f|MXVi~A`!7&P_sTFL67w7Oy9 ztu)qHwi6ch97-cdJa^27WHtRNwSDF@pTnCT)N9m%GX}7ub(3~MH?HPjpF{ZNG|V(} zOU3A{X2OPV;J2Pzzn-4phS2!zDF%Mdq?q;Eh?woDc2t~*`fD$HEqph|CM{<%Vo5}fJS7BtXG-V`_VDtPV{rA&q4-bfO z($)lZIbr`143C)}@~tnawg>j@4LPaJ$sbxwzTlPE{7~2b9Y`_%;^|=%%B_;j@6V07 z0Om#Z)PFK9Zd=v3x0k9y5R&xcVc8~Q3WE)NrXqAu#eP^l1b1i!VMKvz8DiM{ywZNSgOOA zcZ973r;YL9(19-%y(eMEDf$XkRKyR4DfF47_nU)ik6kLpEGh}}Nqcc`dlAnHT@AH#XO^7vdvY|qm2B^g|scVy@_HDKoweqRkOkI_ZZtuKjV-1D!<*kUCS zG^*?rYk9#8mc&!8bOc+2;FYSZX?kJ=9E_N;i zIpQT*2MYixB2Awv-Z2XNCV6ZIr)8tDc@+sx+s864UMn>>m-|Qb?$KWM@)OeP*-1Cc zD?bzBB^dfB;NsU>5CfUo`a=5w@SZBQ%dkAS;W4BHRFVA_@@zw@;Eb1g?pSEcwQN@9 zi_A>?H{y8059#^Sb$j!{QJz^O%wlySxizZ>5mM98W*JsTrm(=bfI>?T0@Pn+zk!(h zY&ok!cKR^NCsao}0#i7UBLlW%QZFHbKnXM1W8q^;Vs3T;cf8qzI#gq$h3XlK*000g7 zJ%M=MQ_ooyKNu-c;-2HaNdS)s=7@GAH;6Fmyht9NdfUdroA0H~^KS0fXpdY4%ShDR zUgty{LD7Nm1PWnHMe)(*^IfJsi1mR;!ScT=ea9V!j@_jlB1>Kh?VRd(&(& z`|ay1u&XVyCZ@r#mBMP)fr8@jX;9|lkk|sLdRr<_rbX}W4*lM!Pl+&gn z`;-xt#Eb0};$n)to_i=QbD%*(De>LM!E8&9>V&I7OEkp-Op8|y zX<_w1za&y_d7WU?>4=4EHPwO3q;kA!{E-rJdRN5&UqGP0oz&^SsTitK^s&RnrtI{# z@W!IWNARqg+ak#cK$Q}5&<{*IjOUhaR6E;tDErB3njAI~&P zhHjv|D0J&dceAJOJB(2ea4T@uKPsswhJl1e9!`7R+spCg5HTHG(#_2!JMFh-aopWf z$%%$?J?Uxax{h42Ecnls@Y8=rl8KtpFYeAcwP+^w$*nlB*TN^arGf0_tQyF5%{&Rx z!Vk-khh>WnUfyQ$(4?TVmoD$#T+W3|@wG~=M(4a1|Ju!_N_AxNN&(esB3X+Q9&zaa|KEj?P_Wyi69?TsC03;gMj0a4o1qeBe6(F@+RrX`o zXV@Go=_`rBXaLJeVeb-5(1*psOy{Ru*i7XPr@{?~s>3MO>52I4Y#Zv>Q z4uXX0@8LWkSYj-x3&4@d)=EIZg^{51{CSVPLwM{))>JX?$N6c;@h+*UCoRGt;r9{f z)i0OgA7Is?t>PuM7goaGnQA*sQrrFtO6GRpvr9F09h&VH7lF>pF3*23wNpbl04_AB zi887;1WT@3b?(-XG#y{)C-%WKRFyx@O=fyk!iqGfTO(Ul)py(xMHMOcZsk^KNQr)u zp6XAd%Y!mG8**DQo_D%TSvV;4BL9%@i}Dp*D~DgFJ;x_lh!YyBjD(rigHE=YcBZJx zuIL|RUc-7T0qP6&H>+1fY=o1g6!uB&1@JGL?f0f`7M^7Z)Ww3J&Jc_&;uE9{POSI7 zp|{VqhCC?_q1P6i_4xKtGLG8%pug4RnENB7$}XW0TXN{m^?vPCd_QT`01Z;IS}8X7P2=9aX-FuNj!fUEM4MOBn| z5jH1Nf_16aQfR>ks6uD1%2yCu9gBaL_?@j8B+<1sI+5(3jRVb9Bh2@s;av*Ty=8*qiFSolz#{CzEqOJkdB3gbylRjr ziWA%IJZDovkBP3|bZswq%fkEUZ`$b0mjZZl>AKb{n1$x|I8|x?PzTc+iW?dA7eEgD zI19Mvr#NL2JaNkmK1uwB`g#>AZ0)F~TdpQ+0g;#mpSvBBd+KnnR zI=3!EquaW$6{vAv;lO{y`Gdg(iUhOSJNC88pFE6$N1qD_-JvK4xqP{}*e53Z5*L~Q_ zwH!VHy`{S)DKL4Ka}TvSA&_d&p|q2E=J${1dsoen z1L}Fe)MCWgZPz3A;Ontw!tIHoXl1<>_3H6d*@zuqifPw3cuMmc@M8!;Cdn`?`p&m* zoNi?;|Nb$PkWh?@H*=L|4jd=$3FoywnL&*GAsxt|00000bJsAjoR`QrgZh~|%SPi1 z3(4T3=?aD_`n=to$PtigRCB6HJxsTHOGtN!k-p{Ld^pCCk8XNd#epM9UXm;Nn6OI! z*W;S`*hdG4{hvR~VyINr{uj%^&{!rG6(@&mL@&OZzp8p-rz4PlsPoKmIY1(|Nr?gql>n=jT(JUcW5g;|5lntwvPSEI%HObxRXRc?RnC}R=eaos} z1mM98Vb9AdhwR5OAv6R}AB;@uI>KP{pTAG`YDczzV3BfG!K+@D8%TAo)r1T_ioQ15 zQ4gzv*k_7SpJ}|Kxs&~@8KkfgAGI|GNOE}i+~D>4JC2J**X1FxnZra2hk6)H!95iX zmWbwUW?Dt+4!{9c0VFX6wQ?2^V+rix&cN5Is7~BwvsX|YLt7xzi(@@U1e<>VuEt~> zaoDn-r-WM0vKZ_#`sKp~yu?-gLWWeXieI5cN|85&aGi$@ZO`(ST};t8(MlLd5UX&? zL*CO9-#&_%6aL0Y*r$ACk<%(*)){)ezLSN8v&q|W$j1>TQ)yP6yFC}3BfX^uOV>8Q zHHasYqg4knt}UC{k%&%vsA|$UjM55lGXy!(?Nenljl`q>H08igWAO1l8X7XGAy$_x z^XG<@V6f@=cU&F-dvYwTbY$Z3$BD0Qn!#y_qr}2rC+~BoyAyX>s2;>{>uLbGFtLKm z1+KI*^vg<3H26iZh9q~;qX*qke1DM$XxjyB%3Rl_&zYoXH-C$hd=d;o)`w>Gb=g^` zpE3=&c}=^7HJ)k*0mv-*3kyTMO|NlEuTBD@d4O&$_L|6yxK;`ivM*k@ychA@he>;5 z^)K#Ym?k2CpP$AO<8QCGsXH0G$f!b}&&#JrJNnVgyzvgx@vSSq3I*qCBXA02e{&eH zFp)8(=4thaPjH#H+aivsZqoPsD&wo?aONon>p#w3V${Px?%_d`4XUhUhuv1C8ez;* z7Jj-sJfU8x^GZ>Jc6YX5BhbfY*{~FYb}R`_hooLby)J@koNxs}@v_R=^?%q~Ul4L^ z19x-ZLI1v`e=+Q+Om8|6C$w;9pUeYio_<2eZjt-Kzjwfey>QyIb2aYy_y?8EIUkjM z$i&Eg$UEf%SiGoP@mrNd>my54z8@q)kkPVdAF!1Du*s%2Tvocsy&$r2rLx8f(zhv# zc}oSQY#be5!#J@3eo-y^gcfV@wzw&gH(qFSQ5j@Wkq-Aa6v{RKn$;|K8hv6HvzKOqgu192---4Tx$QrUKsFs_*r3oVA|MNBbLvjwGf2==EgcXK#$ z-0h66XKoBDVbSTQ;M^QLvMaiHRG4hG3iv=a< z(?ylLR}Aw!sf!1be`MKwUF>A3dgL9A=3p_3p;K55gLK)CErj7sm=+J<#E+x%iCm71 z_jv7L+pgt%O@838d{ofDF!)1SrA%9bBx3@Ke3Vh?fi%~KqbWi=9T z6QzyqLpB&zSEQjIjhJ&rg>Wl>%n&WbZ!(p&>Ml>T()JSiii@Liv!+pmW9Yx7I@p9A zh-|lSJ|NaTQzg#n&`s$-8!B%7^u2}m2{)?Se+D>v%{j3=vG$sx@%f*m(U!&X;bsP$ zGY=d2333Rti?*T9?lAF$AyUSH=g6M?{Gv49=hVAU`eFgVB-+fhhkz^Az~1tXq?dSW z*TgSZjuhFGls?O;ErJz9iqP%hg>o{%`S`?~ZEoKf)OD*>aXJu=K_zfXh9Xl#IH?df zxHL0FJ;hg^>nwB&XCqGhs56au^X_ySxRhpA_O;xL{oGqs~v>#|Gz}85Dw|G|l zZEu58eZ6n zuqEm3AOF|E-E8X-2j0{r*zS^29x}6t-1ece7WxMDCx*&vM;ChGx-XZCUN9pL*IVJV zY%Eu->zmYyQ2861a<1WBP8S`Zj9xwKKIv4CDNS(_@Fj5tD^XoQYmU13h3G&R^}e!V z)Cq~Wxm0aCZ1~$$_;BuK6y@MSDdvO-u?Y#qaBvXT=)!HjBrU1oM`a*zu1Sor=a|}( zX;K%BXW1Z3xI82=d~1%itnB6sr$v?r_1vadn;Eg3&UK*g2-yxE9sFrd%vBq>vydRR z(zH0>cl*G;_Zp@Ik?7(sVNCAa~WB zf)=GLp}C`WMPPH+6xTEU^qfb5cH6j?U%6%l)%r#Ele~0~SQyc}r_ZcrvFo_0S>H() z+IyTow}zG1KuM}eUkQl39B*pac5Ky=b7;ZgTv60-yK?Y&6!3NBElz7f_x8IW=-2C< zZlvQ>bcu9KCTfx&cv)EY&2MS{O5?B23O?mWB||PrP};HTd8G4HRPsjNi+fe2Z^XCO zWUBWw_&XcbVT2b5B-1L?VIL;$^^jCm5|7IIoi;vSIhAz>>LGk)3L$b~D7wXt zt)+Xh$q=eqccU%-cBw*$wz7Z#jrkc6o^(<7gx@aeE%wUsK~O0&U%{0Y8i8o0P)G$M1DW2!%lW08o!MJxvqq%RN$w2I)4$NH) zLIlZIdZ^yX`ILAImf~fEFcJ4s(wm9t=>0DmN2Sn$QC%;qs#Vt{%`-e+mzXzDBM}!J z6G&zS{!}EdSo`|Mk2xtVT(>KOO%F>}`OAkdq-4IeSUyC0oIa{2B!wSe3K;4~a-VQk zrm70Z#r%hg64wVm9z934fw%Z1y}C``jjX)mE~(#b0OI$6Is6z$zh@p@OFssbwB zfXBa}5Kd;KN^m)!1iZ{k&u^xlUBZrRIK%J{>qtYd_ta!L!tXOzed=XOYX(av7hU8unp=* zaysYt?$;-SRcpYxotS|&{=kq8B_T?eLZW(z--`w0aok#p3g_2TVw{R`vs2FDw>>tH zI_s@>JoCmj%Zq%XL}TZ&*(EhwlVaW_fy-0&r#Yl9CA&pLs~QU2FOx-WJv>mF!^S1i z`shO|r=r{!xrnYoK5v|P-pU5cgcZ2Px%6sYWseZRB~{_^~r3*L@UkK z7rJc>3Olg-RU;bqL{Zo_35Nej1LTCFMeHp4YKS_VL&KmncE{7L4hcq!u!<&cYkeK= z)_5s` zBp_(4wuNQS5{;>6a3=+RXQKh7X%=lH_@-sTNO(~#Svuaf@*oZjbV&Ek_S!fR|G8QhW&Bp|h+W2IpMPpphE_$ejW`p}h z!ouSf5m}@+HFonhMrhWb6L(nE9sv?QlPZWbX%HZKtd$RS;|S>Mu7Y|ao&P(Xi3Hih zgJ3(f`+|keg=%?Tkr1PeA;NTt9p`2gWD+u^dSM1*^F!--!75b+KPyO~)g>B{u@(%* z5T_H;cVt}&_Cp#N;PWDHY9s@L_N?`H^TGLCLNK2i9ecV;=h-Vp^TIl!DALlOCt$8i z{7)##QTVYRFBuqpSlk|5F z0KI3_xZpMglAu$m>)Ly_C}p7Qfd@&JuKIKV4~686 zd$U;$XgY~G2pV6vt>OH3hrI_>w+F7_Lk|h+PbM;49^8DgAS%~aT%dZ69ak&>mo=vj z2_tD0R?AjKm2m#6tVhVnfo{FAKcS3zgzKDEd4}1MS}zhblj3`#?QrDl-o$g3)WMr5 z$lFAFN@|^PXl)>fXG**IW`o6$ZIMcdWTQhb>c!t7YOmk<+NAn{x*AzdI5V*n6bf|-c-69L{At9Nr$1=7#o8-#5KcnOhpg_AA6tiCr1<{+rU

TD-eWE$*|X9h61tDog6 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 ZSO66fIy%JW+RF@^AI^XP00000008fkeAui8$xP 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/login/lf_icon2.webp b/web-admin/src/assets/images/login/lf_icon2.webp new file mode 100644 index 0000000000000000000000000000000000000000..5e4f3fd0dd461d4e92ab3222aa9f546e2c4ca2bd GIT binary patch literal 25016 zcmeFXV~}Lg_a&NTTV1xaT$z1jc*>wMY-W<8s+!7cJ=z@gRSxP^bQfI z9W+oWj=>OEDa??GZvhNLM3{;Hv%ZMI&jMHr8p8sXH4rtJW%D%ij1jcMgd4;FTzMI^ z3SSFc_}UeC&yed2sM-u^#l6e>n3RVY9t8Hi&dK(JcwNFC$I%i3DQo>ej z0JP`#m(LU5*WLfq^0of#?W$REpGCC$M|G!S=gcuKxv*Z0L|kt;nf zzF*Vi0#YSQWifbcd&Z}nOT|>BqFkVK4$jpCF`nU+DUgut~#yYP; z?U{bGWLo!DuRzDi3#T4m(=%Aqs8qBs2VLDjLautOaB4&Yt8$?ReG4)RZP1< zPrauh(E63o^2TOVfl1vOuF3`#mCF1BD(V%bSyl2Y3kswcs7bt)xfcbyVhi;Tme41`B_RH@z2NgUcs!f2nFwHhrlYu);QB zXD>p-omVGv1~o$m{YGDehCQE}*TC)7;t@W-#K7>KOT+4)!|FH?f`x$voa0Muh3snK z+pE(v7U}!-XjGnt)N3vvge397Qv0Y^ygUEr8kE#+aA2qM(*H5GrEqZ7aEsyng#UGe z{}q;6`i^G*xySdv6ee(Vm46R1q)?Lhtd6?7Rq}7m=H4N!zCWg_$f$fC|5|?E&U{-N zS48>qJmc#*=Bs#YvKcwwf2l9hUsieHRb4w{07UgIlk}99N)JNa8hZdp^<7i_#wxEb zKYmfr1Z)f)tr8u5dvkg?Tn~SOs$9*BW+*Bz2CbV{_5D@-=FDiY`v35SgMvzimS(py zHwdj88K@dT{&o{O@}t3-A10`u3_NJu&^jstDD5&YYrmC( zf~CPDy0P@%I1PqCr(Wd`Yub@E)?|@QU_pEZU>@UBAyteh3fIsuCZbhx&7k`0 zXcO5M@`*HF{)@ram4EH@aZnG&fO`9}lX*xsm=MDi!SL#Kde_podW0z?lh6gIY2AtI z&B#zq!i8%7!rhQ{(*z|KJwEbGcJ1z$bR|I`cdj-@S z{$UVM6d*2L?6Tyw{i@cPW}OF!SjZ>*inSQf+60wJbqy!QT=e68YUNQr7#Mb0>b-NrYomr7A4@zLkK*Ny=4zKRqT^cQ4Lr8>7oD;~#s^XU^ zQBVyu)$a~v~TJSF; zVgm|F!Bxlx1ek38Ml-S8>!roZZq{QubwgiE=mUn>U1FQ_Q;4^IL2?aa4QGLeWI}6> zKLD95SLAh;2~Gep9$Z9vZ1M|c;+7FL{ZI5EWHNDVKT4~T{uOJL2GH`acT;_TaQs*i zaqRXXdAwSP#jPI&$>qJ>>WAvRR?P0g`@{}_mxU%?vuO9t@F^Oddg(S~fBAj5=4F2M7RyciY_ zRcm=r)Eyylxq2ju0bvlaTjZhoUp6+`XaVT;o^_y+j4f9A1LL)D{Dg zTKyKC$N|EASA-*x9*xsq6OYw#=tsAS=s!~l?l$Jw!5bD3WSaZS-~zg=#nCK772&gKfW3SH-(5Y48XV_U zP08S{Ke%8Iic+mb8yMr{4Fp}KWgF4%lqn8nl@wtu>gYqd* zxu9Lgequ>4_d5WY=RV>qW6MJ#XH4ZKNa2B6B>~G{>-w7oIuQOi3y~Q#49`y!VuAn_ z03cE^1HgC+yTOSkYt;bB;I1X=`Ee9$ryTqo0AKO60i~VqX2GOQ7u9}ldj>ZXK)h+9 z6i6Td;qt)T+>rYxebE7wH>;!QDN5WqidSfGOKJW=E2wNtoPpqvs0Acs+XZNjqBIcy z9xpHyG-Nq2gp;e@NI2o)*UTbL#tci5OkfWFlM?{xvE--&ww0H6QwI={7=jZTv%|89@1y!i{!k{fE){%Ek{k4JB&*WCc7o zEmuZQmagfIfS*UpO>KBsx0v(rX$N+0sJ1}7I-ru-#2>93$*zXZQc9lk);%;2IEX9Y zYyA9Z?UtT-Z@`Db*6O(Fx2m;J^*!WwNMu?9;;6pyN8&!V(V`O9vbBL)oE(8`0>X>{ zmhNdUpaOOiekI!96SNcDw@m?10=wl7(f3E-9KEFKAB-uU`{*M;akL}bLure=rEYRh zV6dx0ts7A?3QE-bDRPIzk&M16#!&ndj)mQ<5(vXCORQj}xHnR%LJsKHOo6$_ouCXS z%a2&a=H)EgDQy~oSZC6R16m|V6sLqAjS7d$^<2ZK&6b1jz;Z7Ewq(8x5)woh%AG0O zm?mL1?E$TX*;bOIuuP2M<-9;G3f!2&bQEWVA1pu6ZU%1MgL|}+xQ$a8LIj}?u1H-) z9T2gTmskfKWe9VOPC1yTr-WXu7%V|%YCBMrwkrh*hkKMhNnUlNuK)h>hfLmL7=j2Q zNZN%?fG2PYyCM1??X5lF z96OYTbn0O}$8!8kmyo&VB5Tb&Y#i6A_6Vn(Zpjy6ze&{)YO|I>O@0rPTAapb)mcUA z3eH*E!J57oz=$-*|Cw8|fYIi`Am4v`cq-wkYN`)Vn2cgZ;soQ&`nIkE*5Yq}vdS{X zpT4*d$d+}Lv80ehS^pRjhSPqASyU$3$Krf}s34w~Y3}rGElv)f*N3&{t$H7!cb>Cm zyYA1?+R|EuP0C%OrJe*JWjW?o!6z{0&$+9uP^4~!&(r0(S&HWHXHO=^AbAKKo5{FO zZQ`Sh-EOUf01ng<M2>rv}PAm^7cc{w@F3_ABdbA&01z(G8tfxK_0R=gvWvy3w48c8)1KVzkzj} z0OhTAs>2eumSMaogy+SsEBLMV5e?;NV3DlFB52zCYpW~W5|+vupMOGP5Hf02nM6TQ zIURHZLf)xT_~#!*N4Vo0t8iEKpQmYiP2l0+Dh0umyvzbCHI|@8D4s1g{(S*saZIX~ zo3@{;?H|`2gLfD0WE6NAg34lmRVk6fJr@vw_a};Zc4}WR3>y0d$I34b{1}f;m$&@^ zKc@@r{p6_?47aJ8f`_q`ie-W>Xr@fS~CyzjX@UR^v&^v_sK@LwmAgHWttkzZ`O zb_u_XzqBmbvU9eK2o!MNj5mmSbO=AB?70a2%n9nl3G-^E;liX>*gAL?E{Y90ikt5j7;U;H7pMO)!+K47Ai1cl%%9jhTOr6>KC(xt`O zIFkq`f{bU0C4Mp3;B(SWI=lSi3RUAyp66&5WA3x)Dp^oQDO87rd!O*x806&N5VRiN z3}95q_6oyziWqZJTLr*S>!NoovFI7>qw4Bku(PnhVCcrk#RK& z=0B@3c(qzaM4iV4?pyozh+XTlDAhnCnd@-x(})ZUr`_q&412_#&rX;`{)%6Zx)e*- z9u`h!z+!NeS#ZH*Uu%@va*d$mSqQg6zMb9h`UDS?(9`(nmfJ- ziujA#)p^}g_W9U%MCMwT4kiVv{BtXEQ#()@X)92b=^!!I?o@ToEG(328~gcw(UAYZ ziX>QX*p!ZAFp2!wnl0~8D*_5_r2a7wC*uZ_bO-18eu#)HT!XyfM~VX3pSgw~`eA|Q zJ)GCZv@o(^u4cxxO4;ftK^-VvU{J0lwzOW^{DwKdw@+w;qz)LTMpWrIz*3Lwns)00 z#S-o1HdM7m!&)JDHK1z(<(Lg}qO)k&O?r4A$f?tAh51oy5uE-MPEitm@ehmAxe<{- z|A5S_nLBY}jpR(sq2T@9l(MwavGd!4x8xZo(Y<8{k)oP{v!;=nHh6+qMLRn*RNG~h zur=;b0^54VfI`2(sM6D72i+k39_)I+mu#mX0*>FEoHq85lIOJz zXKVuhP2l)k7UM3nz2Rswquao-p!26Y5`ttraVZBiZ*YXRC|G2T=K|G{XCjF zKn;|+$B4p))&%ZUMuSvB!AWKh7@zk)D-$YnDAoacwML2`pc<6^RTM-`J_ZV{T{k9N z1Qj(5NzVvhE+=0b@g@`CjIXuUTu3`^Ph+MBV*M{VoU@s@&&kx)N|#KXJ6Ku~2Dw|y}2tHMD>B3xe;Eh~vGm~v>b6GMlzhsHsUJTFg)5=9I>d#-a{TJ(&SvY=- z!AW@W*NZkJS_vFY*3Y)J7MZ%boWm6ak;>3+hKyF>;EM4R+!(zVdK+n^zvPz%8wHzI zR_w(O$A8567J@Bfc2QgUX#&}G6zW(YjXaCrk(gO(O<`weh?vXllpWlG7wg61*e(;o zO#HI23TgQv0;5r-J&eW0jB%<(6>BY%VM$KCL5E)E zZ~U%pXD@DBNUC^Bf=ijg$}$`|)!4VEAY2Yd0nFO63@H3<@!QGjK#;PFhl6Kbv7;@B z2)z{DVMt{)A`zQ2ah2pH19d4~HaYb}$GbNsxCLm1H>g^31e47ohB-#_BdU+2V;=%Fw`~gZdq8G-3k>6I zcW2C$MNo1Q^>HS^GvWJn2$`OpW_vD?NPgxp0UL9wxAfuoN$KGl%3q1igY`4~z8(B< zuTF~#|8msYUzh1W@l4LeVfG`%`Gc+G+Ku9mOg}rT@Uwz9cC1M+&L(6k8eynHKtT=& z3?fq+s3}8?^CZyqWhQ@wWvJGe*nBacyR>iYoUL3tKRKTrn>T}FDGHwszB>r~YB30* ziNA|G46Cw}BNzX$#u$o%6nr4_tPNm{E`r!dN93-LdwVB3x{ivRX2tTWrh zS#~m$@#jtYZl@xkgc#peO1u%oKq0jdXUcc98BHU0tHnh0eI@ickJT>XnI#p@VLPW_ z0n^eX`e-*yGDo}~tWCtW5cllNlbt0z!|*lDOEZpOxqjI-1Q}^jvi=~aBwQ(CnIN4H zU*HFcq5pPY=9ja!Bii{AUP4NgTj@i{>4Q|WJvxrV#1jQHF%QP66}ym1KFpT)DNf68cqtb)eo2u&l}8@SR_8er;t$sBelX-UeI9$*COM@Z5Z zbN2!Z1k-`6PfMLFR9omgwZxzYwF@gw0*)P^2-pJO!qWo_gT?oPUnzzQUV?5` z_jnOC3=m&tE^Q*~~?B<=8RzJ02TICx430Kg}Kkx0XrC(2}9a0LiT3FmA- zKCn6+`+G0Mmx*K{7W%Z8HS=t1hP}wm#z}+1Oc6}U;eag zPU5G@OTu9j`LjO^TpS5@OBFu9W74$#Yb`kboG4f!ol$cv^Co@lEJbL<6C7R((YMno zg_hlFrvl`U_|7pkv1bs~8X!8jtDbh2))c@JMNcYz`{+Tq5GvcEaW)pxb0~-LVd5lnD%-tB;E}=1D^Ya0!1XdwN=P7<4GboaDs{7 zp_i*IL`b)p;vPbRVL^XtQ--x`IIr(_32f5-+7ge5v4MO!Z7t3e@Ao}B+m+u<{4d}_ z+L=kV!`Lq3RkL`c%=-&rg)vwrx<=ttSa1%j6f1PB>?CX!zd2>5C^&Bs#iC}bA}q1s zYqci*@(?ku>Vv4h5t8Ki9UjhlZ$aU&)GXZ||0~6%0AqKz6FoGd9@#dq$+v*Qomx^zqB$TV}(KW(x_S4)DE-tG4=KS|7NLz z{XQWh@D~LDViAC|fT#eV08m~V))Wa6zV6cec!_{(xG*!@cPdQV8J{se$ah@RDU$p4 zci>VUUvH{giqH0EsW<9RwFZ!92qCr|UGU`Ymw>IRPvlJr@vYJKzqh2(-uQ2NcY3Wk zyYGdp99v&_o=QFe!`04Ttw%5u`1gDRUvVGxFBP9>3s;YPk9toZeLiJAjt}j}XYXRU zIV&+6^uOhvecE&{`C5IN-pgMApN*epUvf=ypK@k$H$Kli0o_SoeP4SQlwb8vRyzf6 zdLKTU2$o-8UvHf~e9!K_K3`{QclhT%dwgBqy`RfoxHnVxJ{uh;=lD&B&}UXp<1br# zJl$U$Usip3tM7sz0UdOJt|qthkLr&vG4B}vO0mhk~ zfzL7DuKT?A)%W@@V8(9~IO%7Q>mct;Ku!Lu$+=2V-#036L}?~Lrt6UavB0u;9B8yDH~N9rHn;7|M~Tz5Y^F( zB$9g`5k&S2Yv_MkV;^!C!J<9}NTn+Ppc35}tw;59v3C4G6n^`F$TXkpjlGnMXh$Lo z<2bbCzxN-{GDKHIpzSW4w1T33(Dmu`r?s)GW!gZ#1aY15t({hLj!X29Q%hEIjHlPP zyZ@jvq+~I9jn15kYz=vq*G5n>@K_ zHf~2XJ@O>$|LZ~A=6I}9=pHo;V|WJszz65lBSsJF5Ana5t*!Pvt(@&$1;y;7Y^+!= zmu>uvpSa9Ys8~rQ@IFcg_*(XBEbRSH5Ta{Pt=J^2nh)c?yRF9X>p6FukYXr##EmpV zgD}?e&>$52kX097Q|qKCW>;qsPX8~6I2SoQOMB1z zI3uS*$Fjan6WM3knt9trNgSjCj^F|4rbma-v5IY-l5?V zgd~Vto1JI>vGDiw?UX1EvDwt7ypM#S@rozSIjRhHn0Ro4((Jn};f*nlabwSmgbe*q zoAkSQL%*5hq?i9qhQvbpm2gY4gxk^8^kMp>A7|R0**x+!Oi#kmt7Go24DWOyL1_lq7)@7?6{vU4t}^ z1U+c~jkvfMM29^P3}C8bFUu1UUBtKm;IuF8RT32i@!n@Xi0w~?h5Z{ykvgHDpxT0@ zP;P(!JBKMSO53zG;YV6HMHZLigR}3SN;-K?#)l}fdVKZx9!6$uD7bJLqF!Vn%bP=@ z%!TxsYUX6=Yg$tGcsN5y%@lr5Rn&~8+!b+p`Yi7L?msD)5(EAmP%!5rikC1WO63JM zlgYSH21TQ_+p^3hD6{f@Qvm{#(t27gg`}p1IzMg}eK8oEGrw$zz>q!3{JaV*cz*b# zxEPZ*Z%nD++YjwtJwe}8Vc@#dCb+M{#Qn%1@}&5;&4|?z`=uY(Z^{1c!2i&zXXRBE zuPDN+Z*c{UQ^l6_cYyOav-u5c*6w}awth!dKPz+yS50cy52`Qi2bwwLNkRp%Sq~=2 z1-CK~ZRp&Oo*!Etlfw1F;zd$hD}w?{7*P->JpJ!ci1AonKn?vEFP`Q)rBL8__k#_PQ$HKAK$vyf#$rkX<2LJTt95xl73Q z$o?-04sI?tQDU4kLdBog5imQ1(GYHhDLJx zM0&8>%yc7n^h9+rBey zS5_Qy0Um#f_bz)K*BK%NB{z}nbqr`w&M&?L%bNqLLX`WV21|EBnYf`!mjxElQF44v z7P)#t<1Qh!wUUBc>qtD&4Yhr_KJX->)Pc`+C2;e`X}((+NYBaHWOz<{cf3HZk?!BM zDlQNCgTuJWyD-px5Y(JKzvPC#ixB?I@>h_B0=5>lLh&35?Hm#GfI8Z$)?GG5IrYtV zbK`Sl8e-jw#~xWaFYTjP%|V~zEC@n-?G!!X4aWM>?kb<{aMD2`xdu%Q=mp^#KMefl zZtE++C(OdFH_>ooHbOWb93=h(WZ1k7U5cRb>u~}56%lzfI(;)rhGqEHS8Xmaq0@9# zyiU{Z*mm&`^rTy@ii_p~;fhdB`T^O$XOz+Zwx`kz?opuHFCSO_@TE1ltE-=1qqD8I zqp3bq&BG&vm^;_3Y3x_g;*G5U0y=u$W!a%Og*X|b61j85FiY@KXA$zIf=Z<72NC>$ z5csC2r3!UP<#wO0KYU%<0U24-Gq9r=)PgyoapP24S6A{#-`*X4?rMQHNL&`Fyweh> zr0pz+0o&ZmJMQBo1iLg!jn|BzsRK6O!8?&eXplyeFq(aUfu#n8()43ef6q=f<-fep zx4%*{49jzEo8mZ~pt9J?;T>N2!8U*v5}J|E;yb%IcWse8;B$PwD)qS*v}DY48xIRC z2*MuOCR+~%jX{C0@Gm-LjYhfyc$WD;@?|W-lb@O;((Y>fm-%dg1Y3(3jk#8=fit;4J<{ItKOz35!LRY3EIV!@y znkuX3V=83oR+E?eTi50n(UL8kz@Hhc?;s+*t8~x~m&Hwy^2&?~zU?6#2HtL=!jGZe zVLKaG(Oo!s`6L}$v5pZN;zt)=o$d@iz01==-oF)^7u`8ZoLYm;^ECs9g(X1rfz?T5 zbkD)ck5-+jGv{tPV#zpqBV~k_Sg2vPdkiFihiCndbL8n>_fCD(y#7%}rAV@Q$vW)F z#uzA+W|zjb)A`(CV2*(T5iy8>iu&+?DtfH^C5Tgvg)rqog?_=uHDK3EPHyl&Y7(!x z)=mux53SZ?CLf8aQjYlFwH=7?TJi-k?_m}cz-o4-tGp!Qb+SUTYhgZruvw$bJ)dZx zxu+0QqvA#{_FnDb{Z@H_(V!zOIMZM7143+ z)Kl1}A)-_?Pf>Sb2T@>8>NX2CWnGzx_U#y5IKn`{V$xN03@Jhe6EI5F{m;q#Dgnb* zNA@6zpsI}S*;8L59laM-_x%oy;gb5kTehM=&&9d-mnbZv<8|~z`>ll{eLWTf|8(!x z?dm#}*suELo}Mm*O@T5v7ggioQuSKe&(N4Ff$tD4WXPuG6h&v7&deklj(hmFU>*D> zDSa|e@AFTW$X3bE_GVu!4He9J#EsGowc5%nnK`|kS#^}@y(TqIz*4r9ilE2Xc701M zt~QDNkzGFmT=L=+wK5_KMn3Y@>gS2^YF7kV69MOi- z2!X7(!U*g&(Fam80mR63=C|WSO$3fq_Uhbyxt-JBCp~ISpkVtvi!=U@s}X|WbeO$T8#>}1 zRGvPv9Vk*pRsJ2-|08K=+aO#N85X>bpu|NvvsYKyKt(WU4QVmw^YtVBTLiDZtVMbk z(n-dAAr&cxf72C6bXnzfhyIs@7Md^%_8%lcE~#@>68Ab(72LK8kEk(ASW&G#qJo`i zSk!%-13B(}r%kLs5NY#kA}uk=xBQQ|wy!Tot@a9xG)bPD4d80ee7h_Sq?GH$?+d8= zr@gW_SGp{wLGX%Wss1Lr#lDpY&7uC5Lk#Ffg2cRV#G%!TY_2A;dh?85l@u zm!yu&|B(?*!B4$v+!TWF?`aGs*AjAHoMWkf!~37SNd%AYA07THlTwoYmk*4Y&{`n< zZ_SKWjt9W2`-K>gSDh?6k@y)L>+Qc0{2KWZ^g9Wl9x@n2n>=Vxlzv)9azqDc?)qTrGYEMcan;^X`{2k*~$7>e!f&Pl*X(_gr1<*2#*v z-TiqX+pCKr_6HXw+-FvnY_4vtU*Dg(B}C$6mY8wM_t@`IGCQ2}EG7#%SuA9Orszo# zv6s2n6^=sE$+ME70rzg{S@wHz@BG&;r8|SHH}``5t_v%(1cE@amz2#h`RLd~l>{iH zdd{DmciL*lvGV zB~oF;!+KAvAuTFltR`?UY&7aqkGj(EdL!%c;n*Zbg#+bZ+Ddq7W%cR9=MTTkJ}y+e zPdOqQM%UIBeV}`F9~lwo-O_$$o7ogp5y$gZ;pj&@pQU*bwPFT3Zaux zS#RB1Y*@%AIFFxRW2lrQJ(4~n46)gKyd~TEfLsGh{V&_r}(epxB8U}3a~w_bz9C)i}55ff8_v;i)GF$Z;jx9iI>CZ>1zT= zEzw_b)tdu4?Wq~I<)Vm7))SNi!~2u<4S8PT*XEmf-o2d#1E|gPxd*jlw}p{UG0M8F z66-lfLzFNugTue#HmiU$=s&Ilp0cz98s2Rb^tjD`ct0N1PFN?DDMBfL!e$<+MD&yz z^Ot(%J}3H$H@IIzI^Th0H?>+CrM(M6JB{1DM`x8;ITKJY^-o%$kGc4Ubge4o%tOO#a2p-;H@4nF?1|7EX-{^2| z>_i$SDF;p=hVJ(8jr&VogaOT&z~d2}N;Z4@&#P$x-;DHHF9V~18MJVq{_GPH2M6aQ z5DN3oq|ny;OtFP%G!;gUC1}h5caI56U*w7gd_^Rm-rVflTs5%PY70{FWL zNL22W9fx<#mMOWXu?~4?3Q%7qP>b3Jj3OawtxeRm)t@=yHnw4n!2}D9TI(6`YVw3? zzD`ljUr?mmj>8{*xhsu%@)8PmI7e3<@RKq%Zjc=Mw{e6w z9zSO4F+tcFkJdtWJ{2D{A3yObQIUVmMb_8$_|qIhpVWxiWT&78i4_E2?_@fK^o0!e z*#_w5hJ@)tAMtr~xYT`S?rp*r5=oumDP#(ArraZMQ36rkkZE|Gq=q5RcPyM~4Hu;CEP)(lc4T*$0BL_p z@NQ7;S8?ccuUF4XC>T+Tp43rhY(ScY?4|OFFgB`w>);7VE+APgmxO)l(mQEU4hcqL z$=Jsv9x@{#)mq_lgq891W#18h$m`|!6V$(L^!nq4+j7-U(XsEz>y8=2fSl9=n(ARS zI7=HLRrnwneu+JA1eSW&lZZh%mp?u^=-fdftRp=Jl`4%kk$p&57`H4PgidmZj)X5m zn4fj@rHV=-MK)gmUVs@-5KJjDAAh$XBdM8C!pyhZNtx+9ROHg_XzQ|}M1Gs{C~~;a z)qI;SK<_QTku9FSi=9-k>wfHSOecnpQI%_vyJu*L?MUu#!zK)N2cUOYVXj8V4IntA zqb%9+6xl({42A+#Ks*4Ga)8U|;*q}G&5V(f;c_%|m1+yob8AkcyTICZd82k>G(~;( zMc0}^#7I%+8jJimHaL(f65|3md&v*=7IO9F;8vE@yK$Wzuf4Dwuw@+<)8c=tPGbV@ zqi$NbPmWe7LZ#8FOC<^COW%*>#;PPIC`BR`5l*Ozd+CzoGkKTeOwe2=T1?!{OOQVM ztAj!R1fQ`FR|_oT(l1VOZ~2WQL5=$2;!-!t%^)oBVqWI2?k$S$?&-E>1$FS*A4ie` zjD^fF%3UWy;(Ai{6tq=ODCgd0LU*1>mT${EqeJR&GpOXL`q~UZ{43lZ2SaJ}}4Bg5EAC z&4aPohT=zkt~)KB`+INF(I zhD0Enid@4NK#9@);cc?zOL zEOoM~uk`mBeu}v{m?3XAN~2ol2_l&?Yj)Zs3NZla=vQRZ?ezo5ur6nlwfD!*8#jk) zv0Q7Vk*>hBkBeJbnzyq+y-`xwJk`I#f+_*~bS~>S^08~4^a$)9$Z;IF?y5g1BhnN^ zLLr(Hmy*elyB&UiVk#sK$16hjW9qwM{n`@W_G~>oykW;*nen$)*b&q7eh$@Y-vM|` zt%+k(0&nE6G*e!|4k#2aehus@{UCSEDuXCNaM7>#vz?C>r z5pD57kWxU`<3XY|VhMjboY^Z6MrTlYME61(XD~lZF8y;#ev!bo_pVu)hY^U;%Tqji zSDAjYa6(Z2<_?D-Flu6r7eN-qG^APe`4)`p`Io?ne2lxp&BD3k`F=EpIU`=vRA)Nat!j5>V?K6qW?eVO}RZ?*e%s zd>5YvF0$@rqX|QxFee|a1Lz9jp_0!s{MHxtnlkzrja*(53d20KQ!V;#oL<#bo3hmd z=nT@p3k!RFMoqrnXY0;_`7x)6;q_?Lw96SO_eP@8X>q1Ji-8YzO;_!(6IjS>n1C-; z(OvSuZ{`jKxPl;ff8}K>n4w;bh<@swY#*`#6}Q+ET@MI*oPUGj%n{s_?mbl(D%LI|*S6 zmLaTG+y3HO4!i#_|G{yr7U@p`51lz@HCSwT?G+LCx-FAe&I;!I=GsAkem8R3J349C{~$M4MzJQ%cIlVw6>I&{v6^||6Ow*4&ll-o{VdQCru4e_c<5@n(i z8Qu;fG#Ssf`>WG<)X;$Ifx-fj4yq1AU_46@Aqbu^VgFQxva4<0D4L;w#{+b70w z007uL(~(lcIeR9rkkVL2+9oJ19%kZcL@mxd?azMZ{>!7mS)*tdd1*2gQ(gJ!9&6Dm z?$l>>h)c|lR=jZau;wbhs3IZRbATB|%*&n{tZ2|474Q;X_mXKkq`cBLaV~$=hu4lk zbVJ4ItcXgv#wK)`eRTKND_%$F@kGE+Nvvv3*a;0E-!yyE0dJ5A+^eoj~!s!o#FZ->rv)K$LR)vs^gMPN%+!5_AWa zpzVf^e$MYF<1^{=8hQyuCu0Y4^#yF1g_`dLZbLWn7yycGK9grdSAmetMui5Xz2Y7?V2B6g2ilszzTw^xf`vuwGKgY(r*p z1*avz@3o4?1le0ZfJ3sou^eSgn0UCuj8_w0gWscYgvRhqI}byLUE7ho*%QgJ9gbNx zUBU;VpNeez7c2mFM>)2^mmm!cBHbF|NpdGIT5Kas#zs^;T9c#{$`_DnQy+#UqkAB1(uIkelt7}yMG|1x5 zio-tc?&9oTry^hi);(ks$r8K7x z6v(UbsJ}Q0F3YM3$r_^O z)j39PP6Rw}{kGdB?QrxK%Gor8{~Y67dqKPh1%5QIe$a=&EAQ(pRhdO zMz5YLk+0At&bH`GXE7&{sA{Be4$&kL*)a<@p9wIyqHjysym%^oRftyXSgE|%0QH_yUH14Dmuu356`k>rl0g~ z6pnjg+dOmTl2|Y!o#rZHI-Dn8kEi-=eC$?82uN0t=ETp=!{3OBQ*9dh%yw>T7EBq3 zo_*7Z%V>yBGG9f~0)7@^JgzaaR4za_3OCR7dPE6btE&DJ0X3um^x6R&aN=eUa%~fa z?Dr8AOx)1w2eQ>0%NOC2K~b^+JmDnR&!##zI*-#+*aB}RVe^c1O+8XOjbN_%q4*BR zdc1ASEV9r)&&0N60RG$Fl!XhCP;oWHQqaegQw?oWz)~lN=TLxaeJ{sv_Q{R~q!UjO z@Vg;Fa$Ctd8Pb=@%Gf-;)hx$XR|H@0&F zv3!M6)^-l;<}*>4=iOe3a)qjmb?9&HKJm4(=oKIcMZ9XR3A4dIBUs3?M?1GvaEB%Z z=W?JaVJt&ShAbIcaSj2hEX0DNjSSc4wm)`R5n3<~wt5S&%+?3OuEu1qGhZa5lq@fZ z@I>%|&4z7qsh|6+3#lvU)5qLY_cQ`Kr(97u+fbMrARp%PbRA6JG{K2jo$KB#O$2=;_~vVH!t9lO)^_ZSrWuTe_XoCO#i`@^X)8p8W*bep%5*n=_7GSB#Xoz%xj5Xc=EpxN`1VT$Fsn6WpN=I| zx0AAddxh1rY3e#xpKnXQI7bw3LiF6CvfZEkmJ3N5K3OL04aaZx#M8hffxc6{p?USU zHq8B!f(C;1X+%+3^6MJm`*5q^W2KOmM~74vHMBhCfAZ#(&P6;WBbIN-n19h0xA`4+ z2|rPbpsQ)_+ztPS|H_;z3YoUe!SR@zjc~_9c5%Y2ndOLwgW6d0w%|p4%y#N5N z#X2R!u$O@{?4+`95>JYhnP^hRg-*Oz=CGJilht}U2{`@0voG^RkU7JUxgbNwY2mQV z8sU2Js?KK(CUA932a>q& z+JoqQ;-IkCOZ_zr4iQb{fG4z{gie1=c?wau{6`7G!pb{t&I z5PXz9t*%`+eky-QHv$skJ~7jcR#Heuc-JOA!{$puIRzJaP(&D59D$*#{BTfP= zh@?-v6SRF{PFFo%VD~2gjhHegOe(B0iFbZSVu!1n)$Naj?Cv9yteeI)nriMp0zawEDVwr= z`Ooo!##HfZLZA_QXW%SV1ndYvxRXicu}{_QFxG0g4#k;IdN~!Cr$qiH8p+x%O3$(w zZM&KcG@s>guZ>G#ORwl(XxBxhLhe>rPVJ%vhKkxHW!p)QcLj&PuL~~ ziS{0(3M{dae`R;2o{T~oX})~Me^ig70wO6>2OkW!##*j{0(*m+F)eNLR^TWg0=Vcs zmZ!qQ)9ZG5s#=?QONSDeGr6qpe<)Z|dyO3>AuAFjLbj0IdoT#jtyum%Z_5c=#+OrK z%y;wwG%-`N7QpGr5Be`aRXo?gNRQJwWuI5Lao{37viVMd-d|-JcuN2y8FMN#kf&z5 zEB78AXy@&ru}lj6#18=)$!a-qxX$ZaO1^J&tio623RG*~zY}Bv`Q1wPd%C+?s?#c; zd)2}vR~QDxSv}2sua!Gk=D{U%)w29A5R#T!KN^Xc=n298FsY6mYu%pjHXX=L5Qzw< zR&f5{S%#=r5tpELy(!=4r-+=zRj5H^I1>A(X(u)239ByYCSG@ZjLD(Q$!5+7y}E@h z5NO=MV2_f^Vxrxe{>Fv>O-=V+*<;Z@M~k00XQ{AJ5(u=Pu>;A2G@5-adYzYirtTE% ze8U$Bq+CXu^S+Vt{Y5HhO`lOQJ7ziC?mMA~MnwU4J|lFs9<%{JSLEG37fnmw79#;4 z#_k_CT`q4P%F!E`b5qwQ!Vi@AQn6qUxef3lQAs7akQ!wK>;j6>wgx&JJAFyu@qCsh z7qf2Hc{IpXjm8pv5y)xfSB5TxMC=y*xZ>qL|5xkg+!qPMM&WFmJ7KHM zcAIV6Ha6Rw+HBjly-lvoTU(oFvW@ro5byoh`3U#PIE$5K5tm zgO~r_1YJCuYKyXw|K>WQ2f;S}^Q6%2vPe$Uwc+kb*JG`>TYQ@Gb)4qU0#lsWLjvIH z<0~hf$yO?dQ*qA$aT5}}wMx%BVwNP%U}MCVg^9vx`JlmN*x!{+s5J7gB@%8T!7tkb zYnKgJFk}yB7J|x7F5Lqw7yH|$u*8E~=3*6jH>GcMQ#`HX0xpWhw&l#hl+nu(Pc?t^ zc+$z1wV;in`BP&yv%^bl5q>3TNG+h4lDp(^AbcG;C8Xp@PPnkOT%Dy4yoi$j*HR)E z{`xS!Sj7wO{IRRVx=t9kll?q0h`Jxji!*2x*>Ux;0{e!>9Nf9p6>E}>Zjxer^S$yG zFyDzOXx7uC=yOwr*P(jTN3gipA+#S*T3;$;O;@o_DS?H1^+BuPu}(Etw74pequ;~m z_c!o;P8Wh1%ZgGIW*%7o5(WgOxv|(jB{jvNXG|+}1BmC$g9*tnXyHtolD~dL;QL>{ z5~%nmDz+G&j2YXfskB8i70rr2i}q@*Z7#)V*%OL#Upf-pbA$u!B7}bqYmHVxsH}4| z6RfFXW(HMP7wqimFSx%$X^cX1ECj4`|CW7{n&p!k47mG^9%~gguo!J6#hC}Npwo&i zK{R?uS{&}8{_#TI;jzr{Qr<{H&=Xv{Oy>)HbQrr+R$%c^3H-D$i{Biu{JY&mRFu-yHc&}!x(=(b`HJg-ftMQ<&G>s8Zne&;Zw zul{Tp7>h+kZ(BM{{g40tp1W`+m?*=4a2E#$m`&6Q|b@zg~w;VT%JWB{3e$$=P%TAPxu{)>Q_Dzb%MZ*~h?N0CIx zb^5pJ!&`Sc1VE4Ytwsz(6CPZLyn~IN%yuwi@^f~V!lhK4qX~+tFzW|nwDEuLkcDY< zHA_Fw8(o-Ghuy2IR;^iYQ2u8SFiiGN!nk8OH~`caI%05G zG+ntw`3S@Y-zPlgaR;gQ@c_4NNBE_PAb<{(CZ{Gyvh~i~wGWLII*pre`K%4Gt6=+5 zYf??hROtK!*x;wKQuBm%~|fqBW*mV4>-npoT4avhY%K8y?#z^9zFM5zNvYLG7U$VAA{M^>(V+s&yZR| z%M${|4$anKCiISxI*@3E&SsT+ic6v_oMhiP4caZ&>ZvnFo&+hSGv*eFGw%W% zj(tQ3k!LY@)#CBhd}i?OO&p3pc!zW*OeD9*L`Rv*&OWXYw!%iCTr{G9@gCoF_@jI% zLHe)Rf32L&bN}6*IS^UW9T4{X&m(?i#Szg~Jrl1(OyZk$Ss$Od`sox>Ig-BO^*8nC zf3)<3S>6e6%rW&<;#@$n}7AabY_B)6ZXJIevmUuC>0 z)`?odzATkb2^-1C9S2*KBz-$ziA;#_TCFrZlocqtJk$n5Z7>Et+#`kBFEVcQ9dkQkX!N!fO)Gy3bRnKonmnO;5 zY$j(~7Ac3_{JT8lI-|ea6Ri3i^~+}w@KFR~XT==(i;nR}rE6maE=g4lg6EubBP&kT z`#IgU!3f!c8ZE=8W*6SygU6lPTq{H1%3n@4urBsVF!UmvLToI=L%MOw$Y#p>dJ~`G^g87kE=aSJ+8ocQ(O+~1Yt^Y9Qh4c_!(x7r6TTa{BS8;G+QG1 z1!NgFxYxmN<0_Y&?I5k)OEli9K2D$;Q>hTer5CjJEO+R}C%}i`V-$qX+Z!m8s+j?m z*}6Z&3iH>i4j*cFP_ctPYjOT#*xmT@t8IUh_r|+RKY^j?VhL{iFVYQs*>eL*dv<)q$d3LT1mgO zDk~+|UK6l61f;iQ<=lB&kAmng2{Egl_LfaQNo$j{xbMXyAy=OUmEzbeoLq%s#A3mV z#I7g6`Dg6a!hc~&QRRAD!SXCn($Sp8FSdW>FEr_~z8-LtE%q@uS8R_{@TQn=Bz|Yr*U3{@Q3E@l z0Dl~p%p)5P#&}@-Epkv7ZCmN!ulA5QIQGd0hWj)Gd;gr#I$)Hrcjb$Z;~wi6D6<7m zY+QtL8kr4*ZFXNZjeF*gXpM&O?qv^@quIqQRmJCXjhFz);Ma9^Zq29W4^nTu6Hpq5SCoK zhLS+pL6n(7XHG@bwja7VLr+y^1?s$n3Cu^p`%YG_KOchHhcq{`$5?-wQ3LG`Y3XMF z?nHQo5R+=$pb+Lv4S2wO&-s(hB1CO%MV{^Pea{cIOT(+xnkbo0ug9ngwzj|(qf-8~ zsL-AN4(ilXEsAWDE2-mW-fsVpcjmINSt6z#LO{_r{l6k^PBsS>UJY-qV8M|p5`*)k z+q)ZWSeIi2-?1foEsP@Bw9o|(=tF97p2^5|*1bH|4_=WQp{*oPP``o_%%3mU-Tk3g zZwV*11P?9+L+4cxV~ia05V@1q_!_rOb!TEj*uI0*rOY}5W-FNc`x0}@i_;app-u&i zO`b!f?Yqr03>uz-Dc~>{LKX#NZXl$amon z?v_>y?ZWt-U8DR3n9rcaOU80BDClPdX0xS}+6A69tD6Ry!cLgr?6EX7WwiXSI*rYt z=Cyndk2r;436w-F*?RSG#zyS6WYSh;6oJJK=_? zz87Jd0bmoDxkhaa5npciM;117oEHUCV9a6Fb00;1vv5R&cTaHk=G-K43mzwr!|XH*uZbFcw1YMReU=ww|o#{A$uR-yFOddWu&1rD90- zXqUmxN`^r58O5LP?6(tqt-GVwsxSbaB@=G&gU4bm>C9h9fNlgiHhjySeno5Ceqs>| zYJye!_6Sx`|JQ+F@|dZR8;1>K7QE`8g3saQ*Yw~{*`TpWIP>2)4b z{mX6bD?Qx6Sf%X_npfZ&XgOE>s1>7A;U&Lryjbst8{Q>lV>C8=P%h*B&e_-u`j#Bh z)mq+NM%|jWw2=e)>Yb)-9K3n1`cNEqt;f49dMIJUE@Iq4PWn2FbKn;1TCoAEi_{(V zbbMvnkC&#Z_s=hgRd)xTd9*?%sl~Pegrl4A zM*7W(Qb(zs)UO7kUgDdi zhswmBylVtagl3m$MlyX`Q2ZYMFnL!69z5f%Xl^=87Ftz&q<+J~@6R_*Uue$_HGkZ3 zdI~vs+(6UEG%IxTMZ)UBr z;WL0FwQ=Nv4Dr=29zeHWPzv1zUR#xKMl$3kWv=|@mG@+f3*BzQNE z*c^4;tbfDVrL6j=25BzHqNTzLn>3M{5~Hh68~%P{p@QhjC&Qt`ZM`me^bw_fFgWCs zG8z5LGrJ!-S6h!R3%SC`$V70GPDZK!9lwo5U@|olqF}<0B?<4?9}-^-K9ll=FnL>1 zB~;3Ua>C2LF|WkGoik&5QCOn#+U7Dcg`1NpL=NFyuWL+vZh2m#tjcNlUzzgKF$36x zfu{Bp>;h!c5n?_8@l-T;K2=cO1m4M4P+GGQNA?#A< zH3>wn;&zBqag+Y8)@w)}irL>8}q8Y%O2m&nw%|wN-pJGdpUO}eHJv$+_?~N zTf=o+f~gkkFD{nU7VU)YTZ9fYY13njw%#H^f%s|m>Bi9^O4|Sqb`yeM!q0SW_~X9A z=0s4XrXr3W4OZw~vqciE$XfTlOuI~f9G#cTT>kw@Zl5GCn6uYicxChVg9egJI?A7w zQ-_)m?v-kVO#(jrBXjoxd-Xej(Sso!pe)9Hj^wN~0FL#?mqkKukquS1fbWo}ty7Zj zk9UN_hplK1!dc!^dm?P1p2z!8lob<|%(4E>N9{cF$+YQT<2%3W1sz$giW>jDDxb*! z3283dOPd=vN+A6!gQidCo@oUh{=qy6R-D|#3_HgZ6{_tjHSM`!j*Ei zeaji)8Gr9Xu(_%fN_U8xg9adpeg(=A9i)7mpt;`YgMPL-sZ(pFvWLJ03T)to66TsR z{Gqcfzg#4BOBQK@6dr|iGH{eh%*OOTBv%oPA|*jFv;MUCqjAX=KscPj{b4l z#?o^;iyG+i@wni<-(VCS&qOUbfy^b{Pp1FhI(uZ9*yE`kKQ)3+9h)fB$!>wJs=AB` zJg1rTa03YqyZ)8l`OYn_AuOfS7()9KCZA24&{cA1tB~I;AUsCmS~h52aL4b`40mfQ z)14~DS*D|2P=W~;{$(8+j`TmFw>AT@B#R;)?yL*lR>Xh{t(PxvtYpJati48(j96_| z#7-%GwV09IHVzjiYVlPUFWI1{_mgV!-nzb{B=|-v9!gS{_no7EL6-J<%v~`ZtUu4< zBkr1u!o%eHP%^s`G$x--nh;3!O(x`Kzyl$a^|qj?hZ&T21!eiVdW(aq@!X%+uOikj z`LNt`(f20%a$f%0K@vUQl+^a$BP=E1F$^PB;K)xyMQAB^qYI1mMG$`>QUY@fLFy?o zOt@=Lg^(f@!TfqYGJDZHK7kPc%iAn49^sXJok-_ zNoHo?t+|iSrmW6q5te`#_S1CT*&LnR3JVL+9a71r)EL8r$e9u#bG(EMudZFs76fj6 zq)8Y~nmz$dEQ|w}uD(%E@?0^#L-`2i4iXeA!W1h)JHK-d5oI!zEZlnPJdW$Gd0c?E zD-Mgh%C|$JZqzxoz2;|~jbC|1|M59+5FA))gzFwgykb~I39#o}kX~JGKotkLjEGyk zTsAUcT`ba&XKEpOMjNjt@tE)8$`x#z+ydD#B>m>5Av0SL@jH2`GgRO9B-YTL9u5k9 z6}qyEKKDE6dqoPGFsI&W@u#XDMkM<>ew{I(4h@cl&!B-^4}#vl#f{uJL{6EGDvhu; zF2ulj(BQ0t+3DnWs~r?V?-oNQW4_wjO^c(QzZAT2{qgVBg2UHpDrgDI{@_NX*Cn1| zwCcOD{lM-zC>VF&aEM$Cmwh2m{M?xuh*3+8VCWYpAw#G!!-tY1g()15ew&u3O&XSZhSsoklc zrLX;A7T!@vL;K>S+NiF(QB+5Z4S|~+{=SG@C~0;8b%tYeV>hg_!$rXY1$D&?Grnnx zog9S@tvr;}tA4FD1+u(AXMpBCIGovdta)?STigo(Zz z-fej2dkf&lJ_)(ux}Gf)r2J`jLkLwP2|H<`RVC;Ut|*|frI&T z2Vn7K%iu&0`3aeWCkvw3>4C({Q&8P^xSKN4}eoY;?zlO*{D4M6olp%XF+dTa$-CYENJ|GFmVSh6g$H;)F$Ns ze$PRUmB4mgIk{gsN@6NyQY( z`abqbEmz)+Qf_9q1u$OP2l#)i7{CK#2*iS1x_4HV^`OF z5+(IQ`t;mlmfp@iQa$+Ak%j>ir|X0^YpekXcYEMzY^gv|J7rR)e!^7<}E_boyFGVAEKaR za_N1vR6)k=#`erM&qucL+2Tme^TLSQ)?GAu%RxcWBC;8_p-2NMW((gjTg|^1qBg(N z%G2}udhoU6a_bsqVw*ILFk;D1aYZQH=d1ewv+Cv7g6&DA>)O5R+oZnRuXPFeRX5sE z7OtbXO>vHgG94bJlq;Wef?i_F$@(yrZEUgnlM1(_*LZm9L3b4q6CvUKRd2gB9p*<( zcmygqlq1W$({P%)J>F=*b3NW(1UG6!tF9bQZD^IVz&Xn+ml*2+lyfgempPLjQ(f>l z6AC#%X41;yuQ_gCwG%^;dXD;?2&0V_#qOj2DcdSTK}8|XU|eyiNExvfAOYTB{!3P zCFp>=!PU|kHQ;xv9Nx>}@JHR-IH58HtF6LGTa9j^;_u^ohhI2EW#7um`b*f(-<7_d z=0FfcWQ#uIN}tnykoY*RgDKmLCkU1%hO?ehm2|0 z+vl7=b83$44pNn%9)tur7SKwcO)!$OO|qvE$&oO%VI+8}pa`dTv9UXJ)!K|e{tLBi z7nD?FqTK}{$2umJud*0Nd8ickOgg7KDzhD8OEG#sCfDoZwHx?O>Y~X&meo{Pv_~Xj z1gt+DB8=5ATyF@(dzyFlDMh00;~ASE*P&2<1;~yWi6No7ybF}`&+ZXIEHW@oUFwVe^pjTP zhK0UEpn#?#zuP54eM#WY%nJ53x_?C6E&vQnr0TI<=s9CSQ^KL~x#YEYu#-F;M>b}s zD-Y|KBE%=xb44#3qURyAP_15q%UX{03VpF$X)5Yku%whmZ(M~PC@j-X6HH)~j#GsJ zkLwHtVrjMe@i85Je=Ii5eK}1ceMZ<7K7oJ*v8OVW(z6FW>*~E#9b4tEw!BvzOf^K& zwo31&*DWC`1c9lLcrjl0&-eAYP{u{lSIj}uGAMEe)v>6_=MgutzUY#HabIhjPp%lQ zgn8c(sP>p;7y(JvgLQS%57A8luRJ}AIunlEpa#B^7Mu;=kNl>&rvHp4Y%f0Oqhk2U(P*vILS`l91#kF@z8hL?DDsz-UC)F(whprh>K5 zqM|GUB8vzLgQ5f!1>As6RInY8DHK5vu^?2WxpT0!eI92!Kfe3E=e+kU-*QeimqXXo zSf>F&kS4;Q@*oHUAO=$Z1bkv^{rM1t-N0q@Jz)w0di(=J$HvBBDueCi3zHeTJ(0TU z=-dmduCDIfuk!o@1w@3|s%VSZBX;vFm9a1Sr5%L>!j{hKN)qOh!DYOb-gMbOZr1#71xmP@o}uvW{lEhX|uUr(Gi7HaK6u zGu(|Cl#)z}jwXBi&`30<-h)Um=Y^`;lll13(NS=;;1Fs@tE0u97FYl6E!SI3;_m0= z7nBvdcz80_H-*A5Od!)Mt7@!;#RNKieaawc@7HCLC=8g)T-z!naM&aY)3_>_N@c?^ z<6eioZn_HW-)!%##-?W3A>s~yPogK=J|JUy)EcI3H@F>6WU;`%c$Q#x!U`y#{(Wmr zZJlXZ5Q)5eqU$6p#*G^a;Kt`eHi^j+{ljzC zX@2HKyLQLyW3afreSJY8;T*1CRtCY*Pm+;!^zp;3wUtf*yF%+OHEb*hq#+Dpc(f;j zvsOCkjs!Gc{^H=F!vuz(k6&QiemF8(q*Oj~@J}5c9(Llzkvuu|)lO1*+PbTu{pyQ# zAUPW2c^n@ULQxo%qsvYB-hO06I;b{kht~gP!Sc&zXleH}+F>iM9%X59(ZB~loArmj z6(GR}MnTmbQ1o*YRb#t`qi70hWP+lN%cC1n)DlHAQIr8l1s~nLWf4W)XVB+>Ml1{d zZ!N|I6rjo zRqFyUZ;a=rrVAG$jjWF+xjPm-y|&=|y!ODfq~}DCkyPzc+K4IC0^wJ{25=@cjvd#5 zf*?a|$;uK66px8lmv514Vft`=|4C#iv)XLi{cdXdwUgYiDWOQWs>Zel!}ZRYj&S%U zFA$pYNOCCr*%H=mIWe)p2NP*THgGt557B71iZ`CE;zFCwO`hzH#0j)oa^FtzAdT-5 z9#nn>tuTQw>M(@Wk^csDwEOHLI^XeV#-c~hykoz{KI-oBiaMgo-I=F1oM+kIwdfX; z;|oQgm6uZpHvWa;r82gYp^9#!Y25#72b+_d{Y+^E?N{+*>il<}B1rMNw|7=fy;i0e zU9a2@nWxQG@@AKs)|j>nU$;bVfrgD(8o z4}GO;gSsS(*3c)wPf_*QK5ammYve}b_%WYzoSZiv3-)J+R5x+$Ch?}qi8Y32;-_-@ zWV-oLnFrs{3LFZEX{llNl_MJ~(%u;`C*FD#l~+ote?0u_=-by%rnSd^2`(xRv(B{m z!}}BL*mZX0TNfQqtL82aDMCeCq%3*GI4{!CL}O+pi0y-1Xq5*DEy-7& zK299F!oUn1uL~pMG~@?Du+eKKh3X6N6SK@UhW1^Y*s#rz(LIuKb6q|Mi8OV%y`ld5`C&rJb!=gP_O^5e=>`Zf!+d*%J%g?g2c7s2VTJ z0Z!C3&R+d{IsaMNV6s zI8M9e#MAtv2h^Z7kH>*Tvl4f_(kaLy7mVj9h$XJWTzc h_tt;E+`3Za&Oh+XZ>&r`u@XEM5aP+9){zCN{{p#G-^>62 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_layouts/dual_column.png b/web-admin/src/assets/images/settings/menu_layouts/dual_column.png new file mode 100644 index 0000000000000000000000000000000000000000..9b868cac6915d2784493b0792f18870820f17c5e GIT binary patch literal 514 zcmV+d0{#7oP)k(S^u+pLnXS z1G2mrm-5={`kzSGKnEH|cY%?h`=$GsNxIjWq=SKE0Heb|VvNq%I)hPl#sSZ|>mGRS z9pG7K5y!nlg!r4Ybwh;Ev3uuRXWvkD#sISJf`Q$-7w!VYZru?suhL1kbVN%hoph0N z{LS~L!!nGHf4)OkR|mrqhRV7^U1gmW>P&U2BkI^AnyTYiuxbZk;ix#?ROoDvTLN|q(DUvOk=*HBOFHWGF($AMKDj(5FhxM>J?hO|@ zUI)Wk3>$Pr-3FZzb;jvN-@4JaF0ggv5zW?d7a-5NxTfnUo$3m89&fm;<8^_kJHU;f zbUS~XlukP7PJgQ0y$=6kmlKQy-Np$1?FS@Vd6?;N^O8@`>07*qoM6N<$ Ef{6$HX8-^I literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_layouts/horizontal.png b/web-admin/src/assets/images/settings/menu_layouts/horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..ca779bc78ad5bf45e4b26e4e75e6481295383369 GIT binary patch literal 409 zcmV;K0cQS*P) zvbn(=z`lWa1n(axjo^q~;4t&bS@^%KH`vFc7`p2Q0I=EJ`>gf&x{iCB)gIPy+H$?# zI&Rh@j<_p{ds>?h{E0Z?i2HPk&-@4Ch&w}E!NafkSzG;R2LRxg$z)yzam_;Ieh_DF zDlv-FwX;E-%i6gQ+qsC>eh{Sfe@zd^TDtroDA!A5hii^ozT^kui2GyQ`9Fk7vFhZSNmiXsv;oD2I1{Wo zId{pb(`jB}R@*LWXIIUn~YTl0Pqhc#kP}ccEGly z+kj$coC&s_oYRhWw4>dQcKbJ=%iasfw_w`=03i1PMtw+J%=}$J00000NkvXXu0mjf DJf+bZ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_layouts/mixed.png b/web-admin/src/assets/images/settings/menu_layouts/mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..c82b58038fcbdab260ef4df85cd0bf53fe232ecf GIT binary patch literal 431 zcmV;g0Z{&lP)Yy$(XK&WqF=)bm5 z&;o+?zlB7C)K}fi`)JgA{>Jxlc!KXfgb6|jAx2Z&sveg*c(ShsoP#IVp>AiIo`88@ zr(tz#nx24pU$**en#2z4P8E+W)>TaYs*4?@TZnE@z)$QW={$9Pq+5t?5s4t(vUL8d zk>BD6MzrHvYjymk9q8Cd*CO3GT_5SB%UpMi1j=u9n@Hh+b*4E&dq@{atWMW0ODCOl z4eTM7=ZGc+P_FT6@YfY7)!;zX6{(>H2c9mqfCEieq?Y>qVa~er;Qc|m&m&qoqK^6@ zVBN$3Du2{%NO?+K9&mf!tI@d6TsrBbTaC_bh#7oGv|&;J<@f7bI_ad#=vP1p(n&`P zAWTV(SImLAJYY(!i%iy}>sF+bPPzt{A(q{UW(H7(@yY~TT`{;`%(2Y&+R=+kRYC}n ZKX+7z8kqwQRWJYm002ovPDHLkV1jqY&3ym> literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_layouts/vertical.png b/web-admin/src/assets/images/settings/menu_layouts/vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..16e942b0e9f3919eb199134692e32004544b280c GIT binary patch literal 439 zcmV;o0Z9IdP)(# zD2kaKe_n4u2iGeYpx=`+HyKd(2SbJL9}%}U{@8`CedQuyi89i?#7jp@$(zBsZj{qeqluEicf z*6Rj#SRgdoBZzCSqT|}D=pbE-bUD@21=xhdeC5x5a>aJJ;D*%S|aFn{?|8j z&_So{5lo1xtA1;g<9us`n+K#rx>Kg(1@+SDdjvb0&iU3z)8W<#y8VnK9qURScO3WW h%8Q3N0002Cig literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_styles/dark.png b/web-admin/src/assets/images/settings/menu_styles/dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e1653b7a657edd6e2e83b8b479bb1b4af4620e15 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^cYt^j3p0qNwsRej;t%i%asBk^tGc?@&!0c-?cF|q z{-!dsl@Ta)!PCVtB;(%On+JK17;v}*%3nHAmJs>!0B^+Y`oPQsN=8b26YP2SNGmV+ z(<1Wuz(Ft&-I2P^pJ{r#^(-^z!+)>dS^035-TET1?9HMwt^CXP@rda`@oSCvV)pRD9`Ic+V>RN|cZ9-Q}41PonSK>R4CZA96Tw@1diy fo(~{Er;M1%fByXW@#Dw4 zckfEI`&$F0PIK_}Tq&4}k`{J&n3>JYDATM6ZXdH1D1|rwka( a+00#Z%j6q-R9HLER}7x6elF{r5}E*&a(=A< literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/settings/menu_styles/light.png b/web-admin/src/assets/images/settings/menu_styles/light.png new file mode 100644 index 0000000000000000000000000000000000000000..3007b99ea227f5f203ad309d28358d95aa40aad2 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^cYt^j3p0qNwsRej5(@AMasBk^>;M1%fByXW@#Dw4 zckhOVhNk`~V+6{c^K@|x$+-9SW+HE^0gvlLR`&CZGg~7o#6IM+GMaerh)K|XF7e~v z*2wU>xm~svV6cO!eAexM#~%n4hWb7dn;9*-?$zE?M-Ku)rRC!eF^lI+S&sX@aO&C)xGbBzUl*1H|~cH`T*7S|L8+xoqd^+pNbuX$T2rdEOtd33n=<}rH(r4Bw?X0 z19j9Zq$jx5yQq&=Rv*u@&uV zZv5wD2VJi=A#|57GsIK59E1=t&(Kn59-)r9I&_O8$G{R>i|A%Y2O}3yS41Z&E$H;i qY~iWsL1-c78CvShBh*n>SoaHFuY$So!<9_{0000$3b*O46wRy83EweL3E-p zTDPTC^?=rG?@;xC)#cYaJXSqGb<2^89-z9fBYo%rs(T&jp$Dk$Kk9+HS#|cPcrJon zbI(i6T+zM{&>wNHId#;{s7qL=Yd{@!)cq1mSEY~blI|(J>{oO}dReaMR_P^Q(MdlO z>i~~A@u&cbFmcTrMB15WsH1KUUF~df!d~+osw?&ewtya>4AqH=XPy0+o=3$lg6Eny zh_o}$P)FSyx+-_rpi9hVN3Lj_1$lsMGW5LKxX|5xOc$eay9h37-XPM>JVPCIbLeVE zkAX{UAEGNAI~aL@@(`VV>$4IoA-;gkJ&1+Cgm8pmlOdPn{^_RrAUFTa z?Nwrlv;qeX95`^`z<~n?4ji~TxhJFJb(>akZP2?200000NkvXXu0mjfdG+rO literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/svg/403.svg b/web-admin/src/assets/images/svg/403.svg new file mode 100644 index 00000000..68790add --- /dev/null +++ b/web-admin/src/assets/images/svg/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/images/svg/404.svg b/web-admin/src/assets/images/svg/404.svg new file mode 100644 index 00000000..48e1ca3c --- /dev/null +++ b/web-admin/src/assets/images/svg/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/images/svg/500.svg b/web-admin/src/assets/images/svg/500.svg new file mode 100644 index 00000000..512429f4 --- /dev/null +++ b/web-admin/src/assets/images/svg/500.svg @@ -0,0 +1,5 @@ + diff --git a/web-admin/src/assets/images/svg/login_icon.svg b/web-admin/src/assets/images/svg/login_icon.svg new file mode 100644 index 00000000..4beb3ab1 --- /dev/null +++ b/web-admin/src/assets/images/svg/login_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/images/user/avatar.webp b/web-admin/src/assets/images/user/avatar.webp new file mode 100644 index 0000000000000000000000000000000000000000..6d7234b9eb1d4962efb9d01a4703fe4540d3ec34 GIT binary patch literal 2130 zcmV-Y2(9;0Nk&FW2mkB(|iQh=J6I zyxsF})jWZrx1zAfq`;31uOrtG^aslZ++-*oHbA=Ws=r@BH$nEcT>f}v8c<1MaH|2|TsFVAnjLEj8 z)v3~&1Tg$gPbv>1OlgM(i_=4U(n13#54;Dp%@xYc7c42<_;HI{&blw#e zNxIkz>nHOh3a&_eJ&|2SelyaGrVT5H-&xr3qchs0k*P(yrJZP27PwoGyrzP(HQNq) zdnp%e(8+0Kvd=#P@!j@e@d-;H6ynU*1u2;INSHcM)CHM>4FQx&W>lUOt}HM!x%Fka z%X5GL{_uBtT#(I|h-+J>-VdN=0k`87mNLbrC!e0hz)eum&xzb_(qj;)6C_`RprQp+gHMV1x!s=;2Rb%2PsYfg* zh??Ve&~jKa^pwSDNm#|Es3PLmb7sTuZ(x2P^RA`Y&UPQ||EZaGfbNJ@(YlYt9%HYh zZd6LrWC~-IbvBzuEVN?AAJR!ig~P0-MlXvR7Z7bx7?0-n<*4=SW=S5*A~>8h3`T5! z`I{Rw5T_p0VkFU17Z&8dG9Tw3V-0ioX90$ba-jE=Z$T+Ka@XHj^&Ah5&3^#B4xzV6Zt7h5hW%IMfcreWr(GyA?@Q(v8ZjmLibkv4Aj2n8A)< z=`*~B`m=?dsA{+ox>qZp7zsL(cLHfKRXL9|zDz?~SSeGwu!UZyhdt^PsU~45yW9Oj z|7T$>K9wSeG)6;}llOZ5%}(}z0=hks13|B$4L31VdOF*sd@YU?jiH_PWPK9UZtNa*gq3V&9l+*yS!e&SOs`1NHt-i^1q)x3)% z>It^qg|*?RqvUXDdRScQn|t^Lu)KXY5VsWF%#?Kcx(iSN8x!^6ce+4JmX87y6y?wZZ4&b%iwh!QfdXkYoDFzcx@r36&& zo2APee^J><5DkZ2e=>DFvmAxNih)1iwKOrXu;mfGI%PS5k!rJn1B3wHU(p$^yBEHx zq~i|&7X}r0s20A5acrQR9#hvK2Xx=6c*tFM@J9UuD8ohc`RLDsu}deGD`*`c;m8QS zgCUifRD^>%<4S8#^2TMADqw+gjHZ>sulGW1(}gDKwF2hjvQB>n-jtmz#9@~4F*^x@%R}e{Y2&KCz?duu^aa>y%iPm%1zqnPR{G?Y4 z48C*_3ipwVb2oo`j1WM8AYDT&ioo^DN+XA-8Nq=KolVDJ>^(q9Nykz^AO8@jU-TDL8=@Yp# z`0V^~J;sb-xt;21tD-A@Q!b4`@x|E>D83vGJA5%XgyFaLGshP4j^0BP@nJi;8QPq} zZasCOfyHw%T^l_D156Rxq9l?k^_qF>+c(_`j%kBrqB>?FPa!(O&K%uAjw|3vex zg~6iGGvYe?pO(JYfzZ{%9l2^x{GmywWC-Ereh^T;KWV6K)&<>!={pX|l+g~?h}`RK z0g*I#Xa`GBWma{trr5d?fk)++ZmoO}fx6-Yk^Ncr>2Umkn-MFU(O?_Y9peO6vtnRF z$QVFE%8MY|Xohq7+4+t3Y-1=b`+7f0p6}a*tiScRyO=V+;Q3*I3IM{IKduC`j8lKO I28@6J0QOxWo&W#< literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/user/bg.webp b/web-admin/src/assets/images/user/bg.webp new file mode 100644 index 0000000000000000000000000000000000000000..762b22dbbe34305886a78b1d103dddcc61d106ec GIT binary patch literal 12352 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/10.png b/web-admin/src/assets/logo-img/10.png new file mode 100755 index 0000000000000000000000000000000000000000..c0415774157fa9d65f9549d3de922575c526f756 GIT binary patch literal 2910 zcmaJ@d011|5)Xzg?1)ft!59@mOmef5M1nvT2^t^}5Ksz9?hOeV5|RJ`sfr5-Rs=yd zYen%X$f9i4qM{WE0>T5ah)bP61oH&tLI}x`38J6?NB}0r zwnA<&7<`A6AEFN7ZlH@vv`z!9N{mqpH0T)B zvRMmENF`EA6>6zG203FV|jV8y#NZslZ7X-nG_raH*4dcunZOfV0ht}YzB+^ z8B3y)sRR<03782frSTBRR?20_&nc!!|A7L9s);9K=OizFjd8NcCDYYBaVLr<I&YR_q{Xa|I>zSVT@KFE3f$y|%zx}4S#jOoC^6r-H=H?*|e3E<`~;ihGJIH#RVK8D2PV6R&? zDG)2;%`ShOR$WwP_;lqK5G%{^kHfy(lq0^Ij;qXM^NGJ~U(?Kq2`Z|;qitk$71(qa zA&$U>labpn?oW%(2iCIhQl`e#$nsuoV+-7py;UTE4qCk_*uDKjo&_kgZ3>7gAY4nd z?2_C&&j>3rUBZ&s!IQ&@@2l^29C?L*J9YR8GkI<50~NWm{q1|;KzM>)C{bb8^oC?R;o$WXpwKBZO5w_h#0F`sB-8%NqgHB`x{y0_{_-g-aL5 zSslyleQS3R!?QHI7S|}ZUAo|bad`3ior9QTMd_K_DbuIa2WTPI+NDZ^tJilgG#uFG zb=!|KyyMJB?KvL{_G`ngWhqU=pdXC$+HJICW4%Rx&8G@^q_y{XjbR+oA|>efhYUy4 zYnd#BvQCHc<>?IB zT<=xf-nxF1P-HrSr)`nf2_S+=tda43iD!soksUzR4~>M=vj=vuS({eVOSue`sA&oZFl-xlGMK-O%agu9_d)oEqp6_GKUM zdj`arb!_*pyI3-OdK~t|o_aF^X1H!q*quwj9~(bBUKKiI^>j(_C@wI$YW)J=l?nQ^ zO*V{n3UTAEQU=dkcubp~5E*o^f#n7(|2=BpT~2IO`(f)d;sY*C_v;^v>E*B5n!>>T z<;ejCUICVtr}V2NCEfjd$=}Sypj3xn6F-GXE7`4J7HJJ8bfi{qQS@HC_Oe|sZiBwm z=yBHVP`iw3adC1qmQ`0Ao{zFl!(iSF21$BD7T3^j1hxm1Wy|LFgn3rN6W^24 z2S(l+boKPVaU~sDkU02Wy;4&}JXm_$v~oJ4*$H|&l@Za}zb+!DeOhVN5NiC)g&ck& z;O?T4*0ZH|$cw=r`>H+!=FRgv^~f*^Ay_{4T)&fd>-mZs!ji?#&3ZSV-s%#r27Q{Dq96Gn5J`E%lxZk%oABR0nISFMli2lQ?piBCX_@!k{VAanS z7fgl*4|Oo71|1)~h@QxA9I>d@iV#g*BE`+LhOx{}8;yhJ{@#Tnm|#K=Kd`%1_+b8i zueWwg3x%QLjCp18!im~FDQ$|zyaX##(!O^gm(td5HviP0dau1;Y~*oPzy8gP#^#}O zF3$0>6D{pc^+n%?d`!kxl|c;0d2t@=O3e=@0sq~aMd_V$G%MYJb9A|zY6*bUR=K2P zU+9eY8wefpcdd@X=el}riY~uNkKe-{3XM%2)9Zdr4YuBdeH>b`zk&6id_K9Q>6Ob| zpI@l0-kS=o>xBb9INFc`-@I{l94^)@f!nNDbsXXDb#c|NJH}s-NJck+{KDW9c^~H= z|Dp8zS1sTb>t7OIkSAJW9lCjD4$A={En@W_*)LDP`;NIts;?L0-5k>=7e)XDncEjD zp}le5!P|J_g$>y-YG(SLGKbE@+b8Bsl(lu_oSHmq()NxpMhvtMl}1G8$Zz1Y^IT3+ z6A4#*>RM|T7)5-%Y~sD8%)UM+Inw<_>?3=txW1lG{~Nm^F>@VUP-r?3|IF;Cz58Dmz;T`e~Ms}}wTfS>&#g`GhYT5*V0o5kyG2DTWl18wtn?OGH~zb+l@0cHqvG2?JbTZ%cfN1F`OW-hzL|6GmhiBpRu)bc z2n50^D9|qwmLZ1M+zkHG!qP@y;RyM&p(wckO5rF$1d}i4f~X)VM+ioO9DZtYJLru- z7-xv1*$_K)8J#DWVmSsItVXJU(Flb15{-hxlYkJ43ktYhemxifh0cY zFQnL^;V70|38Fl)cnlAZC!(kTmf%SyQHYCBL_86X!xL~MJcdA_Q}A>W4fXXw!_ky{ z0X@<$;A<>+=YtkOkb;iGrKF@_Q%G33Qivk}0D!|2aYP~pw!o-TWe`V$k*QoKJ@|nt zo>HuU#Bv$R;E}_Xt05mW%=AkNQblO!H^(y7*FwQ1!)Z7Q907~RNu`FoK3l7xNbvtO zzH6R(cH^3K9V=?`SlmI^(fkv40@jWb+t{{7nd$m^F;;#(r4z}gvknNBv8g3WdfA3ya~B_mUcy!wi~8mjbe8CX(ZAE2+* z-v{))UJ@bE@oM4T7)KMcf?vQyNA_5?U*ql?sdYh7DKx|1l{}kn=M*>OW16%zzW9B- zF#F-3BHN}nnyYg~xN55&6Ls_8>xaU6w5eCZ5QAMOGJargwXj*Q%SjFD|3oc5 zX5>&Z193!2>8g)HYEoEtF&5<$R?qZr_q!fh^xK=wZIXagOZS$ImyGP# z%m?K~E*}3DOldM-TkV^2l9}v6b~xvo&Ad;z8mxcO+%$8x@NI>oqS9;ohv^UPD+*uI zFWd_b^I^_|X!q5xq&t!2vNZXC-ywQn$v>ihtb7PN47t1{D4XK^N;XM?{6uZ2O zxi>+ObeK3UL7L;LqZZ!32@Sh++OrcgJL~oyJvrqD($<>shc2+K3>j04=rOZ0{_qID zE9&{KEYrZ-9s^9hFJ-A_IBjSyWAqe_oe7b1yvz~wj<&cvXNrw_3huTTRc`ca+rej8kan`8kue+Cw+%~jsbFLl^V2nS>lN{_d-(Webpdj6z5x@O$$j~1MX8(ZV*_C_A z+YXl}SG4jtHH&B&HaTq-)5v`v0bG){p#0!?zCYEZQtVNhDG0Dle6bTJb}XN5X;Dyi zLTgcZGs4>}-XWR1VNsj|WSzc$$#KN<+~#*9Kc}>;j_sc6w*BW$R_$PMRDS08s{y0L zgg3|b1RuJkzqlusfFkL$>4yVy{`%q8Q-|n6%%~gfPpvCjp7(3I@8w(?-s%@#IcmB7|n%O ztaf4&#CROaw};BM7ylZ@26(Xp{)a@gH~#g`h`KX3GM|`6j&gvTVbQCI}Yp_;|KS5nUl<>nnuog z-{aVWn1dh-ya%rsneJYf65BlpLU$J*X}L1rCd1-`42dGYXq8N^*f{gqwi@;U0rH{Bpai2k0DI&TF$~fQdKW*br>Gm{;YMqscsD` z^=y88MCpo${STO{g{!ye$M;-=+&jtTPEnwo59g|E)N{HP2B$*1j5S`1tz52%@w9)s|DL^Ks*kTk4HBy$hi7obRp7%AbRM z^q-wuwE(rK#B?m8D1FBZX+-w;Y4ya6v<{@YHfN~t&P(@YyUM2P#BJ(bu$$yne}fN5g+xkbjupDc{7b F{{j25J4XNj literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/11人脸比对.png b/web-admin/src/assets/logo-img/11人脸比对.png new file mode 100755 index 0000000000000000000000000000000000000000..935f8fbca359f9756ef16278a55d594fd4e18d1c GIT binary patch literal 2996 zcmaJ@XH-+!77o%CA_(eG)JrHL64FBwL4gzq3X)KSfl*U#NQ4xU00Ew&$e;p>Qltyg zjAB7VP#8x=;{c9WQHn?x5N!BR>@TRyn;*00u66G@XP^D;{q45a-RI})X*l0}J_G_W zqUI6>tEZ#>5`5#IsTVUjHCXO1=E-AOQV`PFSjg57R#W;zj;RqCwNJJpf2s9e5)_}|6L~@n_E|OW#S)hP2 zj#MC#3&bK|)*_27j+VQ^)J(sJAe8v{{AE}q`;jPh$`A^c1c7owB80-(xV~x2eQh~ZCtVoKO6DzF=uR!hh2Nw0OSQ1$ZvgBfEfLI(k*8zTfv0Ncd}C1&Y+8BvsE$)*oKu5Qy$gI>kLe z(LEU!5xJOZ`Xm%lTIb>&7+`wUYXQxcw*R={l$V~dtw!ppQU>`0dH<@Pua#35nM9@; z?LC;c7xok9N@yr@8=%rMKDED!wwjS`&ahbSU9&AsZ`+x^v&X6~c4070YZ6ur`%Zy9 zy+^Do9JNDgYq?-+Tj`?cHD>!L9*M8dTMSVN*^oyXCObWV z6)l?5i`{}!-LZL4&1F|Mx!r7759>>Ya|ZjDMp+nM0~QP$G_&wEkUVI*{!B~xl>|5I z8jIo2Ij_09Z0;3!Z?*C>%3M@5F9uTR_Os`WL)w|5>qm9$%RTK{Px^7pcajdirFLg& zXVM00bd+8&x~M{^5wx>z%e_oTqiFy-L7o)tXbfMhmw*$t%%fk6>YSe)pM7j8Ul%$L z+qi7t?wP_fqf>fuwiyMFG_$r}aPhgqKKM4lyOq7PU%32>Pn%%Lj-@p#3}-rq_L%Lv zX0R2SaWXEYA#+Rn1ss>g)tW&1cTv@ zlhW=*{OG*5Wsfxyx0nyRJFYj=?P0DOsqeB% z3yj}gH33hOe60wDrh<(N38l*VT|Ip2xrg>1dA{|G(IPC|(IWcgieDYHAK%!@je1+^ zF|a&aw~o;YOQ&5<2;ns_uL=z-LU5^*SGxl)>aNv~0Q+vAqFgxjrDgE?FZs=wGtuZX z4;&gfW({4ryg-M#6QqzM7s2PS{M^-b)yzic6L%b>(4`JZgF329raBBStT{pdKU!7^ z%{ChClX_DvUBN5LW1Ek+QbfiDo%=-c8J`h(a`Jf99G)msnRO5cYjAhq6ZdLGB@9t zUgH65vxDB&Txu8Am~07#Kp#u*oibIgZ~Cq;aXc9}Lvj6-t3af%Zk~l*W_EPf6QV zC61ZV%%f(XM=m`5;O-CoEwi%F?C!|<(AT)zo$UELOkJySr5pC_&a|ye&){$Vt#!Q6 z@NiqV5$)P2w&1tTvahjKmR?-CEXuXOZ_vcDUO)F;|A)}}{G=G1LtQxLbYfK;C1aKD zqL7Qt??syLWA#S2=%c#zr`kpS(B|Ox@6JlTxb5X$yp%N=Qg|zuve;^WVT_@_*6ra) zUj|`cj*`6N*2l2};c#Llxw9uGZN%%yh>|SZ4IeweY)i;X(zLFP*Q%Wg^MZNG^j~R( zn^iDxjWxR>`ez)yKEmBnb{&~UB0ZG&&hf&dRZ@d@krf(x6`#i+tzF++bMv|dt-Lkr z&tH*{QC4*lmx&7w;P^rs@ z4Oj0XD5&>dhL*`+`>Fu$vPJD1pH4Hfb1%2v129Vz*Gr#pd|xeY|2z`3b#1qY9jkUW zYw*+}(@K{2vL^75dol6}v15TQF=?eQs-H1n^~RETZLA^Baf`uF@tfob&)%R%N~UEU z@O8()f(-Db;)3?k*0@i1N}v4V+n0RZ&w?Tp$?OfD1=RKWuT?UDwDi|u$jcpc_O3(< zt95he?cJAtKB+fhZfjwa)9c%JkKa(6oomPAvbriCe_kbOB8Iq#?X;C9%i^j?Cf;TZ zS8?{aZ#Bm2$T=k^MsY>?Re?6LOA=zcFvcZIRhUwdA3l||iB}qQNQ AumAu6 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/12.png b/web-admin/src/assets/logo-img/12.png new file mode 100755 index 0000000000000000000000000000000000000000..639fbf77fcd25028b778940a08e11400e3369c75 GIT binary patch literal 2460 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 bcW*|###!~xHP7Tt{VxRz!UIn8lJoutC-~Qb literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/14银行卡识别.png b/web-admin/src/assets/logo-img/14银行卡识别.png new file mode 100755 index 0000000000000000000000000000000000000000..bf6d7141b7dc5a7c1dff6677c79c933573ef83ee GIT binary patch literal 2034 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/17.png b/web-admin/src/assets/logo-img/17.png new file mode 100755 index 0000000000000000000000000000000000000000..b1ddee142c44d02e1ea7c4a7d0bafe37d748d680 GIT binary patch literal 2420 zcmaJ@dpJ~iAD@j}!}jLVxMYl5XlBmLm@zZCWX#B-BU@ zbr1-I9?ORj1h2jekCq1frud~ig%_lfxmg)36)06aIfU>8r7;kSCFaFKK@bm2-gX^w zMIhADgdv-io7o#_e5n}ATfktG#4?zTK)8A&$#{Gbq(sF)u|kO(`bFDCG)f4%p~FaQ zfGzWa;)Fgaaws^(FNB{W;!{DihdatOi3TeWLrNYhNgOXx(30HHpY+n;{el>WMty=P zMQ-TNPHkofpuD7V2t~#M7(M_HP%cy~p6pB{5!Rpx00F=OcpMSH;7K$RKqFF6UoJFk zO%4iZK@9INw&0T+I!>vS(Qr7GN`+Msu~K;~4o{_0aR32FAYfnwMv*L0@{%wTh4rEa z2BhH2g)*g3DnTu1WyclSv?XGbnfpeo@D_xB!JrpukXXFQ(@wE{RH} z5=m5&Cz^K)odPLC|Qs=EL7-ozzj$(OoTvhxm1k$lwz9j8!k{tF3vmm~}eop|jtEal3NhXQp9bV1x(Sa3ti4!G=6`#LdYaWA}Gmdz2`BJ5zqIOc9lo z)id+#<_Gr=y*JhpU)Y8@7BlQ#p0KS#Sv$dZ4_cTP>`>A(b!S~lY$aFkm6~t*s_6XI z?Mo=?&omR&q}rYHfhCUpc5U1v_X2b|eQjDNb!(RnuW)_8eAZ@`yw8c`!s#o^p5sNQ za&PGu80_MG|0YsVXxp9>ctM}r4UT7`mxyyw7?^)w1j*N=y4T^_xH4n#9NC1X5-^ClSNBG)`1`KzQJQQ zEyKpQo}Nb_TsXql<@}q3;KUBm2eLI#qEX|$gA+?y59hf z|0CwS#FCT$!KhoTkxfIm9-r=E$2)mw?T}QIr=>@{%&>cA+q2ETlBkz6mz>yN!uNf4&9AlAOkwNOG))!~?*;$(OAE^H; zAmKlmgric2JK2QtsHI2$7+Mz3LkW%7Aypm-gH5On?*bF|bp-Fr)We4lS3J#Pog_bY zEcZ^eU=7~wD%@h(o!XJwk-P73YK>XKN26%}EAwur{YqCAMYgPY_#U~TGqq;A)ZRDc z?&O$SYs}qh<;>*rG3Ix@0Kl0bN1BBuT+TF}660SznH#L$HIvmne@vOy1Ax(!uCv&xb|psftAuCJtpuV zJ&jXwBy8~VmIqU-rO~%V)|Q-0oA2DJFg!QktlcIoa>0i2SnYiVW^FC5B6i;Hls-wY z52e?rREZvu{Ej|zV4GVj0X$!6etSme*Vg{_aQkJKAU?N|lJ@4TA$FYetLD=CS-}lk zu#K(A;_f}ltMto1=dQiAbCn5)c*w}9D8V!QN&UW>i}e19{S8|i@pa{Wp2{k22Iu)j z-Iu68R|0j)aIhSg!Edl>8h%9^L^OTGfyHK)v7u&t&br~A13#EHv_8DS2wC4hncGln zB|0=bv5{~_@AOZPx}6RE{@dwOw^h3s46SPIM24*h?>gK!vFAP4*J`4coF1ER;u}nB zDSe2}DZFhg6Ad1fwk5wP@EW(@UY+pz-S6YHE?Nh3!0*9#lIPd#{S)0)vrT@#t!z9f zN>9_FtT`N}?_`GTl8;(%m05`BmDhHREHOJo*X*1(orF4!mzz5pV(e;a;)foN7!HM| qYN9?2mL;m6L~@XvL+|Dq5NZgOZ#*O7V#%F_{~#9Ak5NyL&iEffD%-UH literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/17录音文件识别.png b/web-admin/src/assets/logo-img/17录音文件识别.png new file mode 100755 index 0000000000000000000000000000000000000000..a46458c2b7695be15b27a0242ff96aae8ac26c47 GIT binary patch literal 2105 zcmaJ?c~leU77tRjP(X`_kWw51Lei3CvM)dpvY4>Q7L-s>!ejYK3m`iG};&dm3H_q)G)e|I}` zD01r-dt1CM4u`XsN`%qa8ftmpT!nqPTXQC`#T6CBp)pzn%~t4PT#!gCFhQ{Ii1C2Tblm??fGMu8)1P~rvXd?hB zWdLD2D;x~h3E)(fBu5X&)R5Xj%YakyKoGBp}f0VSr5m$q)$A0S=EsV>1~nx-UQn=^z!PQ5hha#^SR;K7$J^ zJp{~~UWxFdh2kY&*eQUJilRC`m71NMP040ZwE7e(jmP6rK{}OACu169!!8Y~Fp@O} z&t(fj*Z}EOI#i|A02YgiWNjuIK){$ThM?AkhrcqcF)SqtOBvOu&{1g=kg8T&;#$x) zpwaOEX}nh3Als#bsnM`Oo2iGedLW+5U@Uik?Z~2tvEfJPRaj9J=|U}(sfIPER2V?O zZYWBXlFtTt0s+Vqi?|E{jV1~X76*e|L6C^f5(~LBE^XPy>##x&m&E{Cbg_`fSirJ) zY#xKfV+FBAOfFlzjFoB(s6qq5%YIdu-z6;VFR^@q9#)`Qy-cf3U+#d&R4uACq-u2l zokpPn#Bc?q(pV%UONAB#7Q%W}7OWKOwQ67?#eCIkD6nA;qF^u(GOXaS$xIFdB6B%P z8W{!|$p{-_@DMggSi&p+l)A+h#Uxl5x@9(eCPar63>rjcDA@>^!(uYXTn2)W5m?DX zV1xzpk{JXlMv-dinm={XvIuKU%l6ewV24*z1#7TT(ql6dFR!n~;ogXp3WH?Ep}Pqm zN@PJUC;KR0^u!-cEG+)H5g_D%)$Csm0;HTnz*oN=a1uRPJLiZ_sj41%IQm95z13GV zC3`!-cPg?+kSqTv$|ZMAt@(WEnZc*Kz2p9N$B0Y~U!H$>Plu#j?%p%^((vM0%6MME z!GnKyqIH^_B#mBjldrTi5H@W?h)#H^+3}u8Qor9ZX(br?fWxOZ(Gz;1l!I5s_juiK zomZ}%vD$;%fy+!a`0cHlc53W6jRu;WN8b3#hIr`+kxB})df++Loc}bj+b+sTqS=Kx zR5nLdOmbIuAa4%7zgcE0!5_=`@pdhL-75HzT|?e%>l*H+;C|ed+Fx^O@H zRD5NkP}bUh-C5k|&Rvl{K#caTmxsy*tT&VJkFHYBcS!dNaT$G*2)wS+ul;gt;?C)H zQTX8T{*T&oDe}SkNhI*_ACY-&k_mh6+N_Y9t4ByKoUQ{e-EoaWVID{@K z^og?85n6f5t!`jt$;?>SY3oA%ftte+=r5Z$w$)Ju%p!k%#P+h^Jx1OG`)cN%TkV)D z@GX;4O#f=PE2_W#DWCYhghq|~RyYqetljB) zv6|3xZ14-Xwj%Z}E~In19B!y){h&D$4xCNo?(BH$yZ&~GPbGi9S_f1OWnOf zO`AGRx10xZoiol^m4ppe2AS#X&_;2WRy=o#(Bq@pb)!3f?)~AUg1T5?CoObKD(TEN zhlj~mtYOV%-w|zl4D=e{jUE3xo-=Z zl$3|uaDQjSGm8J9$u^=z^@l#;$!N*O{ge9KFe3NqiySc;Mkh0 z<@r{TC!QfkWAV7gkdDy)BNMYOz099}@|O6!#lk+K&S<~Sx^jP;KVrIBSp7jy&@=n` zbFGEnIee3mmHVF7=Sr?QrhDGwO7fjU4R-v97sKucl9^@KTIc)P*+4_ocsWrXkz0a) z_IQ7jTQ7L(sgKj6nEP3_y!I*Y;W~M*-8shCrVV08_Wtb=8?U6n_ic}^RL@*Gwqd#^ z?%}9aq=Un%ygEPPFpjbNSMTXkPoF&gATjRz@#A&YkDaRa=I_g%Sntre!RzOis>NC= eSMGRW1LDwPw-@6TTVgFgbE#;n@E^fRpZpI$twxdn literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/20.png b/web-admin/src/assets/logo-img/20.png new file mode 100755 index 0000000000000000000000000000000000000000..d97bc927047d1f6de7dc10cd3b19abb78a761d02 GIT binary patch literal 2118 zcmaJ?c~nzp77t56Sx3q?R4@clmh1~Ak*HY#H4qjNP&+*GUP204Or9jdp@a!b3qxzE z7FP-?AV>ifsI*YfY8lWLR00U-h%H)BKwF?r>9l=8aQcU*@0|C(@4Mgq-TS-SdGCoM z!yN6r>`*9_V?;PV23dEQ-&Hoqml2scg)D!E1qpDhN($=$4TR!=suTzlp#Wr13JT3uF5bb11R0;xM)*Y6Oi!g>KcW0ZAGJV^ScQT*=1He$k1=$U!!C zH(f*$sd-SUJUmka#b!pvNix$UOc1+u3no<0LJTM%7{KTi=}Ik2&&Dp`PJ!A~A-i(m6C0Zf!)g|hsMF~PIx0b>krByECX+~_5GfQqqJh^QRKkEBuhjaj zSl~liiAJu5lb3z0(Mu>0)8==&~fKmdj_?07mm$96`#IkrA2!K_ZIF%}Wr31vNDp;jWRjDx) zGJ%W<5CIao(kuxySLkKHd`KhDfIy)}rNAtum?eJ=1qOW+4FE|LJV^>t@ib6E!!sBZ z2_B@9Nm3dJGALvUb{P-;DRnPf6p>II{IC$xYmTRFS^-P;n8woM^f^7 zG#eAd-=4q4+O71+JWzS4Rae)&4 zeIq;QGGFc9beNy6U(cBwB=WM#b zO8}I#-u*GJ+t%x7bix@t{8LatonWd<>Hot%TWefKuvL@BqWIo|#c&3))S=QpiUqFc zd*?vsc)EYjN9MVGus$(c_s-RXKHFq;O|i!-5@XR*_$ChUQW&_j9&|Oex{S#pj;k2;(X^C zkeyib{r2Z9wEJCjs<$C~v8*?GPv66VcrMwYcBb4 zEBdB*M6gZy;8!Q_r~pYr+^lP&46`D@^E9dw=qPd{^nP;p?nDNBWu-G21(QOP-IN7jM~?J@~_} zX1nOgyf)ur?<)OStG62leln!=dsyiA#@}BZzIcF=omsTkwuEv9XrHgwW*bHy4d!76F$V z+~jxse`#wNeWTHUoi$3|Lp3VqwD(M?dCPa&2Y&a-=-yaGbNz^sUKYL`y)=&WdcvEO zRYLptOO60N%s&3eH`{JS&Acx_yKiWn3x1a!Vj)|Dh@x;B>h(;lNI`C+a4SZ{zLdKVkl}M+hSM4cz2^{s9=|Mb!WR literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/20个人证照.png b/web-admin/src/assets/logo-img/20个人证照.png new file mode 100755 index 0000000000000000000000000000000000000000..59e46ad36d2622b60729db7decf15109de9f9d10 GIT binary patch literal 1539 zcmaJ>eNYr-7{5TA0+qCZ2rSn{9ToO=@AhuFT><63g26ip4?LVPS$5xro#SrLy*;^O zDp5lIOvBG`Lm4l9va@vXzlOzL#QWF?Q5LzUQR%<97sn=#AT0%?Uga#)GOrvM?1Vb8-@e767 zWL{v3&DQZ;@GS?eQWP(P<25xk>Kall$(6Wo<*y-nhhF*CK}^mSbZLCuv%!d)lBO~v3i=KNja3Gpjgn7rYrbl8KlMGlzk{yy%9qoXkDoK%iRgxFcYSbEJu8rkHPsB1WazbMT zn}IB@2E0|4+{mcJjQ9`=6vz@-k`yq&(iEo4B00>E#cMD?kQD;Ok+eV&=s2E#K)SIO zg%((bH_C?5aaxWgH5^9rlz?UFbtGmW1pyNPPYXcM1G<7laYzx5bj<@@6g9!tjBM}E z1bn$aRloyBNrp4CC#`L{N)?k@V9s*{&J8u6%rL)@ay*>hvo3RD|3>ZS?>B7ypy6%j z)CFIio|Qa;|GIIrE+H+UFq!Jk-f?@G@WPG44fJ#o?OyX~K?y2$7nfB2Z$-->?O$1RP| zEPpJ)dDs|tnF+kxe|JzSz2VKiw6@>bM_&X>gs?-Qw}&@}oAF}my+5WTs(AD^i^x>yA3}j9i%N~;)Q<}fvA2B%m^q(D9Pon->zG=qgzq>Qo z!|hbs_3$q041J*MqjT>Z|JrBikryA`(wwxTIqB8aNleR>JB5wpzDaEUDHsJR+Lhb; zV(&=Xv3nz-SKeyM*f;w`<*@_B?9>g1Z-;2tKvqlkPU;PYOuf?mn`Ez#bIq?yYtK(< zXsdgzE^b^4OZkemgXH>_a==X)>Z!bG-_Ut!Rwa~a>QCELv8uguJn6e*+e4Axa)HHe J-ft{l_aDWlHst^S literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/22.png b/web-admin/src/assets/logo-img/22.png new file mode 100755 index 0000000000000000000000000000000000000000..a244b493545487539eb3ecc5bae86350934d705b GIT binary patch literal 2131 zcmaJ?dsGu=77qx>B5x5D1Y)SX^PD7P0zvbXfT0khrg|0~k_m|+50c@j0vZhkTE!|T zt}dXvm6j@Lp=Fh-csOd2dI-qFBCO!9D=1l8>1WPmYjxh@UH3N=tVEQTR@ zUS>NSi@_`@R7s?WRJ4gH(`g8hO^1-H(W7V#CU$+U9+IhH1e*q@tF$cK^OkEktV+(p zZKH`uB0U#Ys^aqv@aFs^i7a0&1Le5&aoE^gCTc(fBM>%Mlc6;-b6L1~yG(R%6BBXR zc@;#>!Yz=JijuKhodL$u2_(FXM517$K?0dh1!$BgEQLfN5lLhsK*E!0Od5#^FtBeQ z9O}&=S1`pq!CPPGiG@=lh@MF#=H%oMasYzPkWM6nAV?%ph!hGQ)xaC`vvJe&yWx5c8MlTY*GpsefO%$3kVlJd7k_jZDMq`U>UfYO> z;s4WkueMQ=r-zAR*r>}g$k2Kyf)~MP?*7=3O%Y|o{Lr96ivnfvbh0cBtVM)877o23 z$W?MCodj~ZBv8O-09-Pe&*2C-BnFqwr_cmE2AM%#wDCTyfJdV9`E(MxQs%KVkPZSg zkjAF-sSLVc5i8Uh5lAb87yYVGzYAEJ;197(t^tM+ok610Wh{0;vQmfWj7pszOCb}; z*f0?!Q)z9Ia9f2I0_MR6RW>Xa7<3x!e2ST>_fVigGJwXAgLoJKAUsu0A>%<>Gz|{| zV6=jwkke(fXxv-8{CBBaXi-#xhM`|%!=%b6G6*2c@PM4Iz(>=l0G1dThq3EHxuaL-BiI^bd(I}%;2_Nd4<6^>=yFalH7suzo_GV zQhaXZ7#gFVa@RS-GoBFi<$AdA!c~??b z?oiT8y+~2!8#-fnlD2W;2qUtE=u<_Rg$5 z*hvMVs)tOc?0fp5qQW-IE=-pRx3b&C%lTnQ;P7vbGxq!lM3i|_aox3t_R~XLc!A~q z?Int<^wFzlF1FJ%E6sD}xJ>O2B~6~MZ(2CbWY|QI+b{2q#>oxu=Uh&fda4l;V)kp$z@PH@45wuQ7>TpNIH0by;Cd z;;e_SyV#|iIQ+K@llM+wA6yu-I-25^)-+l<;IW#C#-JyZ*@0W!(59PT?Y(kTgHf9* zaVpK0HRl|%L%o0L4=c-hHDq7C&F8n~4d+Lu2)EB$dCTvYoBYEAA9=vhK3#LAk{Ywy ztfA%HzMKtpAD_3!0;)a-zI;cciHBON>zz<7AP z%~`@$p}|^|HVe_=X$2QHeAR7F%%WfgbF)dv6V=3U|3;`+&k&vs9?&v5*$ zCu72{ams48IJNnd_WHrq(=Y!m`S|R!cKd>#+v4|p-{iF3b=guU&kwC34v)CMgjARN zHFn6Wn;K3=GD^=^HE#lj>_{%F`v1`sG*?2euNgiu5m9()t=*o7lg|o{C-?XrD*q>Y z$8{*UXSu#a;M6CSxm{j&N732228e-&; z)>Xc3Y0|@H+VF68PO<;i78CSsv43Ay-QE2)qX9R!vvyLaudem}DUZy~aDLu!_R{&aAws{%$I9$r>hO z=wLQCk7kVKc~n{5iJFhQZ^l>tdd=(HiXWYNU-Fji5A9;L@DXnFaFEHjv)getX%Y}x zzYa(mH!q7C#dn-$DlXxRRy<}%S2bk(msxV=IXbtQzWyk6FPHlMv-B4+?!IF8?S5kx zOy#XFhV(}|2Afk%Ln+gzpV*C*Q2jlAb}fUz);G>1OnxZ6xp-Fc+V-0l@{@QMIlB)0 E4+LLFP5=M^ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/404.svg b/web-admin/src/assets/logo-img/404.svg new file mode 100644 index 00000000..543c4f03 --- /dev/null +++ b/web-admin/src/assets/logo-img/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/7文本纠错.png b/web-admin/src/assets/logo-img/7文本纠错.png new file mode 100755 index 0000000000000000000000000000000000000000..9d1a5e5abaef328c0dfba56ee66ac5d1907cef42 GIT binary patch literal 2199 zcmaJ@c~BF177j2RvI4^qL@Y1{kD%n}G&v0zp?f zTt!$B2GCW35%54!k@YqM%zCXZI?Cuc3?2(8rKoHN!I?j->8kGc>(}pl=l80*SQruN z?2sotB4Y>HyEg~&8X5GGtDNrs{zi7b7~ zRVWCBvdLD8#IRVfhAGvk2oj48!Kl(AXcQ`Fg;6V!ra&+z2})L~S=g7S&tWl284DXr z5s(C04x~_qW$2*jj0ll5BSp%PVOIoWf{aYWfeL~p7^7;lTF*4Huv31S$l0PMVlh)D za0(0iDJii)h~a2-5Qa)1;iV)J8AD?b0BRseAqQZ{Br=Ie0*D|94^WsC5)-6jrY|fK zO(&BxqqzL(SjZa-tAJrGlSoWUOCzL#1dT442rw87B8f~SlktcJUZ1XpB}Tkj?>FOt z3+bggr509d)EJ9LNs`6@v#>~}pGr_^1%l6x)%xj1AuS^sC0ZgtAQ4q6OI=gedN>OD zJ&i9~>qY5Wh!_RwH3pp&nTOnO28{IX&jVQuk!+ZeIwdj`$!4xbYEVIHIGoGEB3}qH zrHn}>F*qC&gU_Rb901_4*?cyM&I#d>DSR#+paU~LzJ#R!Yyf2N$$TyYoWfEVR0c?4 zP(rA@KsuE_gAG^fVToD_&BRqAai_7spJJID9VCG@I*~@Rd4>T(g$CB>6&fvu3=jYe zP9Tvg)fSDvWkR0{=0ZAUDkS6UG%Czgi%7S{ZMMKdadnwI0|oj_hbZxy6QR!N8K%q)3-(ZH};US14b9q-Pj?Y%KP{64k$gFL>gp@AnYZ*wlq zkpKaOl`D6v(FcF)EHmxjoblHk(dY^*pPZ#8-ALsQ+!eol5q+7@d_;Lcgu^F~r@u1A znb`{#KNi^-3YctkUzwMT=OR6TTRs2T?2#AM3bVG9celvvXYlq|&8B;`-26)4%P)A5 zf#M)(Q-U9(6F0<(r3o8O{+%c8;@#C>ZBN~u;`-*w*oWm~*KS7X&}VAz zU(ijo+y7Lk%d;ubjc9&qpZCt`L+%cCvY;TWXUlh{On%(As(f`x@BRa~u1uJ?%sZ3~ zw{GV0uYJ7{tK=TVOccK>8pT zEPSxW+jX17@qga3>zg|{UpJ#* zcY7>~cii{a*j0IT_fmu1gp)~jk%IrZsgIrDSal8>t&gouZ#d@Lv$Ol7uLdU9ZV?*lx=T`$0kU3CJ;j`=V$k%VF6GlmR_dwyFM+^UFPg*cp9qOy3QscQCzsT5Ptf+$*R3!o2T0*cXUiATX?H6xa3_cUU3n|clB!=8R0W$p{+Lq8zy8|p zpnp>P^<%{k9XC6#%yOIXDd`FH(M<-$3L`SYvIbfCP4_xB-q>kc^yplFX_vEY)%Vqt z537deW?pXnN4~Ir$@=c{9~aU-t(;}L+o#6cT4ogk*3W_x?SBK>94!JfB}}{9A{s~s zqw{jV3Xr;ox{9n>VY`Bl#8q@G6ux=0uHL$F^xT7=57{6@nI+4%^+GkB<@OJC{nO9# Os}RnM;5M@p^ZpO(S#B`^ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/9场景识别.png b/web-admin/src/assets/logo-img/9场景识别.png new file mode 100755 index 0000000000000000000000000000000000000000..24eed9f71ac1e2adbd5724ee8d4238941617f35e GIT binary patch literal 2562 zcmaJ@dpK0>79WIiX~Iwu#-uVa*KNk^IgHzkjEw6fPQ;km!^B+7Yz%#!_$vCMQdFwX zC6`l4a!9GrobESCRJuv^L?~V8Le$xm&i6;px8G;)_kGv9erx^Kde?fM{YOy1GGhZv z0~88n%=Kl5AoKFcccvclWdx)TAk%!96Ap*U#c--X386ei@>mGVl?vjZ5J(_OOS%fV zqEI^PCH!zWoafIJ%B4iXqz+LnRUl{-%GF)15C{_>7#j=4Nn~!gH)qb`uo96QZY7OJ z<|(|Pc!_Vi5(-TZ;0x0egrErL&ceE?nTP=?1PicgX`)QURJ-A(>@tz{q?m-mPN~2N zZn*EH!g)bhZ@Ch}(urh(kW8jxT|gp*?hMeVPFO0LN+yvhB!Eny(3mtb6JTI}JUGOg zQY2=Euzh~`LUwMrco6TEX&b-7x&UktAcKe|2uxvVARPo~ zAkCA`ac0ncrmo;Y0rLGf}}u8Nl{uv7|> zf_2~tgc8}L1V4F0-veetN=XVN@=?mA*r^mVCBL9Rhg`%001y)(0Z1n}y8uE0!$m|P zKx80ROcw&6m`=w1z>EHpy6+{5NRTiT(`=Z|LaI;zP=o|PL>CiWXwCqE0f@x}F(d-T zkeCL6u>g*QP$W%O&0nf$T7;D5ePWqb0~4_-yC zOT=(6B}Z|#gw^lR<6H24omDiS_89JwQg-N8&#fD~3gi9RrkXh>?Nw|O$Mp^toUOcI zXHVlY&#hrPYsNKW=DheeGz+uAW8BI3_U(GbSDP=sH)^X)PAqD52VV(2#h|I+{`cf$KVu9MQ*6I{(Rw`hF5qf z`&RE7OmiB4zV=t`f1z0V588VP*@;}oO$K{xn`dz>8+GDmT^jdac%Es%EhrSxjn&hwIWVh3zXpCs@%-ijD&Wuc4wwg*#l!SD+2yO@j3T0Qt4 z^BA*BA3QLRwO`}Ps%X6@Fk1{W?`u{t7ch1tZ-I-n7MI&aUx2D9hu@fbJTfi#q*nAW z{%h+Pb!@X)u)%?+AB*($w~4InqK@SZ=gwZn*!&Dc&ptl4@`=@3%(%lL^YIeByasSi zT^EmYBRf_eRJ_Z#;M|_XxQTd7N9JJ<>CMPfnRipdLhr49epQ>>nKi0;?BO>y7TJ>? zGk?U!XVk&h%HYURb33zLv277m*rh8&s_Qcc3po}{H*L-mMUu@O-;?=+mM5$oY>Gf0>hoRQD635St6}fK_$DGY#ZgOcoRDapGu8?d{m3*6)Q~D*TP)fi@grADOka^rcTz?BhT+x5^ z{y>aMo4lAVIsi0izMQ+cBKi67E(6-W9RB4QER;;|K*ZHvbqryd&Z>85CkD{L^#9md zx|?2XKF119Eg1Qb9>el|d9!_q^|ff;i&X_Rr;L~rAQR>fvjn#0JKOTw^IELO26IfT zEVep*EMAh4AJsV<<#>4bWsf{kUQpYXVUpA_+icU9^J%h$@0(N9-J;tkeD*oP1NIoH zrXh`AZrquj@nU472wi^4X+xXEL5YJEg^1pd2_We2)&xXXTzNJcYoj<@yWMVV$7@X# z=2QCu-Thl#-<3pXY#0yNYt*%B{-U~>=K6)@1#a)qK2GDZ zgLZ~Gr)|DnU*~po_$%Nv_|FIaSe=P(;$zE$fRSx}%|oN4;(ZRr=M(pK85KD(jeoxK2~>!z1qC@JyB9~~>Px2pYM^swSqpMTFC z<)WOh7jT*U_ohXGAU+h8pJkzw`%uk0TM3%vbF7^s+^fY|T30N$wWgf* zdB=-#FDu-pE7dvHS!B^rU>Aj&*y9H1@S;i%#Bb!K+s5J7M%ue20CBU#YLi9Dd9InO zQI)U1ScB2VN}D5L*$!71>vr^^PNL3~^+t?*HEgwOxoN9tSwnMuMtkokux*J7zp{I7 zNo{{d>s%bi!t$fqBSnv)W2c?CYVnryLJ7<>1rL^+UHa!|pEe{ZwOd z-2Gn1*zsEQ&dQ^wcds*fuX&ve|Fe)8q2sJeJzy=T%lMvs;r?MA}A zimWF}Qf02`xAjl%Z?EpK&T2Dk&QHUm!yzWK!z-ySh-=Z5>6N>;thPM&#nO@8mn(a) z<<>(UY35n?eS*8zg9hGIS1K$b4Tj=&bnlxmo#=jgh5H_Dn%_mXbDSF2)uSsjv{0t& W#y@ckSH7J5E8}tk*fm};zyA+h3Ks1E literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/Notice.svg b/web-admin/src/assets/logo-img/Notice.svg new file mode 100644 index 00000000..04858d23 --- /dev/null +++ b/web-admin/src/assets/logo-img/Notice.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/bug.png b/web-admin/src/assets/logo-img/bug.png new file mode 100755 index 0000000000000000000000000000000000000000..ea1bc7ba8af7a914a49f935b68fa3a41690994b9 GIT binary patch literal 2943 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/build.svg b/web-admin/src/assets/logo-img/build.svg new file mode 100644 index 00000000..d10cc0e8 --- /dev/null +++ b/web-admin/src/assets/logo-img/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/button.svg b/web-admin/src/assets/logo-img/button.svg new file mode 100644 index 00000000..8cba5c8f --- /dev/null +++ b/web-admin/src/assets/logo-img/button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/caret-back.png b/web-admin/src/assets/logo-img/caret-back.png new file mode 100755 index 0000000000000000000000000000000000000000..ebc5c00ae9b5308dd1b8ac5b335ca9083773090d GIT binary patch literal 2843 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 \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/chart.svg b/web-admin/src/assets/logo-img/chart.svg new file mode 100644 index 00000000..17313e2b --- /dev/null +++ b/web-admin/src/assets/logo-img/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/checkbox.svg b/web-admin/src/assets/logo-img/checkbox.svg new file mode 100644 index 00000000..bbd37e7c --- /dev/null +++ b/web-admin/src/assets/logo-img/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/clipboard.svg b/web-admin/src/assets/logo-img/clipboard.svg new file mode 100644 index 00000000..07283f65 --- /dev/null +++ b/web-admin/src/assets/logo-img/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/code.png b/web-admin/src/assets/logo-img/code.png new file mode 100755 index 0000000000000000000000000000000000000000..f943e5ff3ce4edbbd4a44e431eaab5a19b790d98 GIT binary patch literal 3117 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 QTK<8jxp`CT$)Sh-2fzd+M*si- literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/color.svg b/web-admin/src/assets/logo-img/color.svg new file mode 100644 index 00000000..a9d0aed5 --- /dev/null +++ b/web-admin/src/assets/logo-img/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/company.svg b/web-admin/src/assets/logo-img/company.svg new file mode 100644 index 00000000..5f40c4b8 --- /dev/null +++ b/web-admin/src/assets/logo-img/company.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/component.svg b/web-admin/src/assets/logo-img/component.svg new file mode 100644 index 00000000..6e4e3104 --- /dev/null +++ b/web-admin/src/assets/logo-img/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/dashboard.svg b/web-admin/src/assets/logo-img/dashboard.svg new file mode 100644 index 00000000..73239c1f --- /dev/null +++ b/web-admin/src/assets/logo-img/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/date-range.svg b/web-admin/src/assets/logo-img/date-range.svg new file mode 100644 index 00000000..9d47f089 --- /dev/null +++ b/web-admin/src/assets/logo-img/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/date.png b/web-admin/src/assets/logo-img/date.png new file mode 100755 index 0000000000000000000000000000000000000000..40e1a6c0f91091deac04e985b1efde0d235ebbaf GIT binary patch literal 1988 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 RdB*g=!{hj{i \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/drag.png b/web-admin/src/assets/logo-img/drag.png new file mode 100755 index 0000000000000000000000000000000000000000..50f5c39b5e80d2673068ba51a4c303728fa3c87e GIT binary patch literal 2976 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/druid.svg b/web-admin/src/assets/logo-img/druid.svg new file mode 100644 index 00000000..59c0e6e0 --- /dev/null +++ b/web-admin/src/assets/logo-img/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/edit.svg b/web-admin/src/assets/logo-img/edit.svg new file mode 100644 index 00000000..f0eb43d6 --- /dev/null +++ b/web-admin/src/assets/logo-img/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/education.svg b/web-admin/src/assets/logo-img/education.svg new file mode 100644 index 00000000..c5e1a187 --- /dev/null +++ b/web-admin/src/assets/logo-img/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/email.svg b/web-admin/src/assets/logo-img/email.svg new file mode 100644 index 00000000..c949aa0e --- /dev/null +++ b/web-admin/src/assets/logo-img/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/empty.svg b/web-admin/src/assets/logo-img/empty.svg new file mode 100644 index 00000000..5a7d5303 --- /dev/null +++ b/web-admin/src/assets/logo-img/empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/example.png b/web-admin/src/assets/logo-img/example.png new file mode 100755 index 0000000000000000000000000000000000000000..39d2f1587efdf92a96bde4507f40478575157711 GIT binary patch literal 2683 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/excel.png b/web-admin/src/assets/logo-img/excel.png new file mode 100755 index 0000000000000000000000000000000000000000..c6ba507cabf85e88bebd049e64dd8c5c88cd31cf GIT binary patch literal 2799 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/exit-fullscreen1.png b/web-admin/src/assets/logo-img/exit-fullscreen1.png new file mode 100755 index 0000000000000000000000000000000000000000..b8dae98aa077cd96a315eb7038272710ba151510 GIT binary patch literal 2235 zcmaJ@dsGu=77qw0xH%%N%1aI71BE6F@N~|Z`M&Rd_jm8_zRsEa zsK`}VH*Yr#27?ub@ng_6!v4;1LBEX1^kH=ILIh%DjaH6qmgr#&SEfybaYD630mr}+ znQ2oe9E`zC+op;YBVy5NmQ<@IO6)pBqgsceF__?$Mx8{O3?sNiSfSFefhT8w0B|Z9 z8(2pZkwrQltW<@i>)|!&k+IVBWGPbyto#BOY-FJZ)G#8!8PzEo1Ix$;-q~fLd%Ktf z;NGbq$!y>~DX}OD$J6Rz9GyreNXcXn7sMn|=v0UX;&C7uB$LP#5=16YXe=6;1u<|R z9su>Gm&sW%{Ll}+&=VU_B8ZMfB5mHhnYbAuYV`^dg~?=+$RG&>38)6aVA3EGBSB+W zG-ZJg8>D)b4pC_}IJ-qjqBa#_11Qt?A*gjC(MQ7?!-qtnDI*yrIueCQCaKl-xZY_S zkQn$68lTiQ#F}(4DF!xZQ}t4`9`Z#~U^I7s?Z~c(vSIyQuR@C=N#SdyscKk*2>EOP zy&=j}G8Uc8E0hK`yox%z=21KHf!c%@#sNWA*#$RGtJUuKywE9@BHf5>PH zVHr~n%V{t(5dugkMUuU1{?tWNBD6K_+mADW9zISLtU*UfkIu~2t=B~e*X3*Z`Zq$m0>pQDrW3~k(_TEeJ0vS!RKogPyD^> zMXSfu%S7kLYJHA7lsy@n$nsW!g5;eIpnkZdaR7Vx3rk-CJ$xv+cqGTQAA78eYBjy$ zJZ&j@=oTkhtKa)eUsTzSC6aviQ($hVm0Pysz9H!KZ;P9S-KT1VVvo`plrF_9m;S5; z+@6tOr)xFQv+77x-?H6x4O@BsRg0otq9O08_2}DJN^W?|-BLM%UAe8Su0feSxn_P{B;(*cr{|>uWtLc_L!l`6?iWXkBzhz%O;{rd(E-O8J zfn6Vtw5>FcXV6n@Cs%({h_PI6Gkl(hd6aLeC0ZnTpdh8vf&R74p5YvFn_tI>>sByW#+F?so}8`>5e9&uOeQ5}qms7W3NrT~m zQI9Jq@~X2(Z4DNnEwvvTA-#ir)$5ee+WclkRRulL<~67_ct5wFog)}1UT{D$y@<%L#$PDyvy{v4_?PT*IKuq#*1`Pc zFE+FncvfE9rF4KUN)r}7EA+sGwwdJnzAx^`35yiLQp=`jeJlQ4cW`!3jEne)&X}M- zmi4t$m7MC6;PsWcvuTOZ&lhP;uuaFijO@#HX!7}HdnhKZHE-tJ+3Sz(xH*}qvOb?T zds*~RW%Yew)8$jciNT4oJu%4(vwSyBJY?B_Cxn7X K{)v!;?f(aJTay9+ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/experience.png b/web-admin/src/assets/logo-img/experience.png new file mode 100755 index 0000000000000000000000000000000000000000..94a43ec2f7144ebb67c4e4de3f980980722a4594 GIT binary patch literal 2891 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 B)xH1# literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/eye-open.png b/web-admin/src/assets/logo-img/eye-open.png new file mode 100755 index 0000000000000000000000000000000000000000..632fc4f28fe1faf74a470508ad3fdcc85e3b96fd GIT binary patch literal 2688 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/eye.svg b/web-admin/src/assets/logo-img/eye.svg new file mode 100644 index 00000000..9c7df025 --- /dev/null +++ b/web-admin/src/assets/logo-img/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/finish.svg b/web-admin/src/assets/logo-img/finish.svg new file mode 100644 index 00000000..0aa9d408 --- /dev/null +++ b/web-admin/src/assets/logo-img/finish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/form.png b/web-admin/src/assets/logo-img/form.png new file mode 100755 index 0000000000000000000000000000000000000000..fccbb69fa1d99a6221c76a75eaf4bb9b848d0e1d GIT binary patch literal 2131 zcmaJ?ZB!Fy79J7Mf@nn+`KS_t_<K^PzX@Ll~!cgw$N1xz z`URP!R&dFQED0#l^D&h=D$juJ&5Mbb=Vi)a1$oEYq;L~L5NI$QC7Cn_wMN9mCBNWB zh`qy1Ba>dZ;F(RUSuMgL7_zA1fs=Q#2c5a!f`!9qvhn}P;(%v&X7){!!S$(88iliLU>S&xmp}G zQMAUOB?bXzlpEA~T&>fR9E@n1E(_<938gPn(C8(SSHxQ5VxfqV(M+hGMyG-_jmDAJ z3vVMHhy7p1YrT!}xq6HihZ%KQ203va%Ah4MQM+FbNRY#i5HeUI0f)|^FLAsM3-jqBkRyOVNB|L7 zJ`6EA9CieY#S%pjWSk|eSZl;ltsGm5t0v+uVi~`PMfe5`#dU^wo$laL2S`;qTxV42 z^dttIN+)fVpmMd=VcF(5p_d5@FoQZ9Q-};Y4e3RR5%p^%Fj)+g!$M&Si-plCOo)wA zI4B%OVQ`dbFvx~DFbb0w@rs|7?q!P-79tJ(k{X05XUI{AE~h{WwvrOYVnP%Sq*PLr zm;zQ}N)`sEL1Y>sk>=={pLNlaiD*s7_SH-fFR!Kw(-Na(AZBK>`#Yro;G7{AM8uoE zc~reW$}85VD?OyK#5>k^)R}+uR=vW)eRgV-e}RjzEN+chC8e#k3I_PDgVCT__uUYfFdSs>-?eBm5pNU>L zU6j>2dYq|YN0Lw3HiZtdd*$CK>7ybxuUmT9{OsZOp;aFq?b%n{xT8#T z_-PCBy}PTsB`)@!*)!-~V6~K;pH=DPZt>LLT`9RHb{^($pUFEztKz{A^H1_hF8T`4iw zM9>7lN0Gr=G$J=5p0m8n{u&MmcyBH$ILY)mk z_$@cov_7ObBfj|Q`~4d4zKY8Q(-xN_1^+0>DXqA%e%YlrdRAC=7KHp&r;9BEzByD@ zWsysdw1J~BEhln(5+c>@ym_9Hzh2+GGLJman()M)^eZV98T({T;Qevs02E<6oqO|a z<(=^9GO2%C%UEn(@#ijWeqHPCtj1>(n@?I!W_uMnrT%W*<)Jq+Kh!pB=WVD)TTJap zra}%Z_;=>oZGNWqi;%VN*V*RbH}?EUw~i)en`cJO1&npB9okd-!HT-U%~_=Kpt_2T zj6q=cwr^b{ zQ$W@{9D$sr^II=kuM9es91Mvsu_yAj`H?W*+#y*HeUI9WU*qmwmSX_U){LsYkcMv$ zKf2uBc|5)S=5J4k))j|e<241g{O-F4@oC%D%6jhX z^VE@uKTQ?7lxU_OHwM<_yi@(RUClMZ?9n3I#lvqWl7G|WzpUiG@OEa9G{CYh z<&Qf;YIe@xNw&nu!N|$r!i6tabu^fy-d{&I-e1@Bryt%k{Kdm7+Q$~vi(XAHC|{^3 za@tjq?qPkDlzXgfZm78<*N<{4{lfHc)%X^Zni#guzUOWr5FI7)h4K4R$8TONj1kmF HrXKkpONCGK literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/guide.png b/web-admin/src/assets/logo-img/guide.png new file mode 100755 index 0000000000000000000000000000000000000000..b87b7edb0ef25743bae9397f36e290371775939a GIT binary patch literal 2159 zcmaJ@c~ld39*@cm0Y$WxLqd=xXzocuCIU(lB2hzWM1k(28IlPJkW5Sh3CFGy}9a_w6zP&r(1L2b2QR}sXAT2PDb1i|(XU+2B~9pCwWzTeOHdT;W= z!?t1VTdBL_90g7py2s7h4pIL1Kyf?W=JHj62E z+=7ZeArSwTRFo(j$3wI*jzy-Dq*N*$=MR!;EC#@&6LEAZol2q7C;*j2V{({O4#37O zK6uodRwn0&`GQ4X=q(Vh(CalE3dLYBkPQGC(Z*3|AP7>ZbPAnLLN!Rb6tx~QlGHly zB@295C)Fx7dL^R9nJq%GNRmDfk1~B5f=VM2y)&%VEhY+08N~=`C^RyaqEeaTTF}<% z#qe)5-m9&PNYTI)F|0$9v{JMla_=QDn!7)CWL8Aka6Zy1(V{?!d_(65Z3-}nLvxEa0@BsDBnYY1^de(0FaYl2xO5M{(zLk_LtE} zFcpZEv!nnhXHoHsc-ik#_qIh*2^xlGi4BJ#rAr}zCM5wfmYn3zWB?>KAeWQmund&L zawZJM0(c5akz($e-*wTF2yIRC@!d?Imv>VItI<)?qBC>vY!o`c7TH36aD;Jm@^nmS zM6gTOG*i^Wo$4H1?^1y$I;=Vp^njOUYud2EhC3CUyCJsv+}6)3F7@URo|F@h5WH)1 z2;nCDdE%?Bjl@nH=BtL8S2a@yZrc_-tTQCf)}>8Py0hIMPu?B@T1$c1+at}9hL$@e z&a^zSjSJCoN4xmK_~(jBZp=+zm2UnCy~tVNsJGOgsn?~44t{mza@ma$uesAUHy(BQ zjrDu>U+VAb-#GW{v7oy^)_K3HO*UsOQ$PG>Rmr3;!53R38{RgNVE?Ek>cff|G2Y>5 zUYnvaD3WINGi2lEf?-;DFsfG{J5qS{X`!&xc!H1zIdt0&+Uj*N$R_n5c4>y{?C<~?s3x2;H)6$!L&|{mruKU&f2fP>~o}JS`|N$S2X<~am#P8 z`A=-oHe!4JrH}QWQmV$?o(`6Q3d#XiZG#^tbK_dy?d;C?=|<{yl|{Gz&hsH zOb0fhJX2zMzh+B~G8bW zzdZLYuR57=$CT9C?_?di?2S`fdChtRD$UtDXu4%9a-zF5<#PV!cM}3~t;w#mPVs^`TfC9d9hc;tHneP| zE7VZ#e_5D*`Xt=Qi66>XmXI^D`;oS9DB#rt;b{2lTjZco_0TfSOUao}jIgR~n97$2 zba|zW3C|lY?#-N>&yaY=MKj~7zzmnRbW?P7O0rMfPsV!BbLXPgWS?U8otO*5upDlz zY^w${j@8;ep2KA;PuI?-KXBVmxPRC>1bVLNY67P1T#pv6ba|e){`3EpU7aJiW;dCN zx=#*_&ZaT`=J<LKyLWwj`?vQA?(}XvkN-02uc?wVKT!LxX_>r%A$wD>$nor{{e&>S`GjJ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/icon.png b/web-admin/src/assets/logo-img/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..904e2c740c0e129f44bf3e14dc9d5cd358e2284b GIT binary patch literal 2181 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/international.svg b/web-admin/src/assets/logo-img/international.svg new file mode 100644 index 00000000..73a7cd74 --- /dev/null +++ b/web-admin/src/assets/logo-img/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/job.png b/web-admin/src/assets/logo-img/job.png new file mode 100755 index 0000000000000000000000000000000000000000..d2c61a917ed5093f8bf7d1f5b0c6cc1917368063 GIT binary patch literal 2270 zcmaJ@c~leU7EcX65D5wb9;7~pp@>Mf$&gjTk_8hW2oVHCl#onFPRPO}O2GF(mZO09 zidYa-L_sJ=Cfjxb?RC8}?*HW<9|ccat#Qv{tV)Wynwj7oyOoAb?maOGTuJ zOp%#>841AQ@Hy(3cvHM2f+N>!$ug@B*{n5SXdEse$ZU|wHHZmFK~mK^E@=7wEC{F- zTriFicXF8H2Qyd(rn(?kf|g&l}ZDcY%;{~hv_sTK%>&A6e>i4sU(Qbp;I|93;1w> zm^W0R*q2BO`;H0h9G;Dg|P**%T^`LZgu|4U#caXOfvoI-}RD z1p#7|qiTamt=9ooi?S5`W)m00n7$7|Ymi7j8rB&1+lY zrnBiG452@Z5ju+%>x?FuPL9m_RbzfXUZhcKA3|hz=Vi6q^}&rAmXt*}M=7LSoEA;~Ugz zglLyeezYb$rD=jF{Gvi65Dp#TU3BJofub1j0u(*&IUc;P3)P)x-Icg`*tk?>;pZ_|fHZ^Zl>xkTiMvJ`}4jZHS+;d^pdRW_7wJm5CCvoK6q zsc|k2=?X}8*ntnP+5F;^xd^Nejdd+`6c*>HG5{U7*tOwF+~aD2ZRF_Stx0ZBqd@Fw z+?3+^NpwQW>buN`cGcdEPWGDUYv>4S-9aAB z_8!}I6n}}>GtMdc^0;e~@!G2j{uJr+RHrMQ+1^bBKU?P24XiBPO&PbWemUpO>z^Gw z;Hh-Cy9v(F?$d?Gw?k8eA00OqKBQJ(n4p(ChBrjGRF%lD_1)pw+Sb^cCg23_gW?=# zyQWs4_`tLDN5@w5q33faA6fb&93u?H|VB z6J3;|@EUEGsQa<1DrUq$KXQL^U4ifTxns=Zr-I$;b)mth#;)EU6#rC|!&II0=n;gh z(^h$s(tkjU%JS{-e$UcV&m<9^Qz!ENJN+~znKjs5`_#GAVxTwsK3KrSE$xVKOL~UZ zQTK#ZDq8v+67yc}cRE>ki`MjOLRDsR!1w)g)a-YOCGv_szEk1qPm zdr{|m%;ownso;b>n_l4T<3t|3pK4mAIW*D#u6fP9fp^V&56)Y9gvJi(T>qrQai%Z* z3<{b1Akndcvuk)?!eLe=>*+A)2RmL0o7&WN^;F~B%7&uP7$Ns$ox+;~;8^?PRl~7? zCHV{j5beJ_OtyeQFGs!1LsL~LM?F^OavVGH57{FdLocm(H8P?;JEagZ(MOX7f!Z}o zyqhhBcYiC}>?AtTsJCt24Rps?*4SN+v%OhAc*A9D602X`;{N;MGv9`n&Dp-@o9BNw zlnC9F_@{y@-|5|7qlx`E{<#p>Rb#=FmfWhOMb|nWu5gojlk&ZmAvsye?>wUl($BVz qrHwBB;z|4A<>51*o$ik5g~_;lg4xfh>qWiwk3%es6twV?^Zo~7VUQaD literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/language.png b/web-admin/src/assets/logo-img/language.png new file mode 100755 index 0000000000000000000000000000000000000000..0e7fe781ad92ab15faa3009d83b66827407d3fe7 GIT binary patch literal 2375 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 \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/lock.svg b/web-admin/src/assets/logo-img/lock.svg new file mode 100644 index 00000000..1e817a46 --- /dev/null +++ b/web-admin/src/assets/logo-img/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/log.svg b/web-admin/src/assets/logo-img/log.svg new file mode 100644 index 00000000..121105b3 --- /dev/null +++ b/web-admin/src/assets/logo-img/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/logininfor.svg b/web-admin/src/assets/logo-img/logininfor.svg new file mode 100644 index 00000000..12ff4a11 --- /dev/null +++ b/web-admin/src/assets/logo-img/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/model.png b/web-admin/src/assets/logo-img/model.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ad43d28d4dfb15a09bf55b1ed9f95f61b5027c GIT binary patch literal 1356 zcmaJ>YfKzf6dth;#Zp6S5z)k9Xwo)ic3%6K8Cl3OyDQtW3*Dk!HL(mcci0hTW|^6V zU19``g;d&7tVSh`HtG)}g&<8+(?&rP8*ADa{XtP78jVe;rq#wDjn?R$T^9R;bdtG` zbI*6qcg{WM9&C<1UQ%39j37u!q#+oG^KR$AXB`~bSnpLhJ!FRx_FhA=dqfi;0oiB+ zXhaj+K^%y3w(A0@L6E!q)Ru&uh&J+)p}9my$Cc4i5RD);b(xeXbpRV}1MRBr$F857 z!BAE9WBWW&GMW-VQf=rp!QS3ji`3g8aWYm{i`Ha#Xg~wDh-S1--QqKTEN7R8Ye!6A zXimlM@MC#WiD)w_7$!iyE)thWl16=;i}Jb|4_%GYBux?|MKB~zd3X=WGc3CNVbGf? zD||c{UiJldek^I*DV`vDdU{+vjLR_F35w%5f}{zW#-RpoWp!K3;JQ^+un+{6WU47! zHFVUmD7G1C+mAt}`4F^JG`eC~x0VwHQ$}RO6hXO2LereMa@v+12mjMpRoiOGrT`HK zmXS6kcppkt0St3@XGe}AWWzU^D!df2GiXR@4d`|x=*QrROIBsxOLBrha^Vom2ox2n zuMgLgtPlv%o^X(*SgK%SHEg}W1qHzy2n!)DhxKq?j`47wfH&l3z2O2jqFc78OQ7Ia zg?^W@+#RvJU;@!L%ofAwEL1>q(y$FHX{1n^a#85^s3@trBiZ5HP(I)wFx74#hfPC6 zb1CN4RVc6?pIekk8YdN*!QHat##xq@aG9Y<#VyM$P0`pgUcN1L`4WW^7)GkVhIdP} zBr=qQGqP8~eI7T1vy7tP3XnMkC?3GIF&F_U5>D0JRz(F7EKO&*(i3pA(p5l*tz^QU zskj%EBgkD+Bp7JPeD~YJhtGZ1{J{A?tl{DDKT9|LUP|9Yz8Tu%TbhsXr_cUf+`akH z6T-HALm$n5{ON@a8_#ST`+Q-|y9eG`_;>yK&`Up#96xrvvZ7<+Xm7S3sh*lGy03Z) zMc{C4`{C*P4^x{CY402RPoI4{+Ef#tI53x5^mTP@af5RrJG$ZO?(tuiBCjSxT}?mn z8hfLB*Nq=)KX~laTW>T^2DUu8dFSQ+@yatBTL;#bCDxprxi&cVU~*UYmFY$DnfDGh zd_Cxum4AM|SbV-4xm0;Qz3$e-F;|)P#YKn1ES5vH4uo=)W{ZaV(}9ZDpU=*hs&&uy zO?_pIF1^AGd$;D*y54@G@mAIJ_xt;%F3nY){Ptz%Abl*c!wredJ+kxiiQ-?MIx_Of zUt?Q+?8s~W#tC9{Zm1o9^U4hOWl5~<<|%4&FmEb=lqFgh_q?#S965TVwkVy|2b}jU M5{d;U>sw#^5BrtU{r~^~ literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/money.svg b/web-admin/src/assets/logo-img/money.svg new file mode 100644 index 00000000..c9d6889f --- /dev/null +++ b/web-admin/src/assets/logo-img/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/my-copy.svg b/web-admin/src/assets/logo-img/my-copy.svg new file mode 100644 index 00000000..84866cf2 --- /dev/null +++ b/web-admin/src/assets/logo-img/my-copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/my-task.png b/web-admin/src/assets/logo-img/my-task.png new file mode 100755 index 0000000000000000000000000000000000000000..5ec8172bfffaf4f9ca3b4901dd7d765790c2461f GIT binary patch literal 1862 zcmaJ?c~BE)6b~qe2T~3XaJ1{96x$?wCUVmTiizVc>aZ4DZGcwa@6XV3~6i-FcX%wKh;OSHng_F72 zrzr)G*Ke^o*~l0TQ{)6~5#k;lA#1U5XdX`y!`g5nlVX50D&1^Vg6)UvK)_5Y!I=^R zY_Msl4D+NsJ2gEoA(_a_BxEEQGXYSra?XH-VsL=9WLX_@Rtfglm2-QK7y^MF6(&;& zz9wZfBmx@RP61LOEFfSQ1)^m_L@E|ZP(FadC=9^}B!UHqL@t5lA`Iw#K+c<;G|7{+ zalO8{lM>8e7@Hh|oKC0EDH785bO@2jWDtx(C@SDI1dd!QgR=swBcjiOmU0kwvyCy+ zR={HsPor}fCCD*-9fHMXFuXBrb@V2ROBuxCHV6^Ikj3JOt4G_xBvJpNSaBx6qac;uq;l8 zi8KhJQ>)|DFs4!IP)VE?LolSz#=EdECPguoP8Fxosd}&ynN%i{$RsMMPK-(8`mlPd zgTbu?)#umD`R&EZ-iwuM>=e$>_GFsQ>g#~S44R=G8MF;R5g`IZ8F0dE^+?8hD)c&F zEoC>)r^q-vZ2@{xEH}S{0w#$T<0Omg$3-x3%ifSlnK5X{iqD|9}v}*sQN&cc&WKLa{L~B zmLa?jAHF_K+OpQ&Qu=sd2lB)95_jv-=uVR}c^J@w%mdqQwcWw(mwcF>) zkPUU4P80`byZ0R`IzHq~yfOM-o&M}mNz2H| z9RW{*6kFLk-G?WUB{N$dwZMgonHG%H${LvTM z!dVxcb8m}}1dDh0rUqUhQ;HsIs*#E^w0!!mM0L39%&V$1gYNFd^w~iVj;-aTH@G{- zv9)c^QNH}*$qPDH;RwHI+x6qWb%t%&Qav^FF5h)IIaRqkMS4NK+3&|o6~gi-6PCyi zbVUUX9F)7})GYMhFL$gfT0O)&D(9ievN6N$e12asdT;298Iu?4rx`D!^Sbmou_@b2 zTt4l=zjTH)tP0NgF!qV_`s};m({j~|#DcU%<8Oy<3h-H8+SFCQe17L*S9{I5PrdGc zd)9io;%{xWa_}b&^?%Ih7}GCu@xc%mNU*pH7Z>sc(8k(9t?M&6W$18AI zlcwnQ>?Ixi6Luh?bks+VcGLL&FDp;2 \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/nested.svg b/web-admin/src/assets/logo-img/nested.svg new file mode 100644 index 00000000..366d3bd4 --- /dev/null +++ b/web-admin/src/assets/logo-img/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/other.png b/web-admin/src/assets/logo-img/other.png new file mode 100755 index 0000000000000000000000000000000000000000..bdaf07b9183b7d868fc43bfcfc7e7155ed660aae GIT binary patch literal 2119 zcmaJ?d0Z2B77v0P0c1Upt3U`+&K#4ABoZViXD~p-h+E2#nLvPK(j*c@ix}ik?1HFt z?P5#Br7Tv?*t)a}2vSyCETvvWx=3k(7LaPaT35Og4!3{!>3lvjzj<%o_r34CK66-- z810Pp#9}ZQ=hzrQGJ3{aZhKqw$xJN#5j{NgLYY1VQRoez7RGQPBooHPs=zEb83v)f zZ(M;RFc|9tN~ugQ6DP3ch>8eWY={La4T{EKBDNK1KzS~#$7RAUJXo2hIPmutsL!#!haQv*6xo3SqxD&?Cn}5+7vKPfXMf#V6{G0z`>(m zh>#LuGsrAHpUe^onN&Ui2zfjakIdwAg%r9-zyz4Us*jgpd3=_D&u0ild?9NIOJ^}y zR62{!We90ZhG-QVtJdj3wH#iJt3>0jUS07*8YM|9bU21fyi z04_)j%9U!1CfL%U<%9*WR+$e&A}ylAEtQz9dJ zDQVN-!aFBT%0nFTme8}2w~tr!)0th^kLcHWc!@owf)FdLC3l@r|+Yb56*9wSnJm|ryZ~TMty@?n)@{3 zSQIW{;?7$#!2POxPdx<{-t?aJL~k|fy1Jl;~gR$|lS6IV4dAa26+ zF3KD}dw}(+uc`hs!z%9IU8*XtwEp>FscR9Ys7ns|>8@<3#d--`yN}1;9QmzlZAhL& zQSti3(hHLI9>3}-sjR(8uC2r7LQebtGS%+qa&}f5h2x4nD0cRJ<$zOI(rzHhnA z)?sIDA10Z4;*Pr9dBwreV^+#+^nd;PL|-qTl6xUPrPw}g^>%jjnB#S9$e~P3g-IvM zcG<1Dd1Q-Qm+!z}Rg~~2@E2p&!tnz|zT#&iV@&bQB;jb-BVy3d9ay{B*jV!scdMz} z_A<$|A*vZTo!e8TV06|yP=;#8xBvb5rUy3^d5vcEfyTVr!RV)P#wYGMC%Q^V%EKGd zur<7(*JpIE$>Ft$glYavh(3O?wBaBX+v-@)8V<{T^@QhyI>bH=*ZQzzz0B=cSk;-5 z0oT1u?jRAq&#UaOf;jmMQ578>sv|eVOI{|6kd6kYQi&K&HTS8c&kaZ2%*y$+i zKiZqT>tJO0I_@;4StGaKuTF}J?zmsFaNa@{=j*Op(o z^O#Vm2Z}w1G5gy31$>rl<~N-_^C97b>I+vB-m^7FZF}e0h2hAr(>}f4cj?HJ?|kV$ z1eOrq9}jPLlU(=hayyh`6}0=&-F{hm+ntFguBBGOTkmpzo_tJmWvLwq z6Sj@*XN!7+J`lO}=g_d{q%&5qx-;>V!McrxoFCqKL|J)ncT@kRVm9Ox-1<+-0_XGF zW!j#q{EW9s8tplC#{^)xhqVp%^v3%!Gxsykx*2%@ec^4Nlc}HQkIx?TG8ZPqFZ{wV zMt@muKG%Tu`&r{S{gZ%b*BKMHv$T7_a4M`cbu_f%TQE5LBhwd>#*2MFIv_2>lWsxR zr~#tlBHj*T-`lhW>wq`QFZviw(Q~TexcUTP`Z(XtG`Z>H7IOn!xsm_h$WfbaY{Zb?4Uxxs$5luhO_^?}6Mp49>Ta?-@A~+Sz#XH1 zYxrhh!b$d9eNx*tRqJfG_|TbCl~(^48M$QgUU%;Y__8Em>&08&RhLM;KT!ZpF;f!_ l;WrY#Y(r}aAAatdf$2DDNNaC7vCr~rj};~gT6h`8{{iB3KQRCR literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/other1.svg b/web-admin/src/assets/logo-img/other1.svg new file mode 100644 index 00000000..ef23044f --- /dev/null +++ b/web-admin/src/assets/logo-img/other1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/password.png b/web-admin/src/assets/logo-img/password.png new file mode 100755 index 0000000000000000000000000000000000000000..b1ddee142c44d02e1ea7c4a7d0bafe37d748d680 GIT binary patch literal 2420 zcmaJ@dpJ~iAD@j}!}jLVxMYl5XlBmLm@zZCWX#B-BU@ zbr1-I9?ORj1h2jekCq1frud~ig%_lfxmg)36)06aIfU>8r7;kSCFaFKK@bm2-gX^w zMIhADgdv-io7o#_e5n}ATfktG#4?zTK)8A&$#{Gbq(sF)u|kO(`bFDCG)f4%p~FaQ zfGzWa;)Fgaaws^(FNB{W;!{DihdatOi3TeWLrNYhNgOXx(30HHpY+n;{el>WMty=P zMQ-TNPHkofpuD7V2t~#M7(M_HP%cy~p6pB{5!Rpx00F=OcpMSH;7K$RKqFF6UoJFk zO%4iZK@9INw&0T+I!>vS(Qr7GN`+Msu~K;~4o{_0aR32FAYfnwMv*L0@{%wTh4rEa z2BhH2g)*g3DnTu1WyclSv?XGbnfpeo@D_xB!JrpukXXFQ(@wE{RH} z5=m5&Cz^K)odPLC|Qs=EL7-ozzj$(OoTvhxm1k$lwz9j8!k{tF3vmm~}eop|jtEal3NhXQp9bV1x(Sa3ti4!G=6`#LdYaWA}Gmdz2`BJ5zqIOc9lo z)id+#<_Gr=y*JhpU)Y8@7BlQ#p0KS#Sv$dZ4_cTP>`>A(b!S~lY$aFkm6~t*s_6XI z?Mo=?&omR&q}rYHfhCUpc5U1v_X2b|eQjDNb!(RnuW)_8eAZ@`yw8c`!s#o^p5sNQ za&PGu80_MG|0YsVXxp9>ctM}r4UT7`mxyyw7?^)w1j*N=y4T^_xH4n#9NC1X5-^ClSNBG)`1`KzQJQQ zEyKpQo}Nb_TsXql<@}q3;KUBm2eLI#qEX|$gA+?y59hf z|0CwS#FCT$!KhoTkxfIm9-r=E$2)mw?T}QIr=>@{%&>cA+q2ETlBkz6mz>yN!uNf4&9AlAOkwNOG))!~?*;$(OAE^H; zAmKlmgric2JK2QtsHI2$7+Mz3LkW%7Aypm-gH5On?*bF|bp-Fr)We4lS3J#Pog_bY zEcZ^eU=7~wD%@h(o!XJwk-P73YK>XKN26%}EAwur{YqCAMYgPY_#U~TGqq;A)ZRDc z?&O$SYs}qh<;>*rG3Ix@0Kl0bN1BBuT+TF}660SznH#L$HIvmne@vOy1Ax(!uCv&xb|psftAuCJtpuV zJ&jXwBy8~VmIqU-rO~%V)|Q-0oA2DJFg!QktlcIoa>0i2SnYiVW^FC5B6i;Hls-wY z52e?rREZvu{Ej|zV4GVj0X$!6etSme*Vg{_aQkJKAU?N|lJ@4TA$FYetLD=CS-}lk zu#K(A;_f}ltMto1=dQiAbCn5)c*w}9D8V!QN&UW>i}e19{S8|i@pa{Wp2{k22Iu)j z-Iu68R|0j)aIhSg!Edl>8h%9^L^OTGfyHK)v7u&t&br~A13#EHv_8DS2wC4hncGln zB|0=bv5{~_@AOZPx}6RE{@dwOw^h3s46SPIM24*h?>gK!vFAP4*J`4coF1ER;u}nB zDSe2}DZFhg6Ad1fwk5wP@EW(@UY+pz-S6YHE?Nh3!0*9#lIPd#{S)0)vrT@#t!z9f zN>9_FtT`N}?_`GTl8;(%m05`BmDhHREHOJo*X*1(orF4!mzz5pV(e;a;)foN7!HM| qYN9?2mL;m6L~@XvL+|Dq5NZgOZ#*O7V#%F_{~#9Ak5NyL&iEffD%-UH literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/pdf.svg b/web-admin/src/assets/logo-img/pdf.svg new file mode 100644 index 00000000..b3c99d51 --- /dev/null +++ b/web-admin/src/assets/logo-img/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/people.svg b/web-admin/src/assets/logo-img/people.svg new file mode 100644 index 00000000..5872f666 --- /dev/null +++ b/web-admin/src/assets/logo-img/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/peoples.svg b/web-admin/src/assets/logo-img/peoples.svg new file mode 100644 index 00000000..8b9b3f1a --- /dev/null +++ b/web-admin/src/assets/logo-img/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/post.png b/web-admin/src/assets/logo-img/post.png new file mode 100755 index 0000000000000000000000000000000000000000..94e95d21fce2565ee41b48e01d3d17c92aa6a8f8 GIT binary patch literal 2274 zcmaJ@c~BE+77qxBNS471LDV*gc;x6@kVHbv38+DZz#xu5=yXU3IZOfp!~+?%z*!Up zMqv>IUC{wVMVUl79NYyt9Loa~1+Nu>U|6LX6|e0mxbufKUDf@4-}~P0z2Cd4I%|DM zAlk{p357zTgM)aX$hyY*IyxX{62jbv(xr&JyxzvaO1kNF@1dv1^k#L9xPM50Ei&Jnao!6uV z9;}13a*bZDRsmLv;y87Zo{2%2ehERT5emN=R_P`Zg`|v-BGwRyc#xn}TI2ext<#6X z|EKXyZJj7p0~11FojOSiA@z`YO@fi!{k0>jBEp8TPAf->B2MI~p(G`&(g*XH7~}>o zkxLl9Af3wv=>k5D%q0@}9FBkk(zt9si7MdHh&1A)jc;K=nlFjQ=KBh`eD-H7mF`O? zQ|VN;FP}p56-;7-RXV*`1;LYk<%r)2EcGw346YUy>(yG3TAeuA0qbRIy;>(zYXA}v zPXv|<#gJTOl`OMX=u5ynSSwG4B?7Hl34Bg5L;ej4G^!s(ECES4P%0tgC=!T*qtQqZ zPC_PvQi?=EBN0iM3B2S_sr%BRhy)2kGs%WQfk=>;OoVV`iLVsrN2QQ)G_q8Rlfn|Z z6qZt9dK?);KqwNdUGt|dniL_eY2ALE3FPo~s$dl|N?K%QZegS|Q7F5&!92DorDymb zn`NHivs!-d?HyLt6%`&nJytH1&vrHYR1IX79p1I8%+coT?1el#*V9V=23Iz_a_)On zjNRBZr|_tXfy`waDmc>{YByBigjK;%Atk1>MQVuu_osXF2QAmv8l>by*Rju=O4=WE z^gVdnS-f?``270PW-zFu_+NGzO*0~GS8xg{47);4s}^m&IB&n#Ju_6FY-HYK+WM=HbGevXgBprn{BTt__6ilO z@hf#f3HLc;SD9vBOO~~Jr#R)T8d>$uM!6`jrlFU;@W|-VzpsyXH08(#zSG-|J3aav zVRq$@`$!jeC)&l>D1DRe=DpeTBxpJ|!+S}MT|tvmk$2(Cvhl4t|Ey^F=*japTK81f zUOZk?aKU`L@6?7h*-Kd`2OeCbJ&S))Y$>Q^&o@(7OVKx9@xn5<6uKuR-X0yE%4uW= z4=ft6cPZ_o^kRHg?$tE}nx^0Q=2zH;ui&Q{W&UG&KM8&}P4bs-|wNX}Wz^r?Ap-^;eWzRE4qqD%#9vh7VB_?YwV=W8!xF5QXhOijPk zwqzu`b$rimdQ$V-+@X>jm#e2hb+KefgB9!-dxY5}sxX3E%{eb`8Hm%AA3ilX8|!Dl z57(nV_WgD!Y;{w<*l_Z&u20!qedBg)<$o-*-15pdNut~+&Ow1f!}B?R9L9_Ukrx;I z66m%c+VVr{Aj?wVUFcY3?XWem)4r4@;*Ipbp4;9!Gq}&H4h}c=$_#Pg`uGf4LMz?W ztavxyOlhkf^q!jDpZL>~kQOhr;=7&)z2*HKPXpd)Spaj|3B|gLJVSMIj-}FcDoClo z|2RfVxN4J=)%Y}bo3l&A&gJeodviU{*UsWY(Pb--yxDv}oi!dCchBN&3afRGr*me(kuGsFqQ(M%oYcU!sP-ccC+c|y z!Kc*+qR&!~A6PN+A^Vl{QT12=>dE(kS1xX+B)Fp9oc?HAsCnP;GN(OB*c77-&Q!@I_=3)89Emu$LnE_-{EhYPXNwdgVx zT`+cLVa-QJV&%uvnSD1cdG9>1=6F`@3-q!IZZC6at+21z?InKbUibE^6yJI(Qn`gSo!h6iI^esN<#&t+2>8x82kfBnRRuTs`J``|8iGByWIkrQNYWRb`(!s4wV4`i0CVE_OC literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/logo-img/process-definition.svg b/web-admin/src/assets/logo-img/process-definition.svg new file mode 100644 index 00000000..5b5a484a --- /dev/null +++ b/web-admin/src/assets/logo-img/process-definition.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/radio.svg b/web-admin/src/assets/logo-img/radio.svg new file mode 100644 index 00000000..c2384483 --- /dev/null +++ b/web-admin/src/assets/logo-img/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/rate.svg b/web-admin/src/assets/logo-img/rate.svg new file mode 100644 index 00000000..15e1b1be --- /dev/null +++ b/web-admin/src/assets/logo-img/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/redis-list.png b/web-admin/src/assets/logo-img/redis-list.png new file mode 100755 index 0000000000000000000000000000000000000000..ebcb29d1049c5595fba657aac1752938a6f8feb1 GIT binary patch literal 2061 zcmaJ?dsGu=7LN#m6l}FYc}UGhz_^&#Z76`@Z|#-@U*4 zIz%mNJ0$5BIo5^9(**p=CCE^Gu z(+`#KWqvV}q+lLasVfKF)8ZP{iVw$shF z#V!jn)TXx@Ew~XgQ=AszR4fx0QwgRoLNHmB%9n=Cw&_F>DP!7U3zN-YF-<0CTvOUM zT#f#p#w)dL+H4ETRHHU5)2b)xVOZ<}6S@0yM@~h8jcB#iNE8L$B*XNXCe(~8WMV3D z!$6FPh|dy&AWJBR1RRjfhNM!tlqCQq5Wthm1Z)A@W#d&?DJYbIAfGP>A>kC3C*%t` zJRwiQhqwa1+=W$`Z8&V!qb|Qj!tXSe_orA9XhmThvuZJHldA(%X&8>#(l84JU^Cbh zniAF<%}&WuXN6t_EJLlvEhr+lVkXK|ibcj(P!RAUxG=&3=qv-mp>q*Emo5+hdOE^k zvkY7W5dds}I*mvEkh&KwN=S$>EG{-8t{%|C9JZd$LHGuG1dq$13pfS?-GCxO18U%* z!c-2GNl;`uyXFsFD<1Y3F7c_s!%gAN>*ZKfTT5Y63IP8A(LqBH-0$0E|#3& z-<5TByWfSFm3tCYE4L@~fY-od;@E;6l8a>7+d-j{1w{wBhQN z739j9j*70vO8vZFww(U<${q8S(^DokNp?Km4`-iYssfrcS?x(++xb3K1RnEdjWy(8 zFm3ssRecT5%4G+96Wh<{`0nlT9PeyBv@_V$696CDKHv`BR;}8mk1j`ll{`MPtw+2M z=7Hhg4xidCG^V$C^{WqmGhQDPQKgtr)C_8M2ak=$tCqTbKQmL2usY$aqu*>#7W^!} zuZ~?f7el6H=vp=#<6ZvUQXtAH< zxOd8OGT|cIgC?r}y1(kDs3z5nT2cqE#xL)yNw4}F9@>i=il6#^KNsz@oLq5d5FvkF zzLn;a+|h6+q%F|BM&qp-$bJ9WyNjY2;n9U-?dP-Rb%lAUGz$}tx)0A7h0?H#v2$nX z1Jagr20-%I?2OE}!M&b2O=-qPIV^WG%Jgos|o_ zAxYof`)}RY>=71oByQug%16>ukSsH9Vddn>fyK17DS~GIjv;)>fQTvIHX`$=;iql! zHa(e9I!el%5m+{nT{2M({|lJy=$7=l?Vs~w)Gf`=g`FRqAN5+KI~V1f$$Xx0soyPj zl=d*)4LT5hB2E}p@FS92|8b#5m1ocT4<8i!qJzH#Qrb%-zOzR@V-!9Q#((!rzK~UR7_Cs4$rPQe$2b$UQ7A%l8L(O4`!BqeFjge2LQD|5U;)o5A|jj zJu-)fjWs#eXv~f;&%zN|a-ZSuyJq@exOQS!JO(`qfSu~FvM;`d!Tt94m zOMdWsrB&VgcYWw{2L9*lXJda~TDu`;g=f$3=E?j$a>mL1rX1w60t0QlnVNbj`>m9b zhg(c*vG&gmQ`H{b{wo4obV&R7Lv$4;a9}S7$$9~B#j>U>$#!%-&Nlg zn66In&IUDuUxjv6K7F$2#BlHrwBwW|A&EZ~L#2C9-zGm;G+)vJ{+72IOoqBLcE2l~ zJdzFsc7L}ZP_y~VF-pkseV6y0dUH \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/shopping.png b/web-admin/src/assets/logo-img/shopping.png new file mode 100755 index 0000000000000000000000000000000000000000..c774636bcd67f3ba05b70ffa0cd010fb1598690f GIT binary patch literal 2087 zcmaJ?dsGu=79RtMSg2ijEa7D~$Szd!n7l|LK_Cx_kPt&E3Cd$gCLur`CLx4WDOT}; zr$JtXL}DE3IKMWsU=dAR1m|I>oj=ChQV7jdV~!Cp&KlENS*g1xe>q1WwH%0WYQTVI$h>c2Z+*iCY>=& zr^k>$JctPtKytO#W(l&L(A$JLut9Bx6+DAZgIOpsQ~e$ZbZQ6%QV>ZvqEbP|Q513t zj!q}ZaSAd>R8kZQIte6U7x{|clMiXy`Huy_RS z;bKu+!Hh3=Z_PKyWl%Bv-~Y^R9%<EA4kj zH1^1x{ZpjQ2ccg!()nB%M9-xj_Fz^ zUKW%;$hK}eUol3xtN!%)k7xIsa(U8Tadd;QOXhpxbk&u?BjtAGLh<&Gd%MS~cAH9S z8}@MjQpV>x2KBYyj{fr8C8zXev%_Oq-Z4S4}@BM=tH?qW%dKwub02} z+4swf;N$^a%T_2LYBpfKzD`z{TT{Z+myT z$F5GSKDehM*ty5Kb0BcJL;Y0sg_=%3q1zeK3dh-#l4f(%@*__j0G|8fq>cs3qmyot|w=ML+*yxONIiAK8Y=$iR!5?pt^EKh{Lw z?)zl$@!V7C^2~&_Ek*v-Ie^aZSq@PrcG?$JwK1}s3a9XW$ z^>%H!H1AYbMCfZze*(_rOnp6MK06xF*brj3D(p^1<)q~@}xW7j1+TE1GgW-gKF+@&l*i(E%n z`?jq8{?1g?Uszc4fcMPrpO0#{m3HR9-G5E$ z*UZ-pUFmnG?7TD@n|o5w{TjNo;@di)viLg2r_QXTPP;}1Nwa!aX2Z}YN3Kb#2ZWr*cR$ \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/system.svg b/web-admin/src/assets/logo-img/system.svg new file mode 100644 index 00000000..ac2916b5 --- /dev/null +++ b/web-admin/src/assets/logo-img/system.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/table.png b/web-admin/src/assets/logo-img/table.png new file mode 100755 index 0000000000000000000000000000000000000000..a22a176d37819a56a43ca8a42686f4dc0e715de7 GIT binary patch literal 2360 zcmaJ@dpuNm8z0wf?iCxA##oy)_nWyGVrCSRAx4H$#+)-|VlK@bxowImsc0)jq@r4R z6$ZO5B~iOgX-g5_w-%{(wN#r|m(?rwjMBS*^x5;tHW~r36YAsX>Gvpo{~NfpSqi7zT=f)Gaqa zZv?_*yG$U2gu!bVVx=4_GU#Aa)A60);`rGe|V##|H&_ zQv(u47$@MPFZjelNg+tZz~PdUld;JptWq71Bhcw|9G-|H5;3p_Mw6<5L@5}B#%AHVcMx_s@c3CiA^AI{rv;{@iev{mq-cV&wgWqCVn*zoqU&i^38(4Am?f23brLi%0}9h6GS07%vK$grSin5{v`{ z=n_yu0qJoh6b`0{Gjz@0x@cAex29qHX(r&qr>O!J@F=O_nPEJ;(t$vjg#>c^1S$8Q zl|)Gw1TNH{qkQdb+tOyz|E2cSkK;G&yzMsR*13!txm2Whdz@IyG0*F(wyn0kumN z3-t;9;gcRw`$~<97cDiWM$`$`x^*ABnl$&DQJHqvcIJG)>t}n@oNo7Rv=hipx2rCM zUn;6HE9hqld3mQpbYZ1~W{-1s7Ju<){CIE7Dffg0_j-q0V?!<`TuInw+I<%LGqgk} zF};_10{!s82Gsk3Akom^^PE!gO5MAm$voP&>HO8x4I_toydH|8LimG^vt->K;=9C`SYp*U>_VCsg!m?G!@MrYk&SrZc)D)T>||Jsj&tnE zf3|)*ShXn3tK-$4!v4b822@AwC1NnKCdNL|evbbxM7|zXpYI+T?pW05Y))}(=|z1Z zOfR){X?$sPT*v1@OQU&*kvOLNmK6nYzeGOiI^^3{JMZo*j^gSiwD1AWsk3V1g|G4t zSe$n&xm9b!1V9Jxbw@YWt`jy1H(N)}F-?eAyrn;Fyb~%!6N?4uPe>KxclOgBUEVrT z#bKfkS9|4ZUaTq$)~EWe;E!vUy6@X@SGzaZC-a@dFtgINKeDy0PJZe~K~BZp`s-%r z=M^nLPd@m={#CcdGrL#y{S{Aj#Tf-?<2S}exALZ|Xl{#2(PyUDiCqt79a+%n^xP`1 z?Lc{(%kH1*7w_mQ&LKDIf;I;gEOyo2`|kRFQqh!8R;B$y^n(Dur%s`k} zMyc*Vl(Y7RO`xLU>zzi>lAPW+Xe-^@R8K53Z|#Xv^m#bdta1G+T3dURyUCAT@2XFn z)>s6vcV!G@XD%Z0I~}LaFoS)mP!B-Tl2UXXd@rS6b5I)g{itx0+~${onEVcW9y_k}|z4p*AqY^G+O zc(Z0lbX1htB_Z&*9p^kA&Rd4=`Syx*dB{ZS%MB}|r=MH;bbGc;3{6@^3%clcN72Kc z%o>Ml`o)91`St~xs`5UpOL+p!?(g5){1(W0zpR44{Q2R_H-5i(gxj0+FLIine%g4d zuo1pW9ngzPrhBXnE@Pg2J-6 zvoQd>j2|jzntVS6k&q6AJjrEob`V|uE3f|IihC#1H?uq5- \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/tree-table.svg b/web-admin/src/assets/logo-img/tree-table.svg new file mode 100644 index 00000000..d382976b --- /dev/null +++ b/web-admin/src/assets/logo-img/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/tree.svg b/web-admin/src/assets/logo-img/tree.svg new file mode 100644 index 00000000..df639a2f --- /dev/null +++ b/web-admin/src/assets/logo-img/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/workflow.svg b/web-admin/src/assets/logo-img/workflow.svg new file mode 100644 index 00000000..7fa4480f --- /dev/null +++ b/web-admin/src/assets/logo-img/workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/logo-img/zj.svg b/web-admin/src/assets/logo-img/zj.svg new file mode 100644 index 00000000..8734022d --- /dev/null +++ b/web-admin/src/assets/logo-img/zj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/styles/core/app.scss b/web-admin/src/assets/styles/core/app.scss new file mode 100755 index 00000000..4b1c4433 --- /dev/null +++ b/web-admin/src/assets/styles/core/app.scss @@ -0,0 +1,648 @@ +// 全局样式 +html, +body, +#app { + min-height: 100%; +} + +body { + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--mint-text); + background: var(--mint-bg-page); +} + +:root { + --theme-color: var(--mint-primary); + --default-bg-color: var(--mint-bg-page); + --default-box-color: var(--mint-surface); + --art-card-border: var(--mint-border); + --custom-radius: 16px; +} + +// 顶部进度条颜色 +#nprogress .bar { + z-index: 2400; + background-color: var(--mint-primary); +} + +#nprogress .peg { + box-shadow: + 0 0 10px var(--theme-color), + 0 0 5px var(--theme-color) !important; +} + +#nprogress .spinner-icon { + border-top-color: var(--theme-color) !important; + border-left-color: var(--theme-color) !important; +} + +// 处理移动端组件兼容性 +@media screen and (max-width: 640px) { + * { + cursor: default !important; + } +} + +// 背景滤镜 +*, +::before, +::after { + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +// 色弱模式 +.color-weak { + filter: invert(80%); + -webkit-filter: invert(80%); +} + +#noop { + display: none; +} + +// 语言切换选中样式 +.langDropDownStyle { + // 选中项背景颜色 + .is-selected { + background-color: var(--art-el-active-color) !important; + } + + // 语言切换按钮菜单样式优化 + .lang-btn-item { + .el-dropdown-menu__item { + padding-left: 13px !important; + padding-right: 6px !important; + margin-bottom: 3px !important; + } + + &:last-child { + .el-dropdown-menu__item { + margin-bottom: 0 !important; + } + } + + .menu-txt { + min-width: 60px; + display: block; + } + + i { + font-size: 10px; + margin-left: 10px; + } + } +} + +// 盒子默认边框 +.page-content { + border: 1px solid var(--mint-border) !important; + border-radius: var(--mint-radius) !important; + box-shadow: var(--mint-shadow) !important; +} + +@mixin art-card-base($border-color, $shadow: none, $radius-diff: 4px) { + background: var(--default-box-color); + border: 1px solid #{$border-color} !important; + border-radius: calc(var(--custom-radius) + #{$radius-diff}) !important; + box-shadow: #{$shadow} !important; + + --el-card-border-color: var(--default-border) !important; +} + +.art-card, +.art-card-sm, +.art-card-xs { + border: 1px solid var(--art-card-border); +} + +// 盒子边框 +[data-box-mode='border-mode'] { + .page-content, + .art-table-card { + border: 1px solid var(--art-card-border) !important; + } + + .art-card { + @include art-card-base(var(--art-card-border), none, 4px); + } + + .art-card-sm { + @include art-card-base(var(--art-card-border), none, 0px); + } + + .art-card-xs { + @include art-card-base(var(--art-card-border), none, -4px); + } +} + +// 盒子阴影 +[data-box-mode='shadow-mode'] { + .page-content, + .art-table-card { + box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.04) !important; + border: 1px solid var(--art-gray-200) !important; + } + + .layout-sidebar { + border-right: 1px solid var(--art-card-border) !important; + } + + .art-card { + @include art-card-base( + var(--art-gray-200), + (0 1px 3px 0 rgba(0, 0, 0, 0.03), 0 1px 2px -1px rgba(0, 0, 0, 0.08)), + 4px + ); + } + + .art-card-sm { + @include art-card-base( + var(--art-gray-200), + (0 1px 3px 0 rgba(0, 0, 0, 0.03), 0 1px 2px -1px rgba(0, 0, 0, 0.08)), + 2px + ); + } + + .art-card-xs { + @include art-card-base( + var(--art-gray-200), + (0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 1px -1px rgba(0, 0, 0, 0.08)), + -4px + ); + } +} + +// 元素全屏 +.el-full-screen { + position: fixed; + top: 0; + left: 0; + right: 0; + width: 100vw !important; + height: 100% !important; + z-index: 2300; + margin-top: 0; + padding: 15px; + box-sizing: border-box; + background-color: var(--default-box-color); + display: flex; + flex-direction: column; +} + +// 表格卡片 +.art-table-card { + flex: 1; + display: flex; + flex-direction: column; + margin-top: 12px; + border-radius: var(--mint-radius) !important; + border: 1px solid var(--mint-border) !important; + box-shadow: var(--mint-shadow) !important; + + .el-card__body { + height: 100%; + overflow: hidden; + } +} + +// 容器全高 +.art-full-height { + height: var(--art-full-height); + display: flex; + flex-direction: column; + + @media (max-width: 640px) { + height: auto; + } +} + +// 徽章样式 +.art-badge { + position: absolute; + top: 0; + right: 20px; + bottom: 0; + width: 6px; + height: 6px; + margin: auto; + background: #ff3860; + border-radius: 50%; + animation: breathe 1.5s ease-in-out infinite; + + &.art-badge-horizontal { + right: 0; + } + + &.art-badge-mixed { + right: 0; + } + + &.art-badge-dual { + right: 5px; + top: 5px; + bottom: auto; + } +} + +// 文字徽章样式 +.art-text-badge { + position: absolute; + top: 0; + right: 12px; + bottom: 0; + min-width: 20px; + height: 18px; + line-height: 17px; + padding: 0 5px; + margin: auto; + font-size: 10px; + color: #fff; + text-align: center; + background: #fd4e4e; + border-radius: 4px; +} + +@keyframes breathe { + 0% { + opacity: 0.7; + transform: scale(1); + } + + 50% { + opacity: 1; + transform: scale(1.1); + } + + 100% { + opacity: 0.7; + transform: scale(1); + } +} + +// 修复老机型 loading 定位问题 +.art-loading-fix { + position: fixed !important; + top: 0 !important; + left: 0 !important; + right: 0 !important; + bottom: 0 !important; + width: 100vw !important; + height: 100vh !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; +} + +.art-loading-fix .el-loading-spinner { + position: static !important; + top: auto !important; + left: auto !important; + transform: none !important; +} + +// 去除移动端点击背景色 +@media screen and (max-width: 1180px) { + * { + -webkit-tap-highlight-color: transparent; + } +} + +.page-head { + margin-bottom: 16px; + + h1 { + margin: 0 0 4px; + font-size: 20px; + font-weight: 700; + letter-spacing: -0.02em; + color: var(--mint-text); + } + + .page-desc, + .desc { + margin: 0; + color: var(--mint-text-muted); + font-size: 13px; + line-height: 1.45; + max-width: 720px; + } +} + +.panel { + background: var(--mint-surface); + border: 1px solid var(--mint-border); + border-radius: var(--mint-radius); + box-shadow: var(--mint-shadow); + /* 不要用 overflow:hidden:会导致 el-table 右侧固定列(fixed="right")无法正确粘贴/层级错乱 */ + overflow: visible; +} + +.panel-top { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 8px; + padding: 10px 16px; + border-bottom: 1px solid var(--mint-border); + + h2 { + display: inline-flex; + align-items: center; + gap: 2px; + margin: 0; + font-size: 14px; + font-weight: 600; + color: var(--mint-text); + } + + h2 .title-ic { + width: 22px; + height: 22px; + border-radius: 8px; + display: inline-flex; + align-items: center; + justify-content: center; + background: var(--mint-primary-bg); + color: var(--mint-primary-dark); + border: 1px solid rgba(16, 185, 129, 0.16); + margin-right: 4px; + flex-shrink: 0; + } + + h2 .title-ic::before { + content: ''; + width: 14px; + height: 14px; + background-color: currentColor; + opacity: 0.95; + mask: var(--panel-title-icon-mask) center / contain no-repeat; + -webkit-mask: var(--panel-title-icon-mask) center / contain no-repeat; + } + + h2.title-bar-heading { + gap: 8px; + } + + h2.title-bar-heading .title-ic { + display: none !important; + } + + h2.title-bar-heading::before { + content: ''; + width: 4px; + height: 14px; + border-radius: 999px; + background: var(--mint-primary, #10b981); + flex-shrink: 0; + } +} + +.page-container .panel-top h2.auto-title-operation, +.console-container .panel-top h2.auto-title-operation { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-location, +.console-container .panel-top h2.auto-title-location { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s-7-4.5-7-11a7 7 0 1 1 14 0c0 6.5-7 11-7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-user, +.console-container .panel-top h2.auto-title-user { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-settings, +.console-container .panel-top h2.auto-title-settings { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1-1.5 2.6-0.2-.1a2 2 0 0 0-2.1.4 1.8 1.8 0 0 0-.6 2v.2H9.6v-.2a1.8 1.8 0 0 0-.6-2 2 2 0 0 0-2.1-.4l-.2.1-1.5-2.6.1-.1A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-1.6-1.1H3v-3h.0a1.7 1.7 0 0 0 1.6-1.1 1.7 1.7 0 0 0-.3-1.9l-.1-.1 1.5-2.6.2.1a2 2 0 0 0 2.1-.4 1.8 1.8 0 0 0 .6-2V2h4.8v.2a1.8 1.8 0 0 0 .6 2 2 2 0 0 0 2.1.4l.2-.1 1.5 2.6-.1.1a1.7 1.7 0 0 0-.3 1.9A1.7 1.7 0 0 0 21 10.9h.0v3H21a1.7 1.7 0 0 0-1.6 1.1z'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-category, +.console-container .panel-top h2.auto-title-category { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h16'/%3E%3Cpath d='M4 12h16'/%3E%3Cpath d='M4 18h16'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-box, +.console-container .panel-top h2.auto-title-box { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 16V8a2 2 0 0 0-1-1.7l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.7l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/%3E%3Cpath d='M3.3 7L12 12l8.7-5'/%3E%3Cpath d='M12 22V12'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-receipt, +.console-container .panel-top h2.auto-title-receipt { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h12v20l-2-1-2 1-2-1-2 1-2-1-2 1V2z'/%3E%3Cpath d='M8 6h8'/%3E%3Cpath d='M8 10h8'/%3E%3Cpath d='M8 14h6'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-file, +.console-container .panel-top h2.auto-title-file { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-quote, +.console-container .panel-top h2.auto-title-quote { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a4 4 0 0 1-4 4H7l-4 3V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4z'/%3E%3C/svg%3E"); +} +.page-container .panel-top h2.auto-title-calc, +.console-container .panel-top h2.auto-title-calc { + --panel-title-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='2' width='14' height='20' rx='2'/%3E%3Cpath d='M9 6h6'/%3E%3Cpath d='M8 10h2'/%3E%3Cpath d='M14 10h2'/%3E%3Cpath d='M8 14h2'/%3E%3Cpath d='M14 14h2'/%3E%3Cpath d='M8 18h8'/%3E%3C/svg%3E"); +} + +.page-container, +.console-container { + .filter-block { + padding: 12px 16px 10px; + background: var(--mint-surface); + border-bottom: 1px solid var(--mint-border); + } + + .filter-hint { + margin: 0 0 8px; + font-size: 11px; + color: var(--mint-text-muted); + line-height: 1.35; + } + + .filter-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 10px 14px; + margin-bottom: 0; + } + + .filter-actions-row { + margin-top: 10px; + padding-top: 10px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + } + + .filter-actions-end, + .toolbar-actions { + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; + } + + .list-toolbar, + .toolbar { + padding: 0; + background: var(--mint-table-head); + border-bottom: 1px solid var(--mint-border); + } + + .list-toolbar-row, + .toolbar { + padding: 8px 16px; + gap: 8px; + display: flex; + align-items: center; + flex-wrap: wrap; + justify-content: flex-start; + } + + /* 列表工具栏按钮间距统一由 gap 控制,清除 Element 默认相邻按钮 margin */ + .list-toolbar-row .el-button + .el-button, + .toolbar .el-button + .el-button, + .toolbar-right .el-button + .el-button, + .toolbar-actions .el-button + .el-button, + .filter-actions-end .el-button + .el-button { + margin-left: 0 !important; + } + + .list-toolbar-selected, + .toolbar-left { + display: inline-flex; + align-items: center; + min-height: 36px; + padding: 0 10px 0 0; + margin-right: 4px; + border-right: 1px solid var(--mint-border); + font-size: 12px; + color: var(--mint-text-muted); + font-weight: 600; + } + + .sel-num { + color: var(--mint-primary-dark); + font-weight: 700; + margin: 0 2px; + } + + .list-body { + border-top: 1px solid var(--mint-border); + } + + .list-wrap { + border-radius: 0 0 var(--mint-radius) var(--mint-radius); + overflow: visible; + } + + .pagination.list-pager-bar, + .list-footer { + margin-top: 0; + padding: 10px 16px 12px; + border-top: 1px solid var(--mint-border); + background: var(--mint-surface); + } + + .pagination { + display: flex; + justify-content: flex-end; + margin-top: 0; + padding: 10px 16px 12px; + border-top: 1px solid var(--mint-border); + background: var(--mint-surface); + } + + .search-bar { + background: var(--mint-surface); + border: 1px solid var(--mint-border); + border-radius: var(--mint-radius); + box-shadow: var(--mint-shadow); + } + + .detail-hero { + margin-bottom: 14px; + padding: 14px 16px; + border: 1px solid var(--mint-border); + border-radius: var(--mint-radius); + background: var(--mint-primary-bg); + } + + .detail-hero-title { + font-size: 16px; + font-weight: 700; + color: var(--mint-text); + } + + .detail-hero-meta { + margin-top: 6px; + color: var(--mint-text-muted); + font-size: 13px; + } + + .detail-section { + border: 1px solid var(--mint-border); + border-radius: var(--mint-radius); + overflow: hidden; + margin-bottom: 14px; + } +} + +@media (max-width: 1100px) { + .page-container, + .console-container { + .filter-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + } +} + +@media (max-width: 560px) { + .page-container, + .console-container { + .filter-grid { + grid-template-columns: 1fr; + } + + .filter-actions-row { + align-items: stretch; + flex-direction: column; + } + } +} + +#app-header > div { + background: var(--mint-surface) !important; +} + +#app-header .relative.box-border.flex-b { + height: 56px !important; + line-height: 56px !important; + padding: 0 var(--mint-content-padding); +} + +#app-header .flex-c.gap-2\.5 { + gap: 10px !important; +} + +#app-header .flex-b.w-full { + margin-bottom: 0 !important; + padding: 0 24px 10px !important; +} + +#app-sidebar .layout-sidebar { + border-right: 1px solid var(--mint-border) !important; + background: var(--mint-surface); +} + +#app-sidebar .menu-left .header { + height: 56px; + line-height: 56px; + border-bottom: 1px solid var(--mint-border); +} diff --git a/web-admin/src/assets/styles/core/dark.scss b/web-admin/src/assets/styles/core/dark.scss new file mode 100755 index 00000000..c52abc3f --- /dev/null +++ b/web-admin/src/assets/styles/core/dark.scss @@ -0,0 +1,93 @@ +/* +* 深色主题 +* 单页面移除深色主题 document.getElementsByTagName("html")[0].removeAttribute('class') +*/ + +$font-color: rgba(#ffffff, 0.85); + +/* 覆盖element-plus默认深色背景色 */ +html.dark { + // element-plus + --el-bg-color: var(--default-box-color); + --el-text-color-regular: #{$font-color}; + + // 富文本编辑器 + // 工具栏背景颜色 + --w-e-toolbar-bg-color: #18191c; + // 输入区域背景颜色 + --w-e-textarea-bg-color: #090909; + // 工具栏文字颜色 + --w-e-toolbar-color: var(--art-gray-600); + // 选中菜单颜色 + --w-e-toolbar-active-bg-color: #25262b; + // 弹窗边框颜色 + --w-e-toolbar-border-color: var(--default-border-dashed); + // 分割线颜色 + --w-e-textarea-border-color: var(--default-border-dashed); + // 链接输入框边框颜色 + --w-e-modal-button-border-color: var(--default-border-dashed); + // 表格头颜色 + --w-e-textarea-slight-bg-color: #090909; + // 按钮背景颜色 + --w-e-modal-button-bg-color: #090909; + // hover toolbar 背景颜色 + --w-e-toolbar-active-color: var(--art-gray-800); +} + +.dark { + .page-content .article-list .item .left .outer > div { + border-right-color: var(--dark-border-color) !important; + } + + // 富文本编辑器 + .editor-wrapper { + *:not(pre code *) { + color: inherit !important; + } + } + // 分隔线 + .w-e-bar-divider { + background-color: var(--art-gray-300) !important; + } + + .w-e-select-list, + .w-e-drop-panel, + .w-e-bar-item-group .w-e-bar-item-menus-container, + .w-e-text-container [data-slate-editor] pre > code { + border: 1px solid var(--default-border) !important; + } + + // 下拉选择框 + .w-e-select-list { + background-color: var(--default-box-color) !important; + } + + /* 下拉选择框 hover 样式调整 */ + .w-e-select-list ul li:hover, + /* 工具栏 hover 按钮背景颜色 */ + .w-e-bar-item button:hover { + background-color: #090909 !important; + } + + /* 代码块 */ + .w-e-text-container [data-slate-editor] pre > code { + background-color: #25262b !important; + text-shadow: none !important; + } + + /* 引用 */ + .w-e-text-container [data-slate-editor] blockquote { + border-left: 4px solid var(--default-border-dashed) !important; + background-color: var(--art-color); + } + + .editor-wrapper { + .w-e-text-container [data-slate-editor] .table-container th:last-of-type { + border-right: 1px solid var(--default-border-dashed) !important; + } + + .w-e-modal { + background-color: var(--art-color); + } + } +} diff --git a/web-admin/src/assets/styles/core/el-dark.scss b/web-admin/src/assets/styles/core/el-dark.scss new file mode 100644 index 00000000..8f81cdfd --- /dev/null +++ b/web-admin/src/assets/styles/core/el-dark.scss @@ -0,0 +1,2 @@ +// 导入暗黑主题 +@use 'element-plus/theme-chalk/src/dark/css-vars.scss' as *; diff --git a/web-admin/src/assets/styles/core/el-light.scss b/web-admin/src/assets/styles/core/el-light.scss new file mode 100644 index 00000000..ddf2bc54 --- /dev/null +++ b/web-admin/src/assets/styles/core/el-light.scss @@ -0,0 +1,34 @@ +// https://github.com/element-plus/element-plus/blob/dev/packages/theme-chalk/src/common/var.scss +// 自定义Element 亮色主题 + +@forward 'element-plus/theme-chalk/src/common/var.scss' with ( + $colors: ( + 'white': #ffffff, + 'black': #000000, + 'success': ( + 'base': #13deb9 + ), + 'warning': ( + 'base': #ffae1f + ), + 'danger': ( + 'base': #ff4d4f + ), + 'error': ( + 'base': #fa896b + ) + ), + $button: ( + 'hover-bg-color': var(--el-color-primary-light-9), + 'hover-border-color': var(--el-color-primary), + 'border-color': var(--el-color-primary), + 'text-color': var(--el-color-primary) + ), + $messagebox: ( + 'border-radius': '12px' + ), + $popover: ( + 'padding': '14px', + 'border-radius': '10px' + ) +); diff --git a/web-admin/src/assets/styles/core/el-ui.scss b/web-admin/src/assets/styles/core/el-ui.scss new file mode 100644 index 00000000..6b8244e4 --- /dev/null +++ b/web-admin/src/assets/styles/core/el-ui.scss @@ -0,0 +1,1067 @@ +// 优化 Element Plus 组件库默认样式 + +:root { + // 系统主色 + --main-color: var(--mint-primary); + --el-color-primary: var(--mint-primary) !important; + --el-color-primary-light-3: #34d399 !important; + --el-color-primary-light-5: #6ee7b7 !important; + --el-color-primary-light-7: #a7f3d0 !important; + --el-color-primary-light-8: #d1fae5 !important; + --el-color-primary-light-9: var(--mint-primary-bg) !important; + --el-color-primary-dark-2: var(--mint-primary-dark) !important; + --el-border-color: var(--mint-border) !important; + --el-border-color-light: #eaf4ef !important; + --el-fill-color-light: var(--mint-table-head) !important; + --el-bg-color: var(--mint-surface) !important; + --el-bg-color-page: var(--mint-bg-page) !important; + --el-text-color-primary: var(--mint-text) !important; + // 设计图:输入框/下拉选中值等“正文”应为更深的 Slate + // regular 用于大量控件正文(input value / select value / 普通文案) + --el-text-color-regular: var(--mint-text) !important; + // secondary 用于次级信息(说明/弱提示) + --el-text-color-secondary: var(--mint-text-muted) !important; + // placeholder 全局占位符颜色(含弹窗 Teleport 场景) + --el-text-color-placeholder: #9ca3af !important; + --el-mask-color: rgba(15, 23, 42, 0.35) !important; + // 按钮粗度 + --el-font-weight-primary: 500 !important; + + --el-component-custom-height: 36px !important; + + --el-component-size: var(--el-component-custom-height) !important; + + // 边框、按钮圆角... + --el-border-radius-base: 8px !important; + + --el-border-radius-small: 8px !important; + --el-messagebox-border-radius: 10px !important; + --el-popover-border-radius: 10px !important; + --el-dialog-padding-primary: 0 !important; + + .region .el-radio-button__original-radio:checked + .el-radio-button__inner { + color: var(--theme-color); + } +} + +// 优化 el-form-item 标签高度 +.el-form-item__label { + height: var(--el-component-custom-height) !important; + line-height: var(--el-component-custom-height) !important; +} + +// 日期选择器 +.el-date-range-picker { + --el-datepicker-inrange-bg-color: var(--art-gray-200) !important; +} + +// el-card 背景色跟系统背景色保持一致 +html.dark .el-card { + --el-card-bg-color: var(--default-box-color) !important; +} + +// 修改 el-pagination 大小 +.el-pagination--default { + & { + --el-pagination-button-width: 32px !important; + --el-pagination-button-height: var(--el-pagination-button-width) !important; + } + + @media (max-width: 1180px) { + & { + --el-pagination-button-width: 28px !important; + } + } + + .el-select--default .el-select__wrapper { + min-height: var(--el-pagination-button-width) !important; + } + + .el-pagination__jump .el-input { + height: var(--el-pagination-button-width) !important; + } +} + +.el-pager li { + padding: 0 10px !important; + // border: 1px solid red !important; +} + +// 优化菜单折叠展开动画(提升动画流畅度) +.el-menu.el-menu--inline { + transition: max-height 0.26s cubic-bezier(0.4, 0, 0.2, 1) !important; +} + +// 优化菜单 item hover 动画(提升鼠标跟手感) +.el-sub-menu__title, +.el-menu-item { + transition: background-color 0s !important; +} + +// -------------------------------- 修改 el-size=default 组件默认高度 start -------------------------------- +// 修改 el-button 高度 +.el-button--default { + height: var(--el-component-custom-height) !important; +} + +// circle 按钮宽度优化 +.el-button--default.is-circle { + width: var(--el-component-custom-height) !important; +} + +// 修改 el-select 高度 +.el-select--default { + .el-select__wrapper { + min-height: var(--el-component-custom-height) !important; + } +} + +// 修改 el-checkbox-button 高度 +.el-checkbox-button--default .el-checkbox-button__inner, +// 修改 el-radio-button 高度 +.el-radio-button--default .el-radio-button__inner { + padding: 10px 15px !important; +} +// -------------------------------- 修改 el-size=default 组件默认高度 end -------------------------------- + +.el-pagination.is-background .btn-next, +.el-pagination.is-background .btn-prev, +.el-pagination.is-background .el-pager li { + border-radius: 6px; +} + +.el-popover { + min-width: 80px; + border-radius: var(--el-border-radius-small) !important; +} + +.el-dialog { + padding: 0 !important; + border: 1px solid var(--mint-border) !important; + border-radius: var(--mint-radius) !important; + overflow: hidden; + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12) !important; +} + +.el-dialog__header { + padding: 16px 22px 14px !important; + border-bottom: 1px solid var(--mint-border); + background: linear-gradient(135deg, var(--mint-primary-bg) 0%, var(--mint-surface) 60%); + + .el-dialog__title { + font-size: 16px; + font-weight: 600; + color: var(--mint-text); + } +} + +.el-dialog__body { + padding: 18px 22px !important; + position: relative; // 为了兼容 el-pagination 样式,需要设置 relative,不然会影响 el-pagination 的样式,比如 el-pagination__jump--small 会被影响,导致 el-pagination__jump--small 按钮无法点击,详见 URL_ADDRESS.com/element-plus/element-plus/issues/5684#issuecomment-1176299275; +} + +.el-dialog__footer { + padding: 12px 22px !important; + border-top: 1px solid var(--mint-border); + background: var(--mint-table-head); +} + +.el-dialog.el-dialog-border { + .el-dialog__body { + // 上边框 + &::before, + // 下边框 + &::after { + content: ''; + position: absolute; + left: -16px; + width: calc(100% + 32px); + height: 1px; + background-color: var(--art-gray-300); + } + + &::before { + top: 0; + } + + &::after { + bottom: 0; + } + } +} + +// el-message 样式优化 +.el-message { + background-color: var(--default-box-color) !important; + border: 0 !important; + box-shadow: + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) !important; + + p { + font-size: 13px; + } +} + +// 修改 el-dropdown 样式 +.el-dropdown-menu { + padding: 6px !important; + border-radius: 10px !important; + border: none !important; + + .el-dropdown-menu__item { + padding: 6px 16px !important; + border-radius: 6px !important; + + &:hover:not(.is-disabled) { + color: var(--art-gray-900) !important; + background-color: var(--art-el-active-color) !important; + } + + &:focus:not(.is-disabled) { + color: var(--art-gray-900) !important; + background-color: var(--art-gray-200) !important; + } + } +} + +// 隐藏 select、dropdown 的三角 +.el-select__popper, +.el-dropdown__popper { + margin-top: -6px !important; + + .el-popper__arrow { + display: none; + } +} + +.el-dropdown-selfdefine:focus { + outline: none !important; +} + +// 处理移动端组件兼容性 +@media screen and (max-width: 640px) { + .el-message-box, + .el-dialog { + width: calc(100% - 24px) !important; + } + + .el-date-picker.has-sidebar.has-time { + width: calc(100% - 24px); + left: 12px !important; + } + + .el-picker-panel *[slot='sidebar'], + .el-picker-panel__sidebar { + display: none; + } + + .el-picker-panel *[slot='sidebar'] + .el-picker-panel__body, + .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 0; + } +} + +// 修改el-button样式 +.el-button { + &.el-button--text { + background-color: transparent !important; + padding: 0 !important; + + span { + margin-left: 0 !important; + } + } +} + +// 修改el-tag样式 +.el-tag { + font-weight: 500; + transition: all 0s !important; + + &.el-tag--default { + height: 26px !important; + } +} + +.el-checkbox-group { + &.el-table-filter__checkbox-group label.el-checkbox { + height: 17px !important; + + .el-checkbox__label { + font-weight: 400 !important; + } + } +} + +.el-radio--default { + // 优化单选按钮大小 + .el-radio__input { + .el-radio__inner { + width: 16px; + height: 16px; + + &::after { + width: 6px; + height: 6px; + } + } + } +} + +.el-checkbox { + .el-checkbox__inner { + border-radius: 2px !important; + } +} + +// 优化复选框样式 +.el-checkbox--default { + .el-checkbox__inner { + width: 16px !important; + height: 16px !important; + border-radius: 4px !important; + + &::before { + content: ''; + height: 4px !important; + top: 5px !important; + background-color: #fff !important; + transform: scale(0.6) !important; + } + } + + .is-checked { + .el-checkbox__inner { + &::after { + width: 3px; + height: 8px; + margin: auto; + border: 2px solid var(--el-checkbox-checked-icon-color); + border-left: 0; + border-top: 0; + transform: translate(-45%, -60%) rotate(45deg) scale(0.86) !important; + transform-origin: center; + } + } + } +} + +.el-notification .el-notification__icon { + font-size: 22px !important; +} + +// 修改 el-message-box 样式 +.el-message-box__headerbtn .el-message-box__close, +.el-dialog__headerbtn .el-dialog__close { + top: 7px; + right: 7px; + width: 30px; + height: 30px; + border-radius: 5px; + transition: all 0.3s; + + &:hover { + background-color: var(--art-hover-color) !important; + color: var(--art-gray-900) !important; + } +} + +.el-message-box { + padding: 25px 20px !important; +} + +.el-message-box__title { + font-weight: 500 !important; +} + +.el-table__column-filter-trigger i { + color: var(--theme-color) !important; + margin: -3px 0 0 2px; +} + +// 去除 el-dropdown 鼠标放上去出现的边框 +.el-tooltip__trigger:focus-visible { + outline: unset; +} + +// ipad 表单右侧按钮优化 +@media screen and (max-width: 1180px) { + .el-table-fixed-column--right { + padding-right: 0 !important; + } +} + +.login-out-dialog { + padding: 30px 20px !important; + border-radius: 10px !important; +} + +// 修改 dialog 动画 +.dialog-fade-enter-active { + .el-dialog:not(.is-draggable) { + animation: dialog-open 0.3s cubic-bezier(0.32, 0.14, 0.15, 0.86); + + // 修复 el-dialog 动画后宽度不自适应问题 + .el-select__selected-item { + display: inline-block; + } + } +} + +.dialog-fade-leave-active { + animation: fade-out 0.2s linear; + + .el-dialog:not(.is-draggable) { + animation: dialog-close 0.5s; + } +} + +@keyframes dialog-open { + 0% { + opacity: 0; + transform: scale(0.2); + } + + 100% { + opacity: 1; + transform: scale(1); + } +} + +@keyframes dialog-close { + 0% { + opacity: 1; + transform: scale(1); + } + + 100% { + opacity: 0; + transform: scale(0.2); + } +} + +// 遮罩层动画 +@keyframes fade-out { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} + +// 修改 el-select 样式 +.el-select__popper:not(.el-tree-select__popper) { + .el-select-dropdown__list { + padding: 5px !important; + + .el-select-dropdown__item { + height: 34px !important; + line-height: 34px !important; + border-radius: 6px !important; + + &.is-selected { + color: var(--art-gray-900) !important; + font-weight: 400 !important; + background-color: var(--art-el-active-color) !important; + margin-bottom: 4px !important; + } + + &:hover { + background-color: var(--art-hover-color) !important; + } + } + + .el-select-dropdown__item:hover ~ .is-selected, + .el-select-dropdown__item.is-selected:has(~ .el-select-dropdown__item:hover) { + background-color: transparent !important; + } + } +} + +// 修改 el-tree-select 样式 +.el-tree-select__popper { + .el-select-dropdown__list { + padding: 5px !important; + + .el-tree-node { + .el-tree-node__content { + height: 36px !important; + border-radius: 6px !important; + + &:hover { + background-color: var(--art-gray-200) !important; + } + } + } + } +} + +// 实现水波纹在文字下面效果 +.el-button > span { + position: relative; + z-index: 10; + display: inline-flex; + align-items: center; + gap: 6px; +} + +// 优化颜色选择器圆角 +.el-color-picker__color { + border-radius: 2px !important; +} + +// 优化日期时间选择器底部圆角 +.el-picker-panel { + .el-picker-panel__footer { + border-radius: 0 0 var(--el-border-radius-base) var(--el-border-radius-base); + } +} + +// 优化树型菜单样式 +.el-tree-node__content { + border-radius: 4px; + margin-bottom: 4px; + padding: 1px 0; + + &:hover { + background-color: var(--art-hover-color) !important; + } +} + +.dark { + .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: var(--art-gray-300) !important; + } +} + +// 隐藏折叠菜单弹窗 hover 出现的边框 +.menu-left-popper:focus-within, +.horizontal-menu-popper:focus-within { + box-shadow: none !important; + outline: none !important; +} + +// 数字输入组件右侧按钮高度跟随自定义组件高度 +.el-input-number--default.is-controls-right { + .el-input-number__decrease, + .el-input-number__increase { + height: calc((var(--el-component-size) / 2)) !important; + } +} + +// 檢索欄行內表單:el-select 在 flex 下易被壓扁,導致僅剩箭頭、選中項不可見 +.search-bar .el-form--inline .el-select { + min-width: 140px; +} + +// -------------------------------- el-table 全局样式 start -------------------------------- +// 覆盖 Element Plus 默认的 thead 专用色,与表格正文同色(inherit 自 .el-table) +body .el-table thead { + color: inherit; +} + +// 表格默认占满整个宽度 +.el-table { + width: 100% !important; + + // 修复固定列时表格宽度问题 + .el-table__inner-wrapper { + width: 100% !important; + } +} + +// 表格容器样式,确保表格正确占满宽度 +.page-container { + .el-table { + width: 100% !important; + } +} + +// 确保固定列正确显示 +.el-table__fixed, +.el-table__fixed-right { + height: 100% !important; +} + +// 操作列固定在右侧时的样式优化 +.el-table { + .el-table__cell.is-right:last-child { + background-color: inherit; + } +} + +// 全局:操作列兜底(按钮较多时避免被截断) +// 约定:列表操作列保持 fixed="right",并通过以下规则确保按钮完整展示 +.page-container .el-table td.el-table__cell:has(.btn-op-item), +.console-container .el-table td.el-table__cell:has(.btn-op-item), +.page-container .el-table td.el-table-fixed-column--right:has(.btn-op-item), +.console-container .el-table td.el-table-fixed-column--right:has(.btn-op-item) { + min-width: 260px !important; +} + +.page-container .el-table th.el-table-fixed-column--right, +.console-container .el-table th.el-table-fixed-column--right { + min-width: 260px !important; +} + +.page-container .el-table td.el-table__cell:has(.btn-op-item) > .cell, +.console-container .el-table td.el-table__cell:has(.btn-op-item) > .cell, +.page-container .el-table td.el-table-fixed-column--right:has(.btn-op-item) > .cell, +.console-container .el-table td.el-table-fixed-column--right:has(.btn-op-item) > .cell { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + width: auto; + min-width: max-content; + white-space: nowrap; + overflow: visible; + text-overflow: clip; +} + +// 修复固定列与滚动列之间的边框 +.el-table__fixed-column--right { + border-left: 1px solid var(--el-table-border-color) !important; +} + +// 表格单元格内容不换行 +.el-table .el-table__cell { + .cell { + white-space: nowrap; + } +} + +// 全局:列表表格内容居中展示(表头 + 单元格) +.el-table { + th.el-table__cell, + td.el-table__cell { + text-align: center; + } + + th.el-table__cell > .cell, + td.el-table__cell > .cell { + justify-content: center; + } +} +// -------------------------------- el-table 全局样式 end -------------------------------- + +.page-container .el-table, +.console-container .el-table { + --el-table-header-bg-color: var(--mint-table-head); + --el-table-border-color: var(--mint-border); + --el-table-row-hover-bg-color: var(--mint-row-hover); + --el-table-text-color: var(--mint-text); + --el-table-header-text-color: var(--mint-text-muted); + font-size: 14px; +} + +.page-container .el-table th.el-table__cell, +.console-container .el-table th.el-table__cell { + color: var(--mint-text-muted); + font-size: 12px; + font-weight: 600; +} + +.page-container .el-table td.el-table__cell, +.console-container .el-table td.el-table__cell { + color: var(--mint-text); + font-size: 14px; + font-weight: 500; +} + +// Fresh Mint:状态标签(映射 design spec 的浅底 + 语义色字) +.page-container .el-tag, +.console-container .el-tag { + border: none; + border-radius: 6px; + padding: 2px 8px; + font-size: 12px; + font-weight: 600; +} + +.page-container .el-tag--success, +.console-container .el-tag--success { + background: #d1fae5 !important; + color: #047857 !important; +} + +.page-container .el-tag--warning, +.console-container .el-tag--warning { + background: #fffbeb !important; + color: #d97706 !important; +} + +.page-container .el-tag--danger, +.console-container .el-tag--danger { + background: #fef2f2 !important; + color: #dc2626 !important; +} + +.page-container .el-tag--info, +.console-container .el-tag--info { + background: #f8fafc !important; + color: #64748b !important; +} + +.page-container .el-tag--primary, +.console-container .el-tag--primary { + background: #ecfdf5 !important; + color: #059669 !important; +} + +.page-container .el-button--primary, +.console-container .el-button--primary { + --el-button-bg-color: var(--mint-primary); + --el-button-border-color: var(--mint-primary); + --el-button-hover-bg-color: var(--mint-primary-dark); + --el-button-hover-border-color: var(--mint-primary-dark); + --el-button-active-bg-color: var(--mint-primary-dark); + --el-button-active-border-color: var(--mint-primary-dark); +} + +.page-container .el-pagination, +.console-container .el-pagination { + --el-pagination-button-bg-color: var(--mint-surface); + --el-pagination-hover-color: var(--mint-primary-dark); +} + +.page-container .el-input__wrapper, +.page-container .el-select__wrapper, +.page-container .el-textarea__inner, +.console-container .el-input__wrapper, +.console-container .el-select__wrapper, +.console-container .el-textarea__inner { + border-radius: 8px !important; + box-shadow: 0 0 0 1px var(--mint-border) inset !important; +} + +// Fresh Mint:控件“值/已选项”正文颜色兜底(避免被 regular/secondary 误用导致偏灰) +// 只覆盖 value/selected 文案,不影响 placeholder(placeholder 在下方单独定义) +.page-container .el-input__inner, +.page-container .el-textarea__inner, +.page-container .el-select__selected-item, +.page-container .el-cascader__search-input, +.page-container .el-date-editor .el-input__inner, +.page-container .el-range-editor .el-range-input, +.page-container .el-input-number .el-input__inner, +.console-container .el-input__inner, +.console-container .el-textarea__inner, +.console-container .el-select__selected-item, +.console-container .el-cascader__search-input, +.console-container .el-date-editor .el-input__inner, +.console-container .el-range-editor .el-range-input, +.console-container .el-input-number .el-input__inner { + color: var(--mint-text) !important; + -webkit-text-fill-color: var(--mint-text) !important; // Safari / WebKit autofill 等场景 +} + +// Fresh Mint:placeholder 统一(设计图:更轻的 slate,字号略小) +.page-container .el-input__inner::placeholder, +.page-container .el-textarea__inner::placeholder, +.console-container .el-input__inner::placeholder, +.console-container .el-textarea__inner::placeholder { + color: #9ca3af !important; + -webkit-text-fill-color: #9ca3af !important; + font-size: 13px; + opacity: 1; +} + +/* 全局兜底(避免 Teleport 到 body 的弹窗不命中 page-container 作用域) */ +.el-input__inner::placeholder, +.el-textarea__inner::placeholder { + color: #9ca3af !important; + -webkit-text-fill-color: #9ca3af !important; + font-size: 13px; + opacity: 1; +} + +/* 下拉框已选值回显:必须保持正文深色 */ +.el-select__selected-item { + color: var(--mint-text) !important; + -webkit-text-fill-color: var(--mint-text) !important; +} + +/* cascader / tree-select 已选回显同样保持正文深色 */ +.el-cascader .el-input__inner, +.el-cascader .el-cascader__search-input, +.el-tree-select .el-select__selected-item { + color: var(--mint-text) !important; + -webkit-text-fill-color: var(--mint-text) !important; +} + +/* select/cascader/tree-select 的 placeholder 走变量,不直接覆盖节点类,避免误伤已选值 */ +.el-select__wrapper, +.el-cascader .el-input__wrapper, +.el-tree-select .el-select__wrapper, +.el-cascader__suggestion-panel, +.el-tree-select__popper { + --el-text-color-placeholder: #9ca3af !important; +} + +// 兜底:页面内原生 input/textarea placeholder(避免自绘控件不走 Element) +.page-container input::placeholder, +.page-container textarea::placeholder, +.console-container input::placeholder, +.console-container textarea::placeholder { + color: #9ca3af; + font-size: 13px; + opacity: 1; +} + +.page-container .el-input__wrapper:hover, +.page-container .el-select__wrapper:hover, +.console-container .el-input__wrapper:hover, +.console-container .el-select__wrapper:hover { + box-shadow: 0 0 0 1px #b8dccc inset !important; +} + +.page-container .el-input__wrapper.is-focus, +.page-container .el-select__wrapper.is-focused, +.console-container .el-input__wrapper.is-focus, +.console-container .el-select__wrapper.is-focused { + box-shadow: + 0 0 0 1px var(--mint-primary) inset, + 0 0 0 2px rgba(16, 185, 129, 0.2) !important; +} + +.page-container .btn-main.el-button, +.console-container .btn-main.el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-weight: 600; + --el-button-bg-color: var(--mint-primary); + --el-button-border-color: var(--mint-primary); + --el-button-hover-bg-color: var(--mint-primary-dark); + --el-button-hover-border-color: var(--mint-primary-dark); +} + +.el-dialog .btn-main.el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-weight: 600; + --el-button-bg-color: var(--mint-primary); + --el-button-border-color: var(--mint-primary); + --el-button-hover-bg-color: var(--mint-primary-dark); + --el-button-hover-border-color: var(--mint-primary-dark); +} + +/* 弹窗内主按钮强兜底:确保“保存/确定”是主色实心(避免被默认按钮样式稀释) */ +.el-dialog .btn-main.el-button:not(.el-button--text):not(.el-button--link) { + color: #fff !important; + background: var(--mint-primary) !important; + border-color: var(--mint-primary) !important; +} +.el-dialog .btn-main.el-button:not(.el-button--text):not(.el-button--link):hover { + background: var(--mint-primary-dark) !important; + border-color: var(--mint-primary-dark) !important; +} +.el-dialog .btn-main.el-button:not(.el-button--text):not(.el-button--link):active { + background: var(--mint-primary-dark) !important; + border-color: var(--mint-primary-dark) !important; +} + +.page-container .btn-ghost.el-button, +.console-container .btn-ghost.el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-weight: 600; + color: var(--mint-text); + border-color: var(--mint-border); + background: var(--mint-surface); +} + +.el-dialog .btn-ghost.el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-weight: 600; + color: var(--mint-text); + border-color: var(--mint-border); + background: var(--mint-surface); +} + +.page-container .btn-op-item.el-button, +.console-container .btn-op-item.el-button { + height: 28px; + padding: 0 8px; + border-radius: 6px; + font-size: 12px; + font-weight: 600; + border-color: var(--mint-border); +} + +.page-container .el-button:not(.is-circle):not(.el-button--text), +.console-container .el-button:not(.is-circle):not(.el-button--text) { + height: 36px; + border-radius: 8px; + font-weight: 600; +} + +.page-container .btn-op-item.el-button > span, +.console-container .btn-op-item.el-button > span { + gap: 4px; +} + +.page-container .el-button .el-icon, +.console-container .el-button .el-icon { + margin-right: 0; +} + +.page-container .el-button[class*='auto-icon-']:not(.is-circle):not(.el-button--text):not(:has(.el-icon)) > span::before, +.console-container .el-button[class*='auto-icon-']:not(.is-circle):not(.el-button--text):not(:has(.el-icon)) > span::before { + content: ''; + width: 14px; + height: 14px; + background-color: currentColor; + opacity: 0.72; + flex-shrink: 0; + mask: var(--auto-icon-mask) center / contain no-repeat; + -webkit-mask: var(--auto-icon-mask) center / contain no-repeat; +} + +.page-container .btn-op-item.primary.el-button, +.console-container .btn-op-item.primary.el-button { + color: #fff; + border-color: var(--mint-primary); + background: var(--mint-primary); +} + +.page-container .list-toolbar-row > .el-button:not(.el-button--text):not(.el-button--link), +.console-container .list-toolbar-row > .el-button:not(.el-button--text):not(.el-button--link), +.page-container .toolbar-right > .el-button:not(.el-button--text):not(.el-button--link), +.console-container .toolbar-right > .el-button:not(.el-button--text):not(.el-button--link) { + color: var(--mint-text); + border-color: var(--mint-border); + background: var(--mint-surface); +} + +.page-container .list-toolbar-row > .el-button:not(.el-button--text):not(.el-button--link):first-of-type, +.console-container .list-toolbar-row > .el-button:not(.el-button--text):not(.el-button--link):first-of-type, +.page-container .toolbar-right > .el-button:not(.el-button--text):not(.el-button--link):first-of-type, +.console-container .toolbar-right > .el-button:not(.el-button--text):not(.el-button--link):first-of-type { + color: #fff; + border-color: var(--mint-primary); + background: var(--mint-primary); +} + +.page-container .el-table__cell .btn-op-item.el-button, +.console-container .el-table__cell .btn-op-item.el-button { + color: var(--mint-text); + border-color: var(--mint-border); + background: var(--mint-surface); +} + +/* 列表操作列第一个按钮:白底 + 主色字(与各页「查看」等首操作一致;排除 link/text 与警示类) */ +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn), +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn), +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn) { + background: #fff !important; + border: 1px solid var(--mint-border) !important; + color: var(--mint-primary-dark) !important; + box-shadow: none !important; +} + +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn) .el-icon, +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn) .el-icon, +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn) .el-icon { + color: var(--mint-primary-dark) !important; +} + +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover, +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible, +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover, +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible, +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover, +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible { + background: var(--mint-primary-bg) !important; + border-color: var(--mint-primary) !important; + color: #047857 !important; +} + +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover .el-icon, +.page-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible .el-icon, +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover .el-icon, +.console-container .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible .el-icon, +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):hover .el-icon, +.el-dialog .el-table__cell .btn-op-item.el-button:first-of-type:not(.el-button--link):not(.el-button--text):not(.op-warn):focus-visible .el-icon { + color: #047857 !important; +} + +// 列表分割线统一:每个分区只保留一条线 +// 工具栏与列表之间:保留 .list-body 顶部线,去掉 .list-toolbar 底部线 +.page-container .list-toolbar, +.console-container .list-toolbar, +.el-dialog .list-toolbar { + border-bottom: none !important; +} + +// 列表与分页之间:保留列表底部线,去掉分页顶部线 +.page-container .pagination.list-pager-bar, +.console-container .pagination.list-pager-bar, +.el-dialog .pagination.list-pager-bar { + border-top: none !important; +} + +.page-container .el-button.auto-icon-plus, +.console-container .el-button.auto-icon-plus { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-delete, +.console-container .el-button.auto-icon-delete { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18'/%3E%3Cpath d='M8 6V4h8v2'/%3E%3Cpath d='M19 6l-1 14H6L5 6'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-upload, +.console-container .el-button.auto-icon-upload { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='M12 16V4'/%3E%3Cpath d='M8 8l4-4 4 4'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-download, +.console-container .el-button.auto-icon-download { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3Cpath d='M12 4v12'/%3E%3Cpath d='M8 12l4 4 4-4'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-search, +.console-container .el-button.auto-icon-search { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-refresh, +.console-container .el-button.auto-icon-refresh { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12a9 9 0 1 1-2.64-6.36'/%3E%3Cpath d='M21 3v6h-6'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-edit, +.console-container .el-button.auto-icon-edit { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20h9'/%3E%3Cpath d='M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-view, +.console-container .el-button.auto-icon-view { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s4-7 10-7 10 7 10 7-4 7-10 7-10-7-10-7z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E"); +} +.page-container .el-button.auto-icon-check, +.console-container .el-button.auto-icon-check { + --auto-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E"); +} + +.page-container .el-dialog__footer .el-button, +.console-container .el-dialog__footer .el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-weight: 600; +} + +.page-container .el-dialog__footer .el-button:not(.el-button--primary):not(.el-button--danger):not(.el-button--success), +.console-container .el-dialog__footer .el-button:not(.el-button--primary):not(.el-button--danger):not(.el-button--success) { + color: var(--mint-text); + background: var(--mint-surface); + border-color: var(--mint-border); +} + +.page-container .el-dialog__footer .el-button .el-icon, +.console-container .el-dialog__footer .el-button .el-icon { + margin-right: 6px; +} diff --git a/web-admin/src/assets/styles/core/fresh-mint-tokens.scss b/web-admin/src/assets/styles/core/fresh-mint-tokens.scss new file mode 100644 index 00000000..59b6fbdb --- /dev/null +++ b/web-admin/src/assets/styles/core/fresh-mint-tokens.scss @@ -0,0 +1,17 @@ +// Fresh Mint 设计令牌(与 test/fresh-mint-green.html、docs/web-admin-ui-spec-fresh-mint.md 一致) +:root { + --mint-primary: #10b981; + --mint-primary-dark: #059669; + --mint-primary-bg: #ecfdf5; + --mint-text: #1e293b; + --mint-text-muted: #64748b; + --mint-border: #d9e8e2; + --mint-bg-page: #fefefe; + --mint-surface: #ffffff; + --mint-table-head: #f8fafc; + --mint-row-alt: #fafafa; + --mint-row-hover: #f1f5f9; + --mint-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); + --mint-radius: 10px; + --mint-content-padding: 24px; +} diff --git a/web-admin/src/assets/styles/core/md.scss b/web-admin/src/assets/styles/core/md.scss new file mode 100644 index 00000000..b22fdc25 --- /dev/null +++ b/web-admin/src/assets/styles/core/md.scss @@ -0,0 +1,1036 @@ +/* 文章标题设置(h1-h6)*/ +/* ------------------------------------------------ */ +$font-color: #24292e; + +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.markdown-body h4, +.markdown-body h5, +.markdown-body h6 { + color: var(--art-gray-800) !important; + margin: 30px 0 10px 0; + font-weight: 600; +} + +.markdown-body h1 { + font-size: 30px; +} + +@media only screen and (max-width: 550px) { + .markdown-body h1 { + font-size: 26px; + } + + .markdown-body h2 { + font-size: 22px; + } + + .markdown-body h3 { + font-size: 18px; + } +} + +/* 块引用 */ +/* ------------------------------------------------ */ +.markdown-body blockquote { + color: rgba(60, 60, 67, 0.7); + font-size: 15px !important; + border-left: 0.18em solid #e7e7e8; + background: #f8f8f8; + padding: 15px 1em; + font-weight: 400 !important; +} + +/* 详情页文章字体颜色 */ +/* ------------------------------------------------ */ +.markdown-body p { + line-height: 28px; + margin-bottom: 10px; +} + +.markdown-body li, +.markdown-body p { + color: var(--art-gray-800) !important; + font-size: 16px !important; +} + +.dark .markdown-body li span { + color: var(--art-gray-800) !important; + background-color: transparent !important; +} + +.dark .markdown-body p span { + color: var(--art-gray-800) !important; + background-color: transparent !important; +} + +.line-numbers-mode { + background-color: var(--art-code-bg); + border-radius: 8px; + position: relative; + padding-left: 32px; + box-sizing: border-box; +} + +.line-numbers-mode pre { + flex: 1; + border-radius: 0 8px 8px 0; + background-color: var(--art-code-bg); +} + +.line-numbers-mode .line-numbers-wrapper { + width: 32px; + height: 100%; + text-align: center; + padding: 16px 0; + box-sizing: border-box; + border-right: 1px solid #000000; + position: absolute; + left: 0; + top: 0; +} + +.line-numbers-mode .line-numbers-wrapper span { + height: 23.6px; + line-height: 23.6px; + display: block; + color: #72747b; + font-size: 13px; + box-sizing: border-box; +} + +.line-numbers-mode .copy-btn { + display: inline-block; + display: flex; + position: absolute; + right: 10px; + top: 10px; + cursor: pointer; + opacity: 0; + background-color: #000; + border-radius: 5px; + text-align: center; + color: rgba(255, 255, 255, 0.6); + transition: opacity 0.3s; +} + +.line-numbers-mode .copy-btn div { + width: 34px; + height: 34px; + line-height: 34px; + cursor: pointer; + text-align: center; + font-size: 20px; +} + +.line-numbers-mode:hover .copy-btn { + opacity: 1; +} + +.line-numbers-mode .copy-btn span { + height: 34px; + line-height: 34px; + font-size: 13px; + padding-left: 10px; + display: none; +} + +.line-numbers-mode .copy-btn .show-copy { + opacity: 1; + display: block; +} + +.line-numbers-mode ::-webkit-scrollbar-track { + background-color: #292b30 !important; +} + +.markdown-body .anchor { + float: left; + line-height: 1; + margin-left: -20px; + padding-right: 4px; +} + +.markdown-body .anchor:focus { + outline: none; +} + +.markdown-body h1 .octicon-link, +.markdown-body h2 .octicon-link, +.markdown-body h3 .octicon-link, +.markdown-body h4 .octicon-link, +.markdown-body h5 .octicon-link, +.markdown-body h6 .octicon-link { + color: #1b1f23; + vertical-align: middle; + visibility: hidden; +} + +.markdown-body h1:hover .anchor, +.markdown-body h2:hover .anchor, +.markdown-body h3:hover .anchor, +.markdown-body h4:hover .anchor, +.markdown-body h5:hover .anchor, +.markdown-body h6:hover .anchor { + text-decoration: none; +} + +.markdown-body h1:hover .anchor .octicon-link, +.markdown-body h2:hover .anchor .octicon-link, +.markdown-body h3:hover .anchor .octicon-link, +.markdown-body h4:hover .anchor .octicon-link, +.markdown-body h5:hover .anchor .octicon-link, +.markdown-body h6:hover .anchor .octicon-link { + visibility: visible; +} + +.markdown-body h1:hover .anchor .octicon-link:before, +.markdown-body h2:hover .anchor .octicon-link:before, +.markdown-body h3:hover .anchor .octicon-link:before, +.markdown-body h4:hover .anchor .octicon-link:before, +.markdown-body h5:hover .anchor .octicon-link:before, +.markdown-body h6:hover .anchor .octicon-link:before { + width: 16px; + height: 16px; + content: ' '; + display: inline-block; +} + +.markdown-body { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + line-height: 1.5; + color: $font-color; + font-size: 16px; + line-height: 1.5; + word-wrap: break-word; +} + +.markdown-body details { + display: block; +} + +.markdown-body summary { + display: list-item; +} + +.markdown-body a { + background-color: initial; +} + +.markdown-body a:active, +.markdown-body a:hover { + outline-width: 0; +} + +.markdown-body strong { + font-weight: inherit; + font-weight: bolder; +} + +.markdown-body p br { + display: inline; + line-height: 11px; +} + +.markdown-body img { + border-style: none; +} + +.markdown-body hr { + box-sizing: initial; + height: 0; + overflow: visible; +} + +.markdown-body input { + font: inherit; + margin: 0; +} + +.markdown-body input { + overflow: visible; +} + +.markdown-body [type='checkbox'] { + box-sizing: border-box; + padding: 0; +} + +.markdown-body * { + box-sizing: border-box; +} + +.markdown-body input { + font-size: inherit; + line-height: inherit; +} + +.markdown-body a { + color: #0366d6; + text-decoration: none; +} + +.markdown-body a:hover { + text-decoration: underline; +} + +.markdown-body strong { + font-weight: 600; +} + +.markdown-body hr { + height: 0; + margin: 15px 0; + overflow: hidden; + background: transparent; + border: 0; + border-bottom: 1px solid #dfe2e5; +} + +.markdown-body hr:after, +.markdown-body hr:before { + display: table; + content: ''; +} + +.markdown-body hr:after { + clear: both; +} + +.markdown-body table { + border-spacing: 0; + border-collapse: collapse; +} + +.markdown-body td, +.markdown-body th { + padding: 0; +} + +.markdown-body details summary { + cursor: pointer; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: + 11px SFMono-Regular, + Consolas, + Liberation Mono, + Menlo, + monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: 1px solid #d1d5da; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #d1d5da; +} + +.markdown-body blockquote { + margin: 0; +} + +.markdown-body ol, +.markdown-body ul { + padding-left: 0; + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body ol ol, +.markdown-body ul ol { + list-style-type: lower-roman; +} + +.markdown-body ol ol ol, +.markdown-body ol ul ol, +.markdown-body ul ol ol, +.markdown-body ul ul ol { + list-style-type: lower-alpha; +} + +.markdown-body dd { + margin-left: 0; +} + +.markdown-body code, +.markdown-body pre, +.markdown-body .line-number { + font-size: 14px !important; + border-radius: 8px; + background-color: #282c34; +} + +.dark { + .markdown-body code, + .markdown-body pre, + .markdown-body .line-number { + background-color: #252525; + } +} + +.markdown-body pre { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body input::-webkit-inner-spin-button, +.markdown-body input::-webkit-outer-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; +} + +.markdown-body :checked + .radio-label { + position: relative; + z-index: 1; + border-color: #0366d6; +} + +.markdown-body .border { + border: 1px solid #e1e4e8 !important; +} + +.markdown-body .border-0 { + border: 0 !important; +} + +.markdown-body .border-bottom { + border-bottom: 1px solid #e1e4e8 !important; +} + +.markdown-body .rounded-1 { + border-radius: 3px !important; +} + +.markdown-body .bg-white { + background-color: #fff !important; +} + +.markdown-body .bg-gray-light { + background-color: #fafbfc !important; +} + +.markdown-body .text-gray-light { + color: #6a737d !important; +} + +.markdown-body .mb-0 { + margin-bottom: 0 !important; +} + +.markdown-body .my-2 { + margin-top: 8px !important; + margin-bottom: 8px !important; +} + +.markdown-body .pl-0 { + padding-left: 0 !important; +} + +.markdown-body .py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.markdown-body .pl-1 { + padding-left: 4px !important; +} + +.markdown-body .pl-2 { + padding-left: 8px !important; +} + +.markdown-body .py-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; +} + +.markdown-body .pl-3, +.markdown-body .px-3 { + padding-left: 16px !important; +} + +.markdown-body .px-3 { + padding-right: 16px !important; +} + +.markdown-body .pl-4 { + padding-left: 24px !important; +} + +.markdown-body .pl-5 { + padding-left: 32px !important; +} + +.markdown-body .pl-6 { + padding-left: 40px !important; +} + +.markdown-body .f6 { + font-size: 12px !important; +} + +.markdown-body .lh-condensed { + line-height: 1.25 !important; +} + +.markdown-body .text-bold { + font-weight: 600 !important; +} + +.markdown-body .pl-c { + color: #6a737d; +} + +.markdown-body .pl-c1, +.markdown-body .pl-s .pl-v { + color: #005cc5; +} + +.markdown-body .pl-e, +.markdown-body .pl-en { + color: #6f42c1; +} + +.markdown-body .pl-s .pl-s1, +.markdown-body .pl-smi { + color: $font-color; +} + +.markdown-body .pl-ent { + color: #22863a; +} + +.markdown-body .pl-k { + color: #d73a49; +} + +.markdown-body .pl-pds, +.markdown-body .pl-s, +.markdown-body .pl-s .pl-pse .pl-s1, +.markdown-body .pl-sr, +.markdown-body .pl-sr .pl-cce, +.markdown-body .pl-sr .pl-sra, +.markdown-body .pl-sr .pl-sre { + color: #032f62; +} + +.markdown-body .pl-smw, +.markdown-body .pl-v { + color: #e36209; +} + +.markdown-body .pl-bu { + color: #b31d28; +} + +.markdown-body .pl-ii { + color: #fafbfc; + background-color: #b31d28; +} + +.markdown-body .pl-c2 { + color: #fafbfc; + background-color: #d73a49; +} + +.markdown-body .pl-c2:before { + content: '^M'; +} + +.markdown-body .pl-sr .pl-cce { + font-weight: 700; + color: #22863a; +} + +.markdown-body .pl-ml { + color: #735c0f; +} + +.markdown-body .pl-mh, +.markdown-body .pl-mh .pl-en, +.markdown-body .pl-ms { + font-weight: 700; + color: #005cc5; +} + +.markdown-body .pl-mi { + font-style: italic; + color: $font-color; +} + +.markdown-body .pl-mb { + font-weight: 700; + color: $font-color; +} + +.markdown-body .pl-md { + color: #b31d28; + background-color: #ffeef0; +} + +.markdown-body .pl-mi1 { + color: #22863a; + background-color: #f0fff4; +} + +.markdown-body .pl-mc { + color: #e36209; + background-color: #ffebda; +} + +.markdown-body .pl-mi2 { + color: #f6f8fa; + background-color: #005cc5; +} + +.markdown-body .pl-mdr { + font-weight: 700; + color: #6f42c1; +} + +.markdown-body .pl-ba { + color: #586069; +} + +.markdown-body .pl-sg { + color: #959da5; +} + +.markdown-body .pl-corl { + text-decoration: underline; + color: #032f62; +} + +.markdown-body .mb-0 { + margin-bottom: 0 !important; +} + +.markdown-body .my-2 { + margin-bottom: 8px !important; +} + +.markdown-body .my-2 { + margin-top: 8px !important; +} + +.markdown-body .pl-0 { + padding-left: 0 !important; +} + +.markdown-body .py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.markdown-body .pl-1 { + padding-left: 4px !important; +} + +.markdown-body .pl-2 { + padding-left: 8px !important; +} + +.markdown-body .py-2 { + padding-top: 8px !important; + padding-bottom: 8px !important; +} + +.markdown-body .pl-3 { + padding-left: 16px !important; +} + +.markdown-body .pl-4 { + padding-left: 24px !important; +} + +.markdown-body .pl-5 { + padding-left: 32px !important; +} + +.markdown-body .pl-6 { + padding-left: 40px !important; +} + +.markdown-body .pl-7 { + padding-left: 48px !important; +} + +.markdown-body .pl-8 { + padding-left: 64px !important; +} + +.markdown-body .pl-9 { + padding-left: 80px !important; +} + +.markdown-body .pl-10 { + padding-left: 96px !important; +} + +.markdown-body .pl-11 { + padding-left: 112px !important; +} + +.markdown-body .pl-12 { + padding-left: 128px !important; +} + +.markdown-body hr { + border-bottom-color: #eee; +} + +.markdown-body kbd { + display: inline-block; + padding: 3px 5px; + font: + 11px SFMono-Regular, + Consolas, + Liberation Mono, + Menlo, + monospace; + line-height: 10px; + color: #444d56; + vertical-align: middle; + background-color: #fafbfc; + border: 1px solid #d1d5da; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #d1d5da; +} + +.markdown-body:after, +.markdown-body:before { + display: table; + content: ''; +} + +.markdown-body:after { + clear: both; +} + +.markdown-body > :first-child { + margin-top: 0 !important; +} + +.markdown-body > :last-child { + margin-bottom: 0 !important; +} + +.markdown-body a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-body blockquote, +.markdown-body details, +.markdown-body dl, +.markdown-body ol, +.markdown-body pre, +.markdown-body table, +.markdown-body ul { + margin-top: 0; + margin-bottom: 16px; +} + +.markdown-body hr { + height: 0.25em; + padding: 0; + margin: 24px 0; + background-color: #e1e4e8; + border: 0; +} + +.markdown-body blockquote > :first-child { + margin-top: 0; +} + +.markdown-body blockquote > :last-child { + margin-bottom: 0; +} + +.markdown-body ol, +.markdown-body ul { + padding-left: 1em; +} + +.markdown-body ol ol, +.markdown-body ol ul, +.markdown-body ul ol, +.markdown-body ul ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-body li { + line-height: 28px; + font-size: 14px; + word-wrap: break-all; + list-style: disc; + margin-left: 10px; +} + +.markdown-body li > p { + margin-top: 16px; +} + +.markdown-body li + li { + margin-top: 0.25em; +} + +.markdown-body dl { + padding: 0; +} + +.markdown-body dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: 600; +} + +.markdown-body dl dd { + padding: 0 16px; + margin-bottom: 16px; +} + +.markdown-body table { + display: block; + width: 100%; + overflow: auto; +} + +.markdown-body table th { + font-weight: 600; +} + +.markdown-body table td, +.markdown-body table th { + padding: 6px 13px; + border: 1px solid #dfe2e5; +} + +.markdown-body table tr { + background-color: #fff; + border-top: 1px solid #c6cbd1; +} + +.markdown-body table tr:nth-child(2n) { + background-color: #f6f8fa; +} + +.markdown-body img { + max-width: 100%; + box-sizing: initial; + background-color: #fff; + border: 1px solid #eee; + border: 1px solid var(--art-c-border-2); + cursor: zoom-in; +} + +.markdown-body img[align='right'] { + padding-left: 20px; +} + +.markdown-body img[align='left'] { + padding-right: 20px; +} + +.markdown-body code { + padding: 0.2em 0.4em; + margin: 0; + font-size: 85%; + background-color: rgba(27, 31, 35, 0.05); + border-radius: 3px; +} + +.markdown-body pre { + word-wrap: normal; +} + +.markdown-body pre > code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-body .highlight { + margin-bottom: 16px; +} + +.markdown-body .highlight pre { + margin-bottom: 0; + word-break: normal; +} + +.markdown-body .highlight pre, +.markdown-body pre { + padding: 15px 20px 15px 0; + overflow: auto; + font-size: 92%; + line-height: 1.6; +} + +.markdown-body pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background-color: initial; + border: 0; +} + +.markdown-body .commit-tease-sha { + display: inline-block; + font-size: 90%; + color: #444d56; +} + +.markdown-body .full-commit .btn-outline:not(:disabled):hover { + color: #005cc5; + border-color: #005cc5; +} + +.markdown-body .blob-wrapper { + overflow-x: auto; + overflow-y: hidden; +} + +.markdown-body .blob-wrapper-embedded { + max-height: 240px; + overflow-y: auto; +} + +.markdown-body .blob-num { + width: 1%; + min-width: 50px; + padding-right: 10px; + padding-left: 10px; + font-size: 12px; + line-height: 20px; + color: rgba(27, 31, 35, 0.3); + text-align: right; + white-space: nowrap; + vertical-align: top; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.markdown-body .blob-num:hover { + color: rgba(27, 31, 35, 0.6); +} + +.markdown-body .blob-num:before { + content: attr(data-line-number); +} + +.markdown-body .blob-code { + position: relative; + padding-right: 10px; + padding-left: 10px; + line-height: 20px; + vertical-align: top; +} + +.markdown-body .blob-code-inner { + overflow: visible; + font-size: 12px; + color: $font-color; + word-wrap: normal; + white-space: pre; +} + +.markdown-body .pl-token.active, +.markdown-body .pl-token:hover { + cursor: pointer; + background: #ffea7f; +} + +.markdown-body .tab-size[data-tab-size='1'] { + -moz-tab-size: 1; + tab-size: 1; +} + +.markdown-body .tab-size[data-tab-size='2'] { + -moz-tab-size: 2; + tab-size: 2; +} + +.markdown-body .tab-size[data-tab-size='3'] { + -moz-tab-size: 3; + tab-size: 3; +} + +.markdown-body .tab-size[data-tab-size='4'] { + -moz-tab-size: 4; + tab-size: 4; +} + +.markdown-body .tab-size[data-tab-size='5'] { + -moz-tab-size: 5; + tab-size: 5; +} + +.markdown-body .tab-size[data-tab-size='6'] { + -moz-tab-size: 6; + tab-size: 6; +} + +.markdown-body .tab-size[data-tab-size='7'] { + -moz-tab-size: 7; + tab-size: 7; +} + +.markdown-body .tab-size[data-tab-size='8'] { + -moz-tab-size: 8; + tab-size: 8; +} + +.markdown-body .tab-size[data-tab-size='9'] { + -moz-tab-size: 9; + tab-size: 9; +} + +.markdown-body .tab-size[data-tab-size='10'] { + -moz-tab-size: 10; + tab-size: 10; +} + +.markdown-body .tab-size[data-tab-size='11'] { + -moz-tab-size: 11; + tab-size: 11; +} + +.markdown-body .tab-size[data-tab-size='12'] { + -moz-tab-size: 12; + tab-size: 12; +} + +.markdown-body .task-list-item { + list-style-type: none; +} + +.markdown-body .task-list-item + .task-list-item { + margin-top: 3px; +} + +.markdown-body .task-list-item input { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} diff --git a/web-admin/src/assets/styles/core/mixin.scss b/web-admin/src/assets/styles/core/mixin.scss new file mode 100755 index 00000000..db36888a --- /dev/null +++ b/web-admin/src/assets/styles/core/mixin.scss @@ -0,0 +1,157 @@ +// sass 混合宏(函数) + +/** +* 溢出省略号 +* @param {Number} 行数 +*/ +@mixin ellipsis($rowCount: 1) { + @if $rowCount <=1 { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } @else { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: $rowCount; + -webkit-box-orient: vertical; + } +} + +/** +* 控制用户能否选中文本 +* @param {String} 类型 +*/ +@mixin userSelect($value: none) { + user-select: $value; + -moz-user-select: $value; + -ms-user-select: $value; + -webkit-user-select: $value; +} + +// 绝对定位居中 +@mixin absoluteCenter() { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; +} + +/** +* css3动画 +* +*/ +@mixin animation( + $from: ( + width: 0px + ), + $to: ( + width: 100px + ), + $name: mymove, + $animate: mymove 2s 1 linear infinite +) { + -webkit-animation: $animate; + -o-animation: $animate; + animation: $animate; + + @keyframes #{$name} { + from { + @each $key, $value in $from { + #{$key}: #{$value}; + } + } + + to { + @each $key, $value in $to { + #{$key}: #{$value}; + } + } + } + + @-webkit-keyframes #{$name} { + from { + @each $key, $value in $from { + $key: $value; + } + } + + to { + @each $key, $value in $to { + $key: $value; + } + } + } +} + +// 圆形盒子 +@mixin circle($size: 11px, $bg: #fff) { + border-radius: 50%; + width: $size; + height: $size; + line-height: $size; + text-align: center; + background: $bg; +} + +// placeholder +@mixin placeholder($color: #bbb) { + // Firefox + &::-moz-placeholder { + color: $color; + opacity: 1; + } + + // Internet Explorer 10+ + &:-ms-input-placeholder { + color: $color; + } + + // Safari and Chrome + &::-webkit-input-placeholder { + color: $color; + } + + &:placeholder-shown { + text-overflow: ellipsis; + } +} + +//背景透明,文字不透明。兼容IE8 +@mixin betterTransparentize($color, $alpha) { + $c: rgba($color, $alpha); + $ie_c: ie_hex_str($c); + background: rgba($color, 1); + background: $c; + background: transparent \9; + zoom: 1; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#{$ie_c}, endColorstr=#{$ie_c}); + -ms-filter: 'progid:DXImageTransform.Microsoft.gradient(startColorstr=#{$ie_c}, endColorstr=#{$ie_c})'; +} + +//添加浏览器前缀 +@mixin browserPrefix($propertyName, $value) { + @each $prefix in -webkit-, -moz-, -ms-, -o-, '' { + #{$prefix}#{$propertyName}: $value; + } +} + +// 边框 +@mixin border($color: red) { + border: 1px solid $color; +} + +// 背景滤镜 +@mixin backdropBlur() { + --tw-backdrop-blur: blur(30px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) + var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) + var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) + var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) + var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) + var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} diff --git a/web-admin/src/assets/styles/core/reset.scss b/web-admin/src/assets/styles/core/reset.scss new file mode 100755 index 00000000..17a3bcf9 --- /dev/null +++ b/web-admin/src/assets/styles/core/reset.scss @@ -0,0 +1,41 @@ +@charset "UTF-8"; + +/*滚动条*/ +/*滚动条整体部分,必须要设置*/ +::-webkit-scrollbar { + width: 8px !important; + height: 0 !important; +} + +/*滚动条的轨道*/ +::-webkit-scrollbar-track { + background-color: var(--art-gray-200); +} + +/*滚动条的滑块按钮*/ +::-webkit-scrollbar-thumb { + border-radius: 5px; + background-color: #cccccc !important; + transition: all 0.2s; + -webkit-transition: all 0.2s; +} + +::-webkit-scrollbar-thumb:hover { + background-color: #b0abab !important; +} + +/*滚动条的上下两端的按钮*/ +::-webkit-scrollbar-button { + height: 0px; + width: 0; +} + +.dark { + ::-webkit-scrollbar-track { + background-color: var(--default-bg-color); + } + + ::-webkit-scrollbar-thumb { + background-color: var(--art-gray-300) !important; + } +} diff --git a/web-admin/src/assets/styles/core/router-transition.scss b/web-admin/src/assets/styles/core/router-transition.scss new file mode 100644 index 00000000..f47c7411 --- /dev/null +++ b/web-admin/src/assets/styles/core/router-transition.scss @@ -0,0 +1,104 @@ +@use 'sass:map'; + +// === 变量区域 === +$transition: ( + // 动画持续时间 + duration: 0.25s, + // 滑动动画的移动距离 + distance: 15px, + // 默认缓动函数 + easing: cubic-bezier(0.25, 0.1, 0.25, 1), + // 淡入淡出专用的缓动函数 + fade-easing: cubic-bezier(0.4, 0, 0.6, 1) +); + +// 抽取配置值函数,提高可复用性 +@function transition-config($key) { + @return map.get($transition, $key); +} + +// 变量简写 +$duration: transition-config('duration'); +$distance: transition-config('distance'); +$easing: transition-config('easing'); +$fade-easing: transition-config('fade-easing'); + +// === 动画类 === + +// 淡入淡出动画 +.fade { + &-enter-active, + &-leave-active { + transition: opacity $duration $fade-easing; + will-change: opacity; + } + + &-enter-from, + &-leave-to { + opacity: 0; + } + + &-enter-to, + &-leave-from { + opacity: 1; + } +} + +// 滑动动画通用样式 +@mixin slide-transition($direction) { + $distance-x: 0; + $distance-y: 0; + + @if $direction == 'left' { + $distance-x: -$distance; + } @else if $direction == 'right' { + $distance-x: $distance; + } @else if $direction == 'top' { + $distance-y: -$distance; + } @else if $direction == 'bottom' { + $distance-y: $distance; + } + + &-enter-active { + transition: + opacity $duration $easing, + transform $duration $easing; + will-change: opacity, transform; + } + + &-leave-active { + transition: + opacity calc($duration * 0.7) $easing, + transform calc($duration * 0.7) $easing; + will-change: opacity, transform; + } + + &-enter-from { + opacity: 0; + transform: translate3d($distance-x, $distance-y, 0); + } + + &-enter-to { + opacity: 1; + transform: translate3d(0, 0, 0); + } + + &-leave-to { + opacity: 0; + transform: translate3d(-$distance-x, -$distance-y, 0); + } +} + +// 滑动动画方向类 +.slide-left { + @include slide-transition('left'); +} +.slide-right { + @include slide-transition('right'); +} +.slide-top { + @include slide-transition('top'); +} +.slide-bottom { + @include slide-transition('bottom'); +} diff --git a/web-admin/src/assets/styles/core/subtable.scss b/web-admin/src/assets/styles/core/subtable.scss new file mode 100644 index 00000000..8f480a5a --- /dev/null +++ b/web-admin/src/assets/styles/core/subtable.scss @@ -0,0 +1,50 @@ +/** + * 子列表(嵌套表格)通用样式 + * 目标:宽度按内容自适应,不强制占满;超出时在容器上横向滚动 + */ + +.sqxp-subtable-wrap { + display: inline-block; + width: fit-content; + max-width: 100%; + overflow-x: auto; + overflow-y: hidden; + text-align: left; + -webkit-overflow-scrolling: touch; + border-radius: 8px; +} + +.sqxp-subtable { + width: max-content; + max-width: 100%; +} + +/* Element Plus table 内层 wrapper 默认会按父容器撑满,需要一起改成按内容撑开 */ +.sqxp-subtable .el-table__inner-wrapper, +.sqxp-subtable .el-table__header-wrapper, +.sqxp-subtable .el-table__body-wrapper { + width: max-content; +} + +/* 避免某些全局样式把 expanded-cell 当成普通单元格居中 */ +td.el-table__expanded-cell { + text-align: left; +} + +/* 子列表汇总行:统一对齐、间距与文字风格 */ +.sqxp-subtable-summary { + margin-top: 10px; + display: flex; + align-items: center; + justify-content: flex-end; + gap: 18px; + color: #606266; + font-size: 13px; + line-height: 1.4; +} + +.sqxp-subtable-summary__amount { + color: #ee0a24; + font-weight: 600; +} + diff --git a/web-admin/src/assets/styles/core/tailwind.css b/web-admin/src/assets/styles/core/tailwind.css new file mode 100644 index 00000000..1a9e22cb --- /dev/null +++ b/web-admin/src/assets/styles/core/tailwind.css @@ -0,0 +1,208 @@ +@import 'tailwindcss'; +@custom-variant dark (&:where(.dark, .dark *)); + +/* ==================== Light Mode Variables ==================== */ +:root { + /* Base Colors */ + --art-color: #ffffff; + --theme-color: var(--main-color); + + /* Theme Colors - OKLCH Format */ + --art-primary: oklch(0.7 0.23 260); + --art-secondary: oklch(0.72 0.19 231.6); + --art-error: oklch(0.73 0.15 25.3); + --art-info: oklch(0.58 0.03 254.1); + --art-success: oklch(0.78 0.17 166.1); + --art-warning: oklch(0.78 0.14 75.5); + --art-danger: oklch(0.68 0.22 25.3); + + /* Gray Scale - Light Mode */ + --art-gray-100: #f9fafb; + --art-gray-200: #f2f4f5; + --art-gray-300: #e6eaeb; + --art-gray-400: #dbdfe1; + --art-gray-500: #949eb7; + --art-gray-600: #7987a1; + --art-gray-700: #4d5875; + --art-gray-800: #383853; + --art-gray-900: #323251; + + /* Border Colors */ + --art-card-border: rgba(0, 0, 0, 0.08); + + --default-border: #e2e8ee; + --default-border-dashed: #dbdfe9; + + /* Background Colors */ + --default-bg-color: #fafbfc; + --default-box-color: #ffffff; + + /* Hover Color */ + --art-hover-color: #edeff0; + + /* Active Color */ + --art-active-color: #f2f4f5; + + /* Element Component Active Color */ + --art-el-active-color: #f2f4f5; +} + +/* ==================== Dark Mode Variables ==================== */ +.dark { + /* Base Colors */ + --art-color: #000000; + + /* Gray Scale - Dark Mode */ + --art-gray-100: #110f0f; + --art-gray-200: #17171c; + --art-gray-300: #393946; + --art-gray-400: #505062; + --art-gray-500: #73738c; + --art-gray-600: #8f8fa3; + --art-gray-700: #ababba; + --art-gray-800: #c7c7d1; + --art-gray-900: #e3e3e8; + + /* Border Colors */ + --art-card-border: rgba(255, 255, 255, 0.08); + + --default-border: rgba(255, 255, 255, 0.1); + --default-border-dashed: #363843; + + /* Background Colors */ + --default-bg-color: #070707; + --default-box-color: #161618; + + /* Hover Color */ + --art-hover-color: #252530; + + /* Active Color */ + --art-active-color: #202226; + + /* Element Component Active Color */ + --art-el-active-color: #2e2e38; +} + +/* ==================== Tailwind Theme Configuration ==================== */ +@theme { + /* Box Color (Light: white / Dark: black) */ + --color-box: var(--default-box-color); + + /* System Theme Color */ + --color-theme: var(--theme-color); + + /* Hover Color */ + --color-hover-color: var(--art-hover-color); + + /* Active Color */ + --color-active-color: var(--art-active-color); + + /* Active Color */ + --color-el-active-color: var(--art-active-color); + + /* ElementPlus Theme Colors */ + --color-primary: var(--art-primary); + --color-secondary: var(--art-secondary); + --color-error: var(--art-error); + --color-info: var(--art-info); + --color-success: var(--art-success); + --color-warning: var(--art-warning); + --color-danger: var(--art-danger); + + /* Gray Scale Colors (Auto-adapts to dark mode) */ + --color-g-100: var(--art-gray-100); + --color-g-200: var(--art-gray-200); + --color-g-300: var(--art-gray-300); + --color-g-400: var(--art-gray-400); + --color-g-500: var(--art-gray-500); + --color-g-600: var(--art-gray-600); + --color-g-700: var(--art-gray-700); + --color-g-800: var(--art-gray-800); + --color-g-900: var(--art-gray-900); +} + +/* ==================== Custom Border Radius Utilities ==================== */ +@utility rounded-custom-xs { + border-radius: calc(var(--custom-radius) / 2); +} + +@utility rounded-custom-sm { + border-radius: calc(var(--custom-radius) / 2 + 2px); +} + +/* ==================== Custom Utility Classes ==================== */ +@layer utilities { + /* Flexbox Layout Utilities */ + .flex-c { + @apply flex items-center; + } + + .flex-b { + @apply flex justify-between; + } + + .flex-cc { + @apply flex items-center justify-center; + } + + .flex-cb { + @apply flex items-center justify-between; + } + + /* Transition Utilities */ + .tad-200 { + @apply transition-all duration-200; + } + + .tad-300 { + @apply transition-all duration-300; + } + + /* Border Utilities */ + .border-full-d { + @apply border border-[var(--default-border)]; + } + + .border-b-d { + @apply border-b border-[var(--default-border)]; + } + + .border-t-d { + @apply border-t border-[var(--default-border)]; + } + + .border-l-d { + @apply border-l border-[var(--default-border)]; + } + + .border-r-d { + @apply border-r border-[var(--default-border)]; + } + + /* Cursor Utilities */ + .c-p { + @apply cursor-pointer; + } +} + +/* ==================== Custom Component Classes ==================== */ +@layer components { + /* Art Card Header Component */ + .art-card-header { + @apply flex justify-between pr-6 pb-1; + + .title { + h4 { + @apply text-lg font-medium text-g-900; + } + + p { + @apply mt-1 text-sm text-g-600; + + span { + @apply ml-2 font-medium; + } + } + } + } +} diff --git a/web-admin/src/assets/styles/core/theme-animation.scss b/web-admin/src/assets/styles/core/theme-animation.scss new file mode 100644 index 00000000..377b9455 --- /dev/null +++ b/web-admin/src/assets/styles/core/theme-animation.scss @@ -0,0 +1,63 @@ +// 定义基础变量 +$bg-animation-color-light: #000; +$bg-animation-color-dark: #fff; +$bg-animation-duration: 0.5s; + +html { + --bg-animation-color: $bg-animation-color-light; + + &.dark { + --bg-animation-color: $bg-animation-color-dark; + } + + // View transition styles + &::view-transition-old(*) { + animation: none; + } + + &::view-transition-new(*) { + animation: clip $bg-animation-duration ease-in both; + } + + &::view-transition-old(root) { + z-index: 1; + } + + &::view-transition-new(root) { + z-index: 9999; + } + + &.dark { + &::view-transition-old(*) { + animation: clip $bg-animation-duration ease-in reverse both; + } + + &::view-transition-new(*) { + animation: none; + } + + &::view-transition-old(root) { + z-index: 9999; + } + + &::view-transition-new(root) { + z-index: 1; + } + } +} + +// 定义动画 +@keyframes clip { + from { + clip-path: circle(0% at var(--x) var(--y)); + } + + to { + clip-path: circle(var(--r) at var(--x) var(--y)); + } +} + +// body 相关样式 +body { + background-color: var(--bg-animation-color); +} diff --git a/web-admin/src/assets/styles/core/theme-change.scss b/web-admin/src/assets/styles/core/theme-change.scss new file mode 100755 index 00000000..5b640d2c --- /dev/null +++ b/web-admin/src/assets/styles/core/theme-change.scss @@ -0,0 +1,11 @@ +// 主题切换过渡优化,优化除视觉上的不适感 +.theme-change { + * { + transition: 0s !important; + } + + .el-switch__core, + .el-switch__action { + transition: all 0.3s !important; + } +} diff --git a/web-admin/src/assets/styles/core/utilities-override.scss b/web-admin/src/assets/styles/core/utilities-override.scss new file mode 100644 index 00000000..4773c21b --- /dev/null +++ b/web-admin/src/assets/styles/core/utilities-override.scss @@ -0,0 +1,5 @@ +// 须在本入口最后加载;不用 @layer,并配合 !important,以压过 main.ts 中先加载的 Tailwind 默认 `.border-b` +.border-b { + border-bottom-style: unset !important; + border-bottom-width: unset !important; +} diff --git a/web-admin/src/assets/styles/custom/one-dark-pro.scss b/web-admin/src/assets/styles/custom/one-dark-pro.scss new file mode 100644 index 00000000..36bdf63a --- /dev/null +++ b/web-admin/src/assets/styles/custom/one-dark-pro.scss @@ -0,0 +1,98 @@ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + + color: #a6accd; +} + +.hljs-string, +.hljs-section, +.hljs-selector-class, +.hljs-template-variable, +.hljs-deletion { + color: #aed07e !important; +} + +.hljs-comment, +.hljs-quote { + color: #6f747d; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c792ea; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #c86068; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #abb2bf; +} + +.hljs-attribute { + color: #c792ea; +} + +.hljs-function { + color: #c792ea; +} + +.hljs-type { + color: #f07178; +} + +.hljs-title { + color: #82aaff !important; +} + +.hljs-built_in, +.hljs-class { + color: #82aaff; +} + +// 括号 +.hljs-params { + color: #a6accd; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #de7e61; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id { + color: #61aeee; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/web-admin/src/assets/styles/index.scss b/web-admin/src/assets/styles/index.scss new file mode 100644 index 00000000..5f569f85 --- /dev/null +++ b/web-admin/src/assets/styles/index.scss @@ -0,0 +1,29 @@ +// 重置默认样式 +@use './core/reset.scss'; + +// Fresh Mint 设计令牌 +@use './core/fresh-mint-tokens.scss'; + +// 应用全局样式 +@use './core/app.scss'; + +// Element Plus 样式优化 +@use './core/el-ui.scss'; + +// Element Plus 暗黑主题 +@use './core/el-dark.scss'; + +// 暗黑主题样式优化 +@use './core/dark.scss'; + +// 路由切换动画 +@use './core/router-transition'; + +// 嵌套子表(子列表)样式 +@use './core/subtable.scss'; + +// 主题切换过渡优化 +@use './core/theme-change.scss'; + +// 主题切换圆形扩散动画 +@use './core/theme-animation.scss'; diff --git a/web-admin/src/assets/svg/404.svg b/web-admin/src/assets/svg/404.svg new file mode 100644 index 00000000..6df50190 --- /dev/null +++ b/web-admin/src/assets/svg/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/bug.svg b/web-admin/src/assets/svg/bug.svg new file mode 100644 index 00000000..05a150dc --- /dev/null +++ b/web-admin/src/assets/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/build.svg b/web-admin/src/assets/svg/build.svg new file mode 100644 index 00000000..97c46886 --- /dev/null +++ b/web-admin/src/assets/svg/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/button.svg b/web-admin/src/assets/svg/button.svg new file mode 100644 index 00000000..d14d5806 --- /dev/null +++ b/web-admin/src/assets/svg/button.svg @@ -0,0 +1 @@ + diff --git a/web-admin/src/assets/svg/caret-back.svg b/web-admin/src/assets/svg/caret-back.svg new file mode 100644 index 00000000..9bae7223 --- /dev/null +++ b/web-admin/src/assets/svg/caret-back.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/caret-forward.svg b/web-admin/src/assets/svg/caret-forward.svg new file mode 100644 index 00000000..1ec3f7d0 --- /dev/null +++ b/web-admin/src/assets/svg/caret-forward.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/cascader.svg b/web-admin/src/assets/svg/cascader.svg new file mode 100644 index 00000000..e256024f --- /dev/null +++ b/web-admin/src/assets/svg/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/category.svg b/web-admin/src/assets/svg/category.svg new file mode 100644 index 00000000..df92526d --- /dev/null +++ b/web-admin/src/assets/svg/category.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/chart.svg b/web-admin/src/assets/svg/chart.svg new file mode 100644 index 00000000..27728fb0 --- /dev/null +++ b/web-admin/src/assets/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/checkbox.svg b/web-admin/src/assets/svg/checkbox.svg new file mode 100644 index 00000000..013fd3a2 --- /dev/null +++ b/web-admin/src/assets/svg/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/clipboard.svg b/web-admin/src/assets/svg/clipboard.svg new file mode 100644 index 00000000..90923ff6 --- /dev/null +++ b/web-admin/src/assets/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/code.svg b/web-admin/src/assets/svg/code.svg new file mode 100644 index 00000000..5f9c5abd --- /dev/null +++ b/web-admin/src/assets/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/color.svg b/web-admin/src/assets/svg/color.svg new file mode 100644 index 00000000..44a81aab --- /dev/null +++ b/web-admin/src/assets/svg/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/company.svg b/web-admin/src/assets/svg/company.svg new file mode 100644 index 00000000..fcf13941 --- /dev/null +++ b/web-admin/src/assets/svg/company.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/component.svg b/web-admin/src/assets/svg/component.svg new file mode 100644 index 00000000..29c34580 --- /dev/null +++ b/web-admin/src/assets/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/dashboard.svg b/web-admin/src/assets/svg/dashboard.svg new file mode 100644 index 00000000..5317d370 --- /dev/null +++ b/web-admin/src/assets/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/date-range.svg b/web-admin/src/assets/svg/date-range.svg new file mode 100644 index 00000000..fda571e7 --- /dev/null +++ b/web-admin/src/assets/svg/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/date.svg b/web-admin/src/assets/svg/date.svg new file mode 100644 index 00000000..52dc73ee --- /dev/null +++ b/web-admin/src/assets/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/dict.svg b/web-admin/src/assets/svg/dict.svg new file mode 100644 index 00000000..48493773 --- /dev/null +++ b/web-admin/src/assets/svg/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/documentation.svg b/web-admin/src/assets/svg/documentation.svg new file mode 100644 index 00000000..70431228 --- /dev/null +++ b/web-admin/src/assets/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/download.svg b/web-admin/src/assets/svg/download.svg new file mode 100644 index 00000000..c8969513 --- /dev/null +++ b/web-admin/src/assets/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/drag.svg b/web-admin/src/assets/svg/drag.svg new file mode 100644 index 00000000..4185d3ce --- /dev/null +++ b/web-admin/src/assets/svg/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/druid.svg b/web-admin/src/assets/svg/druid.svg new file mode 100644 index 00000000..a2b4b4ed --- /dev/null +++ b/web-admin/src/assets/svg/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/edit.svg b/web-admin/src/assets/svg/edit.svg new file mode 100644 index 00000000..d26101f2 --- /dev/null +++ b/web-admin/src/assets/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/education.svg b/web-admin/src/assets/svg/education.svg new file mode 100644 index 00000000..7bfb01d1 --- /dev/null +++ b/web-admin/src/assets/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/email.svg b/web-admin/src/assets/svg/email.svg new file mode 100644 index 00000000..74d25e21 --- /dev/null +++ b/web-admin/src/assets/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/example.svg b/web-admin/src/assets/svg/example.svg new file mode 100644 index 00000000..46f42b53 --- /dev/null +++ b/web-admin/src/assets/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/excel.svg b/web-admin/src/assets/svg/excel.svg new file mode 100644 index 00000000..74d97b80 --- /dev/null +++ b/web-admin/src/assets/svg/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/exit-fullscreen.svg b/web-admin/src/assets/svg/exit-fullscreen.svg new file mode 100644 index 00000000..7ff3e827 --- /dev/null +++ b/web-admin/src/assets/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/exit-fullscreen1.svg b/web-admin/src/assets/svg/exit-fullscreen1.svg new file mode 100644 index 00000000..485c128b --- /dev/null +++ b/web-admin/src/assets/svg/exit-fullscreen1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/experience.svg b/web-admin/src/assets/svg/experience.svg new file mode 100644 index 00000000..9e75ce13 --- /dev/null +++ b/web-admin/src/assets/svg/experience.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/web-admin/src/assets/svg/eye-open.svg b/web-admin/src/assets/svg/eye-open.svg new file mode 100644 index 00000000..88dcc98e --- /dev/null +++ b/web-admin/src/assets/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/eye.svg b/web-admin/src/assets/svg/eye.svg new file mode 100644 index 00000000..16ed2d87 --- /dev/null +++ b/web-admin/src/assets/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/finish.svg b/web-admin/src/assets/svg/finish.svg new file mode 100644 index 00000000..4685c232 --- /dev/null +++ b/web-admin/src/assets/svg/finish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/form.svg b/web-admin/src/assets/svg/form.svg new file mode 100644 index 00000000..dcbaa185 --- /dev/null +++ b/web-admin/src/assets/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/fullscreen copy.svg b/web-admin/src/assets/svg/fullscreen copy.svg new file mode 100644 index 00000000..c573e08c --- /dev/null +++ b/web-admin/src/assets/svg/fullscreen copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/fullscreen.svg b/web-admin/src/assets/svg/fullscreen.svg new file mode 100644 index 00000000..e57a876a --- /dev/null +++ b/web-admin/src/assets/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/fullscreen1.svg b/web-admin/src/assets/svg/fullscreen1.svg new file mode 100644 index 00000000..0e86b6fa --- /dev/null +++ b/web-admin/src/assets/svg/fullscreen1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/fullscreen2.svg b/web-admin/src/assets/svg/fullscreen2.svg new file mode 100644 index 00000000..0665abf0 --- /dev/null +++ b/web-admin/src/assets/svg/fullscreen2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/gitee.svg b/web-admin/src/assets/svg/gitee.svg new file mode 100644 index 00000000..6324608b --- /dev/null +++ b/web-admin/src/assets/svg/gitee.svg @@ -0,0 +1 @@ + diff --git a/web-admin/src/assets/svg/github.svg b/web-admin/src/assets/svg/github.svg new file mode 100644 index 00000000..db0a0d43 --- /dev/null +++ b/web-admin/src/assets/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/guide.svg b/web-admin/src/assets/svg/guide.svg new file mode 100644 index 00000000..b2710017 --- /dev/null +++ b/web-admin/src/assets/svg/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/icon.svg b/web-admin/src/assets/svg/icon.svg new file mode 100644 index 00000000..82be8eee --- /dev/null +++ b/web-admin/src/assets/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/input.svg b/web-admin/src/assets/svg/input.svg new file mode 100644 index 00000000..ab91381e --- /dev/null +++ b/web-admin/src/assets/svg/input.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/international.svg b/web-admin/src/assets/svg/international.svg new file mode 100644 index 00000000..e9b56eee --- /dev/null +++ b/web-admin/src/assets/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/job.svg b/web-admin/src/assets/svg/job.svg new file mode 100644 index 00000000..2a93a251 --- /dev/null +++ b/web-admin/src/assets/svg/job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/language.svg b/web-admin/src/assets/svg/language.svg new file mode 100644 index 00000000..0082b577 --- /dev/null +++ b/web-admin/src/assets/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/link.svg b/web-admin/src/assets/svg/link.svg new file mode 100644 index 00000000..48197ba4 --- /dev/null +++ b/web-admin/src/assets/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/list.svg b/web-admin/src/assets/svg/list.svg new file mode 100644 index 00000000..20259edd --- /dev/null +++ b/web-admin/src/assets/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/loading.ts b/web-admin/src/assets/svg/loading.ts new file mode 100644 index 00000000..fdfb0780 --- /dev/null +++ b/web-admin/src/assets/svg/loading.ts @@ -0,0 +1,32 @@ +// 自定义四点旋转SVG +export const fourDotsSpinnerSvg = ` + + + + + + + + + +` diff --git a/web-admin/src/assets/svg/lock.svg b/web-admin/src/assets/svg/lock.svg new file mode 100644 index 00000000..74fee543 --- /dev/null +++ b/web-admin/src/assets/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/log.svg b/web-admin/src/assets/svg/log.svg new file mode 100644 index 00000000..d879d33b --- /dev/null +++ b/web-admin/src/assets/svg/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/logininfor.svg b/web-admin/src/assets/svg/logininfor.svg new file mode 100644 index 00000000..267f8447 --- /dev/null +++ b/web-admin/src/assets/svg/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/maxkey.svg b/web-admin/src/assets/svg/maxkey.svg new file mode 100644 index 00000000..f8f8a7d8 --- /dev/null +++ b/web-admin/src/assets/svg/maxkey.svg @@ -0,0 +1,3 @@ + + + diff --git a/web-admin/src/assets/svg/message.svg b/web-admin/src/assets/svg/message.svg new file mode 100644 index 00000000..405934db --- /dev/null +++ b/web-admin/src/assets/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/message1.svg b/web-admin/src/assets/svg/message1.svg new file mode 100644 index 00000000..14ca8172 --- /dev/null +++ b/web-admin/src/assets/svg/message1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/model.svg b/web-admin/src/assets/svg/model.svg new file mode 100644 index 00000000..0c57d706 --- /dev/null +++ b/web-admin/src/assets/svg/model.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/money.svg b/web-admin/src/assets/svg/money.svg new file mode 100644 index 00000000..c1580de1 --- /dev/null +++ b/web-admin/src/assets/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/monitor.svg b/web-admin/src/assets/svg/monitor.svg new file mode 100644 index 00000000..bc308cb0 --- /dev/null +++ b/web-admin/src/assets/svg/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/my-copy.svg b/web-admin/src/assets/svg/my-copy.svg new file mode 100644 index 00000000..49f69fa0 --- /dev/null +++ b/web-admin/src/assets/svg/my-copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/my-task.svg b/web-admin/src/assets/svg/my-task.svg new file mode 100644 index 00000000..1f1ea447 --- /dev/null +++ b/web-admin/src/assets/svg/my-task.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/nested.svg b/web-admin/src/assets/svg/nested.svg new file mode 100644 index 00000000..06713a86 --- /dev/null +++ b/web-admin/src/assets/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/number.svg b/web-admin/src/assets/svg/number.svg new file mode 100644 index 00000000..ad5ce9af --- /dev/null +++ b/web-admin/src/assets/svg/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/online.svg b/web-admin/src/assets/svg/online.svg new file mode 100644 index 00000000..330a2029 --- /dev/null +++ b/web-admin/src/assets/svg/online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/password.svg b/web-admin/src/assets/svg/password.svg new file mode 100644 index 00000000..6c64defe --- /dev/null +++ b/web-admin/src/assets/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/pdf.svg b/web-admin/src/assets/svg/pdf.svg new file mode 100644 index 00000000..957aa0cc --- /dev/null +++ b/web-admin/src/assets/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/people.svg b/web-admin/src/assets/svg/people.svg new file mode 100644 index 00000000..2bd54aeb --- /dev/null +++ b/web-admin/src/assets/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/peoples.svg b/web-admin/src/assets/svg/peoples.svg new file mode 100644 index 00000000..aab852e5 --- /dev/null +++ b/web-admin/src/assets/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/phone.svg b/web-admin/src/assets/svg/phone.svg new file mode 100644 index 00000000..ab8e8c4e --- /dev/null +++ b/web-admin/src/assets/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/post.svg b/web-admin/src/assets/svg/post.svg new file mode 100644 index 00000000..2922c613 --- /dev/null +++ b/web-admin/src/assets/svg/post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/process-definition.svg b/web-admin/src/assets/svg/process-definition.svg new file mode 100644 index 00000000..202d2003 --- /dev/null +++ b/web-admin/src/assets/svg/process-definition.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/qq.svg b/web-admin/src/assets/svg/qq.svg new file mode 100644 index 00000000..ee13d4ec --- /dev/null +++ b/web-admin/src/assets/svg/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/question.svg b/web-admin/src/assets/svg/question.svg new file mode 100644 index 00000000..cf75bd4b --- /dev/null +++ b/web-admin/src/assets/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/radio.svg b/web-admin/src/assets/svg/radio.svg new file mode 100644 index 00000000..0cde3452 --- /dev/null +++ b/web-admin/src/assets/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/rate.svg b/web-admin/src/assets/svg/rate.svg new file mode 100644 index 00000000..aa3b14d7 --- /dev/null +++ b/web-admin/src/assets/svg/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/redis-list.svg b/web-admin/src/assets/svg/redis-list.svg new file mode 100644 index 00000000..98a15b2a --- /dev/null +++ b/web-admin/src/assets/svg/redis-list.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/redis.svg b/web-admin/src/assets/svg/redis.svg new file mode 100644 index 00000000..2f1d62df --- /dev/null +++ b/web-admin/src/assets/svg/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/row.svg b/web-admin/src/assets/svg/row.svg new file mode 100644 index 00000000..07809922 --- /dev/null +++ b/web-admin/src/assets/svg/row.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/search-1.svg b/web-admin/src/assets/svg/search-1.svg new file mode 100644 index 00000000..84233dda --- /dev/null +++ b/web-admin/src/assets/svg/search-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/search.svg b/web-admin/src/assets/svg/search.svg new file mode 100644 index 00000000..66540655 --- /dev/null +++ b/web-admin/src/assets/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/select.svg b/web-admin/src/assets/svg/select.svg new file mode 100644 index 00000000..d6283828 --- /dev/null +++ b/web-admin/src/assets/svg/select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/server.svg b/web-admin/src/assets/svg/server.svg new file mode 100644 index 00000000..eb287e36 --- /dev/null +++ b/web-admin/src/assets/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/shopping.svg b/web-admin/src/assets/svg/shopping.svg new file mode 100644 index 00000000..87513e7c --- /dev/null +++ b/web-admin/src/assets/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/size.svg b/web-admin/src/assets/svg/size.svg new file mode 100644 index 00000000..ddb25b8d --- /dev/null +++ b/web-admin/src/assets/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/skill.svg b/web-admin/src/assets/svg/skill.svg new file mode 100644 index 00000000..a3b73121 --- /dev/null +++ b/web-admin/src/assets/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/slider.svg b/web-admin/src/assets/svg/slider.svg new file mode 100644 index 00000000..fbe4f39f --- /dev/null +++ b/web-admin/src/assets/svg/slider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/star.svg b/web-admin/src/assets/svg/star.svg new file mode 100644 index 00000000..6cf86e66 --- /dev/null +++ b/web-admin/src/assets/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/swagger.svg b/web-admin/src/assets/svg/swagger.svg new file mode 100644 index 00000000..05d4e7bc --- /dev/null +++ b/web-admin/src/assets/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/switch.svg b/web-admin/src/assets/svg/switch.svg new file mode 100644 index 00000000..0ba61e38 --- /dev/null +++ b/web-admin/src/assets/svg/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/system.svg b/web-admin/src/assets/svg/system.svg new file mode 100644 index 00000000..5992593e --- /dev/null +++ b/web-admin/src/assets/svg/system.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/tab.svg b/web-admin/src/assets/svg/tab.svg new file mode 100644 index 00000000..b4b48e48 --- /dev/null +++ b/web-admin/src/assets/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/table.svg b/web-admin/src/assets/svg/table.svg new file mode 100644 index 00000000..0e3dc9de --- /dev/null +++ b/web-admin/src/assets/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/textarea.svg b/web-admin/src/assets/svg/textarea.svg new file mode 100644 index 00000000..2709f292 --- /dev/null +++ b/web-admin/src/assets/svg/textarea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/theme.svg b/web-admin/src/assets/svg/theme.svg new file mode 100644 index 00000000..5982a2f7 --- /dev/null +++ b/web-admin/src/assets/svg/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/time-range.svg b/web-admin/src/assets/svg/time-range.svg new file mode 100644 index 00000000..13c1202b --- /dev/null +++ b/web-admin/src/assets/svg/time-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/time.svg b/web-admin/src/assets/svg/time.svg new file mode 100644 index 00000000..b376e32a --- /dev/null +++ b/web-admin/src/assets/svg/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/tool.svg b/web-admin/src/assets/svg/tool.svg new file mode 100644 index 00000000..48e0e357 --- /dev/null +++ b/web-admin/src/assets/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/topiam.svg b/web-admin/src/assets/svg/topiam.svg new file mode 100644 index 00000000..e7ea0577 --- /dev/null +++ b/web-admin/src/assets/svg/topiam.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web-admin/src/assets/svg/tree-table.svg b/web-admin/src/assets/svg/tree-table.svg new file mode 100644 index 00000000..8aafdb82 --- /dev/null +++ b/web-admin/src/assets/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/tree.svg b/web-admin/src/assets/svg/tree.svg new file mode 100644 index 00000000..dd4b7dd2 --- /dev/null +++ b/web-admin/src/assets/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/upload.svg b/web-admin/src/assets/svg/upload.svg new file mode 100644 index 00000000..bae49c0a --- /dev/null +++ b/web-admin/src/assets/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/user.svg b/web-admin/src/assets/svg/user.svg new file mode 100644 index 00000000..0ba0716a --- /dev/null +++ b/web-admin/src/assets/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/validCode.svg b/web-admin/src/assets/svg/validCode.svg new file mode 100644 index 00000000..cfb10214 --- /dev/null +++ b/web-admin/src/assets/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/waiting.svg b/web-admin/src/assets/svg/waiting.svg new file mode 100644 index 00000000..2c2042d6 --- /dev/null +++ b/web-admin/src/assets/svg/waiting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/wechat.svg b/web-admin/src/assets/svg/wechat.svg new file mode 100644 index 00000000..c586e551 --- /dev/null +++ b/web-admin/src/assets/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/workflow.svg b/web-admin/src/assets/svg/workflow.svg new file mode 100644 index 00000000..2f7423a5 --- /dev/null +++ b/web-admin/src/assets/svg/workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/assets/svg/zip.svg b/web-admin/src/assets/svg/zip.svg new file mode 100644 index 00000000..f806fc48 --- /dev/null +++ b/web-admin/src/assets/svg/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web-admin/src/components/core/banners/art-basic-banner/index.vue b/web-admin/src/components/core/banners/art-basic-banner/index.vue new file mode 100644 index 00000000..65b47e41 --- /dev/null +++ b/web-admin/src/components/core/banners/art-basic-banner/index.vue @@ -0,0 +1,343 @@ + + + + + + diff --git a/web-admin/src/components/core/banners/art-card-banner/index.vue b/web-admin/src/components/core/banners/art-card-banner/index.vue new file mode 100644 index 00000000..8a5f9d41 --- /dev/null +++ b/web-admin/src/components/core/banners/art-card-banner/index.vue @@ -0,0 +1,114 @@ + + + + diff --git a/web-admin/src/components/core/base/art-back-to-top/index.vue b/web-admin/src/components/core/base/art-back-to-top/index.vue new file mode 100644 index 00000000..6f8da619 --- /dev/null +++ b/web-admin/src/components/core/base/art-back-to-top/index.vue @@ -0,0 +1,40 @@ + + + + diff --git a/web-admin/src/components/core/base/art-logo/index.vue b/web-admin/src/components/core/base/art-logo/index.vue new file mode 100644 index 00000000..0e73f598 --- /dev/null +++ b/web-admin/src/components/core/base/art-logo/index.vue @@ -0,0 +1,29 @@ + + + + diff --git a/web-admin/src/components/core/base/art-svg-icon/index.vue b/web-admin/src/components/core/base/art-svg-icon/index.vue new file mode 100644 index 00000000..0bfcd0c0 --- /dev/null +++ b/web-admin/src/components/core/base/art-svg-icon/index.vue @@ -0,0 +1,24 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-bar-chart-card/index.vue b/web-admin/src/components/core/cards/art-bar-chart-card/index.vue new file mode 100644 index 00000000..6815c2b6 --- /dev/null +++ b/web-admin/src/components/core/cards/art-bar-chart-card/index.vue @@ -0,0 +1,103 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-data-list-card/index.vue b/web-admin/src/components/core/cards/art-data-list-card/index.vue new file mode 100644 index 00000000..fc433238 --- /dev/null +++ b/web-admin/src/components/core/cards/art-data-list-card/index.vue @@ -0,0 +1,74 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-donut-chart-card/index.vue b/web-admin/src/components/core/cards/art-donut-chart-card/index.vue new file mode 100644 index 00000000..df2dcbbd --- /dev/null +++ b/web-admin/src/components/core/cards/art-donut-chart-card/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-image-card/index.vue b/web-admin/src/components/core/cards/art-image-card/index.vue new file mode 100644 index 00000000..d27fe009 --- /dev/null +++ b/web-admin/src/components/core/cards/art-image-card/index.vue @@ -0,0 +1,89 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-line-chart-card/index.vue b/web-admin/src/components/core/cards/art-line-chart-card/index.vue new file mode 100644 index 00000000..e58c9b28 --- /dev/null +++ b/web-admin/src/components/core/cards/art-line-chart-card/index.vue @@ -0,0 +1,126 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-progress-card/index.vue b/web-admin/src/components/core/cards/art-progress-card/index.vue new file mode 100644 index 00000000..048a8366 --- /dev/null +++ b/web-admin/src/components/core/cards/art-progress-card/index.vue @@ -0,0 +1,86 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-stats-card/index.vue b/web-admin/src/components/core/cards/art-stats-card/index.vue new file mode 100644 index 00000000..8e0341bc --- /dev/null +++ b/web-admin/src/components/core/cards/art-stats-card/index.vue @@ -0,0 +1,67 @@ + + + + diff --git a/web-admin/src/components/core/cards/art-timeline-list-card/index.vue b/web-admin/src/components/core/cards/art-timeline-list-card/index.vue new file mode 100644 index 00000000..fbb2c78c --- /dev/null +++ b/web-admin/src/components/core/cards/art-timeline-list-card/index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-bar-chart/index.vue b/web-admin/src/components/core/charts/art-bar-chart/index.vue new file mode 100644 index 00000000..d677196c --- /dev/null +++ b/web-admin/src/components/core/charts/art-bar-chart/index.vue @@ -0,0 +1,203 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue b/web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue new file mode 100644 index 00000000..32aa60f6 --- /dev/null +++ b/web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue @@ -0,0 +1,195 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-h-bar-chart/index.vue b/web-admin/src/components/core/charts/art-h-bar-chart/index.vue new file mode 100644 index 00000000..2e347596 --- /dev/null +++ b/web-admin/src/components/core/charts/art-h-bar-chart/index.vue @@ -0,0 +1,208 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-k-line-chart/index.vue b/web-admin/src/components/core/charts/art-k-line-chart/index.vue new file mode 100644 index 00000000..0061b51c --- /dev/null +++ b/web-admin/src/components/core/charts/art-k-line-chart/index.vue @@ -0,0 +1,152 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-line-chart/index.vue b/web-admin/src/components/core/charts/art-line-chart/index.vue new file mode 100644 index 00000000..b70c2c3e --- /dev/null +++ b/web-admin/src/components/core/charts/art-line-chart/index.vue @@ -0,0 +1,371 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-map-chart/index.vue b/web-admin/src/components/core/charts/art-map-chart/index.vue new file mode 100644 index 00000000..0f689c94 --- /dev/null +++ b/web-admin/src/components/core/charts/art-map-chart/index.vue @@ -0,0 +1,330 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-radar-chart/index.vue b/web-admin/src/components/core/charts/art-radar-chart/index.vue new file mode 100644 index 00000000..e99fff64 --- /dev/null +++ b/web-admin/src/components/core/charts/art-radar-chart/index.vue @@ -0,0 +1,105 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-ring-chart/index.vue b/web-admin/src/components/core/charts/art-ring-chart/index.vue new file mode 100644 index 00000000..79115f70 --- /dev/null +++ b/web-admin/src/components/core/charts/art-ring-chart/index.vue @@ -0,0 +1,133 @@ + + + + diff --git a/web-admin/src/components/core/charts/art-scatter-chart/index.vue b/web-admin/src/components/core/charts/art-scatter-chart/index.vue new file mode 100644 index 00000000..995b56a1 --- /dev/null +++ b/web-admin/src/components/core/charts/art-scatter-chart/index.vue @@ -0,0 +1,115 @@ + + + + diff --git a/web-admin/src/components/core/forms/art-button-more/index.vue b/web-admin/src/components/core/forms/art-button-more/index.vue new file mode 100644 index 00000000..858d3059 --- /dev/null +++ b/web-admin/src/components/core/forms/art-button-more/index.vue @@ -0,0 +1,71 @@ + + + + diff --git a/web-admin/src/components/core/forms/art-button-table/index.vue b/web-admin/src/components/core/forms/art-button-table/index.vue new file mode 100644 index 00000000..c849901d --- /dev/null +++ b/web-admin/src/components/core/forms/art-button-table/index.vue @@ -0,0 +1,59 @@ + + + + diff --git a/web-admin/src/components/core/forms/art-drag-verify/index.vue b/web-admin/src/components/core/forms/art-drag-verify/index.vue new file mode 100644 index 00000000..5306e04e --- /dev/null +++ b/web-admin/src/components/core/forms/art-drag-verify/index.vue @@ -0,0 +1,430 @@ + + + + + + + + diff --git a/web-admin/src/components/core/forms/art-excel-export/index.vue b/web-admin/src/components/core/forms/art-excel-export/index.vue new file mode 100644 index 00000000..7cc5dabf --- /dev/null +++ b/web-admin/src/components/core/forms/art-excel-export/index.vue @@ -0,0 +1,404 @@ + + + + + + diff --git a/web-admin/src/components/core/forms/art-excel-import/index.vue b/web-admin/src/components/core/forms/art-excel-import/index.vue new file mode 100644 index 00000000..b0b026b0 --- /dev/null +++ b/web-admin/src/components/core/forms/art-excel-import/index.vue @@ -0,0 +1,62 @@ + + + + diff --git a/web-admin/src/components/core/forms/art-form/index.vue b/web-admin/src/components/core/forms/art-form/index.vue new file mode 100644 index 00000000..561e878a --- /dev/null +++ b/web-admin/src/components/core/forms/art-form/index.vue @@ -0,0 +1,507 @@ + + + + + + diff --git a/web-admin/src/components/core/forms/art-search-bar/index.vue b/web-admin/src/components/core/forms/art-search-bar/index.vue new file mode 100644 index 00000000..6786dcaa --- /dev/null +++ b/web-admin/src/components/core/forms/art-search-bar/index.vue @@ -0,0 +1,581 @@ + + + + + + + + diff --git a/web-admin/src/components/core/forms/art-wang-editor/index.vue b/web-admin/src/components/core/forms/art-wang-editor/index.vue new file mode 100644 index 00000000..22e13c6e --- /dev/null +++ b/web-admin/src/components/core/forms/art-wang-editor/index.vue @@ -0,0 +1,258 @@ + + + + + + diff --git a/web-admin/src/components/core/forms/art-wang-editor/style.scss b/web-admin/src/components/core/forms/art-wang-editor/style.scss new file mode 100644 index 00000000..da1f42ce --- /dev/null +++ b/web-admin/src/components/core/forms/art-wang-editor/style.scss @@ -0,0 +1,300 @@ +$box-radius: calc(var(--custom-radius) / 3 + 2px); + +// 全屏容器 z-index 调整 +.w-e-full-screen-container { + z-index: 100 !important; +} + +/* 编辑器容器 */ +.editor-wrapper { + width: 100%; + height: v-bind('props.height'); + border: 1px solid var(--art-gray-300); + border-radius: $box-radius !important; + display: flex; + flex-direction: column; + + .w-e-bar { + border-radius: $box-radius $box-radius 0 0 !important; + flex-shrink: 0; + } + + .editor-content-wrapper { + flex: 1; + overflow: hidden; + display: flex; + flex-direction: column; + } + + .menu-item { + display: flex; + flex-direction: row; + align-items: center; + + i { + margin-right: 5px; + } + } + + /* 工具栏 */ + .editor-toolbar { + border-bottom: 1px solid var(--default-border); + } + + /* 下拉选择框配置 */ + .w-e-select-list { + min-width: 140px; + padding: 5px 10px 10px; + border: none; + border-radius: $box-radius; + } + + /* 下拉选择框元素配置 */ + .w-e-select-list ul li { + margin-top: 5px; + font-size: 15px !important; + border-radius: $box-radius; + } + + /* 下拉选择框 正文文字大小调整 */ + .w-e-select-list ul li:last-of-type { + font-size: 16px !important; + } + + /* 下拉选择框 hover 样式调整 */ + .w-e-select-list ul li:hover { + background-color: var(--art-gray-200); + } + + :root { + /* 激活颜色 */ + --w-e-toolbar-active-bg-color: var(--art-gray-200); + + /* toolbar 图标和文字颜色 */ + --w-e-toolbar-color: #000; + + /* 表格选中时候的边框颜色 */ + --w-e-textarea-selected-border-color: #ddd; + + /* 表格头背景颜色 */ + --w-e-textarea-slight-bg-color: var(--art-gray-200); + } + + /* 工具栏按钮样式 */ + .w-e-bar-item svg { + fill: var(--art-gray-800); + } + + .w-e-bar-item button { + color: var(--art-gray-800); + border-radius: $box-radius; + } + + /* 工具栏 hover 按钮背景颜色 */ + .w-e-bar-item button:hover { + background-color: var(--art-gray-200); + } + + /* 工具栏分割线 */ + .w-e-bar-divider { + height: 20px; + margin-top: 10px; + background-color: #ccc; + } + + /* 工具栏菜单 */ + .w-e-bar-item-group .w-e-bar-item-menus-container { + min-width: 120px; + padding: 10px 0; + border: none; + border-radius: $box-radius; + + .w-e-bar-item { + button { + width: 100%; + margin: 0 5px; + } + } + } + + /* 代码块 */ + .w-e-text-container [data-slate-editor] pre > code { + padding: 0.6rem 1rem; + background-color: var(--art-gray-50); + border-radius: $box-radius; + } + + /* 弹出框 */ + .w-e-drop-panel { + border: 0; + border-radius: $box-radius; + } + + a { + color: #318ef4; + } + + .w-e-text-container { + [data-slate-editor] { + h1, + h2, + h3, + h4, + h5, + h6 { + margin: 0.8em 0 0.4em; + font-weight: 700; + line-height: 1.35; + } + + h1 { + font-size: 2em; + } + + h2 { + font-size: 1.5em; + } + + h3 { + font-size: 1.25em; + } + + h4 { + font-size: 1.125em; + } + + h5 { + font-size: 1em; + } + + h6 { + font-size: 0.875em; + } + + ul, + ol { + padding-left: 1.5em; + margin: 0.8em 0; + } + + ul { + list-style: disc; + } + + ol { + list-style: decimal; + } + + li { + margin: 0.25em 0; + } + + ul ul { + list-style: circle; + } + + ul ul ul { + list-style: square; + } + } + + strong, + b { + font-weight: 700; + } + + i, + em { + font-style: italic; + } + } + + /* 内容编辑区域 - 固定高度并支持滚动 */ + .w-e-text-container { + flex: 1; + overflow-y: auto !important; + + [data-slate-editor] { + min-height: 100%; + } + } + + /* 强制编辑区域可滚动 */ + .w-e-panel-container { + .w-e-text-area { + overflow-y: auto !important; + } + } + + /* 表格样式优化 */ + .w-e-text-container [data-slate-editor] .table-container th { + border-right: none; + } + + .w-e-text-container [data-slate-editor] .table-container th:last-of-type { + border-right: 1px solid #ccc !important; + } + + /* 引用 */ + .w-e-text-container [data-slate-editor] blockquote { + background-color: var(--art-gray-200); + border-left: 4px solid var(--art-gray-300); + } + + /* 输入区域弹出 bar */ + .w-e-hover-bar { + border-radius: $box-radius; + } + + /* 超链接弹窗 */ + .w-e-modal { + border: none; + border-radius: $box-radius; + } + + /* 图片样式调整 */ + .w-e-text-container [data-slate-editor] .w-e-selected-image-container { + overflow: inherit; + + &:hover { + border: 0; + } + + img { + border: 1px solid transparent; + transition: border 0.3s; + + &:hover { + border: 1px solid #318ef4 !important; + } + } + + .w-e-image-dragger { + width: 12px; + height: 12px; + background-color: #318ef4; + border: 2px solid #fff; + border-radius: $box-radius; + } + + .left-top { + top: -6px; + left: -6px; + } + + .right-top { + top: -6px; + right: -6px; + } + + .left-bottom { + bottom: -6px; + left: -6px; + } + + .right-bottom { + right: -6px; + bottom: -6px; + } + } +} diff --git a/web-admin/src/components/core/layouts/art-breadcrumb/index.vue b/web-admin/src/components/core/layouts/art-breadcrumb/index.vue new file mode 100755 index 00000000..4b548598 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-breadcrumb/index.vue @@ -0,0 +1,142 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-chat-window/index.vue b/web-admin/src/components/core/layouts/art-chat-window/index.vue new file mode 100644 index 00000000..f3d94717 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-chat-window/index.vue @@ -0,0 +1,262 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-fast-enter/index.vue b/web-admin/src/components/core/layouts/art-fast-enter/index.vue new file mode 100644 index 00000000..fdde2223 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-fast-enter/index.vue @@ -0,0 +1,113 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue b/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue new file mode 100644 index 00000000..be852744 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue @@ -0,0 +1,633 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-global-component/index.vue b/web-admin/src/components/core/layouts/art-global-component/index.vue new file mode 100644 index 00000000..6908f94f --- /dev/null +++ b/web-admin/src/components/core/layouts/art-global-component/index.vue @@ -0,0 +1,14 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-global-search/index.vue b/web-admin/src/components/core/layouts/art-global-search/index.vue new file mode 100644 index 00000000..f2c0b88c --- /dev/null +++ b/web-admin/src/components/core/layouts/art-global-search/index.vue @@ -0,0 +1,431 @@ + + + + + + + diff --git a/web-admin/src/components/core/layouts/art-header-bar/index.vue b/web-admin/src/components/core/layouts/art-header-bar/index.vue new file mode 100644 index 00000000..79c59838 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-header-bar/index.vue @@ -0,0 +1,425 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue b/web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue new file mode 100644 index 00000000..d8597954 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue @@ -0,0 +1,163 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue b/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue new file mode 100644 index 00000000..edd14731 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue @@ -0,0 +1,110 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue b/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue new file mode 100644 index 00000000..0f3a8177 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue b/web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue new file mode 100644 index 00000000..4e98246e --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue @@ -0,0 +1,279 @@ + + + + + + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue new file mode 100644 index 00000000..72a609e8 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue @@ -0,0 +1,454 @@ + + + + + + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss new file mode 100755 index 00000000..5ef5ad4a --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss @@ -0,0 +1,284 @@ +.layout-sidebar { + display: flex; + height: 100vh; + user-select: none; + scrollbar-width: none; + border-right: none; + background: var(--mint-surface, #fff); + + &.no-border { + border-right: none !important; + } + + // 自定义滚动条宽度 + :deep(.el-scrollbar__bar.is-vertical) { + width: 4px; + } + + :deep(.el-scrollbar__thumb) { + right: -2px; + background-color: #ccc; + border-radius: 2px; + } + + .dual-menu-left { + position: relative; + width: 80px; + height: 100%; + border-right: 1px solid var(--art-card-border) !important; + transition: width 0.25s; + + .logo { + margin: auto; + margin-top: 12px; + margin-bottom: 3px; + cursor: pointer; + } + + ul { + li { + > div { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin: 8px; + overflow: hidden; + text-align: center; + cursor: pointer; + border-radius: 5px; + + .art-svg-icon { + display: block; + margin: 0 auto; + font-size: 20px; + } + + span { + display: -webkit-box; + width: 100%; + overflow: hidden; + font-size: 12px; + text-overflow: ellipsis; + -webkit-line-clamp: 1; + line-clamp: 1; + -webkit-box-orient: vertical; + } + + &.is-active { + background: var(--el-color-primary-light-9); + + .art-svg-icon, + span { + color: var(--theme-color) !important; + } + } + } + } + } + + .switch-btn { + position: absolute; + right: 0; + bottom: 15px; + left: 0; + margin: auto; + } + } + + .menu-left { + position: relative; + box-sizing: border-box; + height: 100vh; + background: var(--mint-surface, #fff); + + @media only screen and (width <= 640px) { + height: 100dvh; + } + + .el-menu { + height: 100%; + } + + &:hover { + .dual-menu-collapse-btn { + opacity: 1 !important; + } + } + + .dual-menu-collapse-btn { + position: absolute; + top: 50%; + right: -11px; + z-index: 10; + width: 11px; + height: 50px; + cursor: pointer; + background-color: var(--default-box-color); + border: 1px solid var(--art-card-border); + border-radius: 0 15px 15px 0; + opacity: 0; + transition: opacity 0.2s; + transform: translateY(-50%); + + &:hover { + .art-svg-icon { + color: var(--art-gray-800) !important; + } + } + + .art-svg-icon { + position: absolute; + top: 0; + bottom: 0; + left: -4px; + margin: auto; + transition: all 0.3s; + } + } + } + + .header { + position: relative; + box-sizing: border-box; + display: flex; + align-items: center; + width: 100%; + height: 64px; + overflow: hidden; + line-height: 64px; + cursor: pointer; + position: relative; + background: linear-gradient(135deg, #10b981 0%, #34d399 100%); + border-bottom: none !important; + + .logo { + margin-left: 18px; + } + + p { + position: absolute; + top: 0; + bottom: 0; + left: 58px; + box-sizing: border-box; + margin-left: 10px; + font-size: 16px; + font-weight: 700; + color: #111827 !important; + + &.is-dual-menu-name { + left: 25px; + margin: auto; + } + + .system-name-main { + color: #111827; + } + + .system-name-accent { + color: #059669; + } + } + + &::after { + position: absolute; + right: 16px; + bottom: 0; + left: 16px; + height: 1px; + content: ''; + background: rgba(15, 23, 42, 0.18); + } + } + + // 覆盖全局 header 规则,避免出现第二条分割线 + .menu-left > .header { + border-bottom: none !important; + box-shadow: none !important; + } + + .el-menu { + box-sizing: border-box; + // 防止菜单内的滚动影响整个页面滚动 + overscroll-behavior: contain; + border-right: 0; + scrollbar-width: none; + -ms-scroll-chaining: contain; + padding: 12px 8px; + background: transparent; + + &::-webkit-scrollbar { + width: 0 !important; + } + } + + .menu-model { + display: none; + } +} + +@media only screen and (width <= 800px) { + .layout-sidebar { + width: 0; + + .header { + height: 50px; + line-height: 50px; + } + + .el-menu { + height: calc(100vh - 60px); + } + + .el-menu--collapse { + width: 0; + } + + // 折叠状态下的header样式 + .menu-left-close .header { + .logo { + display: none; + } + + p { + left: 16px; + font-size: 0; + opacity: 0 !important; + } + } + + .menu-model { + position: fixed; + top: 0; + left: 0; + z-index: -1; + display: block; + width: 100%; + height: 100vh; + background: rgba($color: #000, $alpha: 50%); + transition: opacity 0.2s ease-in-out; + } + } +} + +@media only screen and (width <= 640px) { + .layout-sidebar { + border-right: 0 !important; + } +} + +.dark { + .layout-sidebar { + border-right: 1px solid rgb(255 255 255 / 13%); + + :deep(.el-scrollbar__thumb) { + background-color: #777; + } + + .dual-menu-left { + border-right: 1px solid rgb(255 255 255 / 9%) !important; + } + } +} diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss new file mode 100644 index 00000000..5dafa724 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss @@ -0,0 +1,291 @@ +@use '@styles/core/mixin.scss' as *; + +// 菜单样式变量 +$menu-height: 40px; +$menu-icon-size: 20px; +$menu-font-size: 13px; +$hover-bg-color: var(--mint-row-alt, #f8fafc); +$popup-menu-height: 40px; +$popup-menu-padding: 8px; +$popup-menu-margin: 5px; +$popup-menu-radius: 6px; + +// 通用菜单项样式 +@mixin menu-item-base { + width: calc(100% - 12px); + margin-left: 6px; + border-radius: 8px; + + .menu-icon { + margin-left: -7px; + } +} + +// 通用 hover 样式 +@mixin menu-hover($bg-color) { + .el-sub-menu__title:hover, + .el-menu-item:not(.is-active):hover { + background: $bg-color !important; + } +} + +// 通用选中样式 +@mixin menu-active($color, $bg-color, $icon-color: var(--theme-color)) { + .el-menu-item.is-active { + color: $color !important; + background-color: $bg-color; + font-weight: 600; + + .menu-icon { + .art-svg-icon { + color: $icon-color !important; + } + } + } +} + +// 弹窗菜单项样式 +@mixin popup-menu-item { + height: $popup-menu-height; + margin-bottom: $popup-menu-margin; + border-radius: $popup-menu-radius; + + .menu-icon { + margin-right: 5px; + } + + &:last-of-type { + margin-bottom: 0; + } +} + +// 主题菜单通用样式(合并 design 和 dark 主题的共同逻辑) +@mixin theme-menu-base { + .el-sub-menu__title, + .el-menu-item { + @include menu-item-base; + } +} + +// 弹窗菜单通用样式 +@mixin popup-menu-base($hover-bg, $active-color, $active-bg) { + .el-menu--popup { + padding: $popup-menu-padding; + + .el-sub-menu__title:hover, + .el-menu-item:hover { + background-color: $hover-bg !important; + border-radius: $popup-menu-radius; + } + + .el-menu-item { + @include popup-menu-item; + + &.is-active { + color: $active-color !important; + background-color: $active-bg !important; + } + } + + .el-sub-menu { + @include popup-menu-item; + + height: $popup-menu-height !important; + + .el-sub-menu__title { + height: $popup-menu-height !important; + border-radius: $popup-menu-radius; + } + } + } +} + +.layout-sidebar { + // ---------------------- Modify default style ---------------------- + + // 菜单折叠样式 + .menu-left-close { + .header { + .logo { + margin: 0 auto; + } + } + } + + // 菜单图标 + .menu-icon { + margin-right: 8px; + font-size: $menu-icon-size; + } + + // 菜单高度 + .el-sub-menu__title, + .el-menu-item { + height: $menu-height !important; + margin-bottom: 2px; + line-height: $menu-height !important; + + span { + font-size: $menu-font-size !important; + font-weight: 500; + // Fresh Mint:默认菜单项为中性色(demo `.nav a`) + color: var(--mint-text-muted, #64748b); + text-rendering: geometricprecision; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + @include ellipsis(); + } + } + + .el-sub-menu > .el-sub-menu__title { + font-size: 12px !important; + font-weight: 700; + color: var(--mint-text-muted, #64748b) !important; + letter-spacing: 0.02em; + } + + // 右侧箭头 + .el-sub-menu__icon-arrow { + width: 13px !important; + font-size: 13px !important; + } + + // 子菜单区域左侧绿色竖线(对齐 fresh-mint 导航层级感) + .el-sub-menu .el-menu { + margin: 2px 0 6px 10px; + padding: 2px 0 2px 8px !important; + border-left: 2px solid var(--mint-border, #d9e8e2); + } + + // 菜单折叠 + .el-menu--collapse { + .el-sub-menu.is-active { + .el-sub-menu__title { + .menu-icon { + .art-svg-icon { + // 选中菜单图标颜色 + color: var(--theme-color) !important; + } + } + } + } + } + + // ---------------------- Design theme menu ---------------------- + .el-menu-design { + @include theme-menu-base; + @include menu-active( + var(--mint-primary-dark, #059669), + var(--mint-primary-bg, #ecfdf5), + var(--mint-primary-dark, #059669) + ); + @include menu-hover($hover-bg-color); + + .el-menu-item, + .el-sub-menu__title { + color: var(--mint-text, #1e293b) !important; + } + + // 选中态:以浅底+图标强化为主,文字保持中性色(对齐 fresh-mint demo) + .el-menu-item.is-active span { + color: var(--mint-primary-dark, #059669) !important; + font-weight: 600 !important; + } + + .el-sub-menu__icon-arrow { + color: var(--mint-text-muted, #64748b); + } + } + + // ---------------------- Dark theme menu ---------------------- + .el-menu-dark { + @include theme-menu-base; + @include menu-active(#fff, #27282d, #fff); + @include menu-hover(#0f1015); + + .el-sub-menu__icon-arrow { + color: var(--art-gray-400); + } + } + + // ---------------------- Light theme menu ---------------------- + .el-menu-light { + .el-sub-menu__title, + .el-menu-item { + .menu-icon { + margin-left: 1px; + } + } + + .el-menu-item.is-active { + background-color: var(--mint-primary-bg, #ecfdf5); + color: var(--mint-primary-dark, #059669) !important; + font-weight: 600; + + span { + color: var(--mint-primary-dark, #059669) !important; + font-weight: 600 !important; + } + + .art-svg-icon { + color: var(--mint-primary-dark, #059669) !important; + } + } + + @include menu-hover($hover-bg-color); + + .el-sub-menu__icon-arrow { + color: var(--mint-text-muted, #64748b); + } + } +} + +@media only screen and (width <= 640px) { + .layout-sidebar { + .el-menu-design { + > .el-sub-menu { + margin-left: 0; + } + + .el-sub-menu { + width: 100% !important; + } + } + } +} + +// 菜单折叠 hover 弹窗样式(浅色主题) +.el-menu--vertical, +.el-menu--popup-container { + @include popup-menu-base(var(--art-gray-200), var(--art-gray-900), var(--art-gray-200)); +} + +// 暗黑模式菜单样式 +.dark { + .el-menu--vertical, + .el-menu--popup-container { + @include popup-menu-base(var(--art-gray-200), var(--art-gray-900), #292a2e); + } + + .layout-sidebar { + // 图标颜色、文字颜色 + .menu-icon .art-svg-icon, + .menu-name { + color: var(--art-gray-800) !important; + } + + // 选中的文字颜色跟图标颜色 + .el-menu-item.is-active { + span, + .menu-icon .art-svg-icon { + color: var(--theme-color) !important; + } + } + + // 右侧箭头颜色 + .el-sub-menu__icon-arrow { + color: #fff; + } + } +} diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue new file mode 100755 index 00000000..12cd7d94 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue @@ -0,0 +1,158 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-notification/index.vue b/web-admin/src/components/core/layouts/art-notification/index.vue new file mode 100755 index 00000000..a58853ce --- /dev/null +++ b/web-admin/src/components/core/layouts/art-notification/index.vue @@ -0,0 +1,456 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-page-content/index.vue b/web-admin/src/components/core/layouts/art-page-content/index.vue new file mode 100644 index 00000000..19176e95 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-page-content/index.vue @@ -0,0 +1,137 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-screen-lock/index.vue b/web-admin/src/components/core/layouts/art-screen-lock/index.vue new file mode 100644 index 00000000..29373cea --- /dev/null +++ b/web-admin/src/components/core/layouts/art-screen-lock/index.vue @@ -0,0 +1,528 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts new file mode 100644 index 00000000..35e8066e --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts @@ -0,0 +1,248 @@ +import { computed } from 'vue' +import { useI18n } from 'vue-i18n' +import { ContainerWidthEnum } from '@/enums/appEnum' +import AppConfig from '@/config' +import { headerBarConfig } from '@/config/modules/headerBar' + +/** + * 设置项配置选项管理 + */ +export function useSettingsConfig() { + const { t } = useI18n() + + // 标签页风格选项 + const tabStyleOptions = computed(() => [ + { + value: 'tab-default', + label: t('setting.tabStyle.default') + }, + { + value: 'tab-card', + label: t('setting.tabStyle.card') + }, + { + value: 'tab-google', + label: t('setting.tabStyle.google') + } + ]) + + // 页面切换动画选项 + const pageTransitionOptions = computed(() => [ + { + value: '', + label: t('setting.transition.list.none') + }, + { + value: 'fade', + label: t('setting.transition.list.fade') + }, + { + value: 'slide-left', + label: t('setting.transition.list.slideLeft') + }, + { + value: 'slide-bottom', + label: t('setting.transition.list.slideBottom') + }, + { + value: 'slide-top', + label: t('setting.transition.list.slideTop') + } + ]) + + // 圆角大小选项 + const customRadiusOptions = [ + { value: '0', label: '0' }, + { value: '0.25', label: '0.25' }, + { value: '0.5', label: '0.5' }, + { value: '0.75', label: '0.75' }, + { value: '1', label: '1' } + ] + + // 容器宽度选项 + const containerWidthOptions = computed(() => [ + { + value: ContainerWidthEnum.FULL, + label: t('setting.container.list[0]'), + icon: 'icon-park-outline:auto-width' + }, + { + value: ContainerWidthEnum.BOXED, + label: t('setting.container.list[1]'), + icon: 'ix:width' + } + ]) + + // 盒子样式选项 + const boxStyleOptions = computed(() => [ + { + value: 'border-mode', + label: t('setting.box.list[0]'), + type: 'border-mode' as const + }, + { + value: 'shadow-mode', + label: t('setting.box.list[1]'), + type: 'shadow-mode' as const + } + ]) + + // 从配置文件获取的选项 + const configOptions = { + // 主题色彩选项 + mainColors: AppConfig.systemMainColor, + + // 主题风格选项 + themeList: AppConfig.settingThemeList, + + // 菜单布局选项 + menuLayoutList: AppConfig.menuLayoutList + } + + // 基础设置项配置 + const basicSettingsConfig = computed(() => { + // 定义所有基础设置项 + const allSettings = [ + { + key: 'showWorkTab', + label: t('setting.basics.list.multiTab'), + type: 'switch' as const, + handler: 'workTab', + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'uniqueOpened', + label: t('setting.basics.list.accordion'), + type: 'switch' as const, + handler: 'uniqueOpened', + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'showMenuButton', + label: t('setting.basics.list.collapseSidebar'), + type: 'switch' as const, + handler: 'menuButton', + headerBarKey: 'menuButton' as const + }, + { + key: 'showFastEnter', + label: t('setting.basics.list.fastEnter'), + type: 'switch' as const, + handler: 'fastEnter', + headerBarKey: 'fastEnter' as const + }, + { + key: 'showRefreshButton', + label: t('setting.basics.list.reloadPage'), + type: 'switch' as const, + handler: 'refreshButton', + headerBarKey: 'refreshButton' as const + }, + { + key: 'showCrumbs', + label: t('setting.basics.list.breadcrumb'), + type: 'switch' as const, + handler: 'crumbs', + mobileHide: true, + headerBarKey: 'breadcrumb' as const + }, + { + key: 'showLanguage', + label: t('setting.basics.list.language'), + type: 'switch' as const, + handler: 'language', + headerBarKey: 'language' as const + }, + { + key: 'showNprogress', + label: t('setting.basics.list.progressBar'), + type: 'switch' as const, + handler: 'nprogress', + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'colorWeak', + label: t('setting.basics.list.weakMode'), + type: 'switch' as const, + handler: 'colorWeak', + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'watermarkVisible', + label: t('setting.basics.list.watermark'), + type: 'switch' as const, + handler: 'watermark', + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'menuOpenWidth', + label: t('setting.basics.list.menuWidth'), + type: 'input-number' as const, + handler: 'menuOpenWidth', + min: 180, + max: 320, + step: 10, + style: { width: '120px' }, + controlsPosition: 'right' as const, + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'tabStyle', + label: t('setting.basics.list.tabStyle'), + type: 'select' as const, + handler: 'tabStyle', + options: tabStyleOptions.value, + style: { width: '120px' }, + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'pageTransition', + label: t('setting.basics.list.pageTransition'), + type: 'select' as const, + handler: 'pageTransition', + options: pageTransitionOptions.value, + style: { width: '120px' }, + headerBarKey: null // 不依赖headerBar配置 + }, + { + key: 'customRadius', + label: t('setting.basics.list.borderRadius'), + type: 'select' as const, + handler: 'customRadius', + options: customRadiusOptions, + style: { width: '120px' }, + headerBarKey: null // 不依赖headerBar配置 + } + ] + + // 根据 headerBarConfig 过滤设置项 + return ( + allSettings + .filter((setting) => { + // 如果设置项不依赖headerBar配置,则始终显示 + if (setting.headerBarKey === null) { + return true + } + + // 如果依赖headerBar配置,检查对应的功能是否启用 + const headerBarFeature = headerBarConfig[setting.headerBarKey] + return headerBarFeature?.enabled !== false + }) + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .map(({ headerBarKey: _headerBarKey, ...setting }) => setting) + ) + }) + + return { + // 选项配置 + tabStyleOptions, + pageTransitionOptions, + customRadiusOptions, + containerWidthOptions, + boxStyleOptions, + configOptions, + + // 设置项配置 + basicSettingsConfig + } +} diff --git a/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts new file mode 100644 index 00000000..392c6900 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts @@ -0,0 +1,167 @@ +import { useSettingStore } from '@/store/modules/setting' +import { storeToRefs } from 'pinia' +import type { ContainerWidthEnum } from '@/enums/appEnum' + +/** + * 设置项通用处理逻辑 + */ +export function useSettingsHandlers() { + const settingStore = useSettingStore() + + // DOM 操作相关 + const domOperations = { + // 设置HTML类名 + setHtmlClass: (className: string, add: boolean) => { + const el = document.getElementsByTagName('html')[0] + if (add) { + el.classList.add(className) + } else { + el.classList.remove(className) + } + }, + + // 设置根元素属性 + setRootAttribute: (attribute: string, value: string) => { + const el = document.documentElement + el.setAttribute(attribute, value) + }, + + // 设置body类名 + setBodyClass: (className: string, add: boolean) => { + const el = document.getElementsByTagName('body')[0] + if (add) { + el.classList.add(className) + } else { + el.classList.remove(className) + } + } + } + + // 通用切换处理器 + const createToggleHandler = (storeMethod: () => void, callback?: () => void) => { + return () => { + storeMethod() + callback?.() + } + } + + // 通用值变更处理器 + const createValueHandler = ( + storeMethod: (value: T) => void, + callback?: (value: T) => void + ) => { + return (value: T) => { + if (value !== undefined && value !== null) { + storeMethod(value) + callback?.(value) + } + } + } + + // 基础设置处理器 + const basicHandlers = { + // 工作台标签页 + workTab: createToggleHandler(() => settingStore.setWorkTab(!settingStore.showWorkTab)), + + // 菜单手风琴 + uniqueOpened: createToggleHandler(() => settingStore.setUniqueOpened()), + + // 显示菜单按钮 + menuButton: createToggleHandler(() => settingStore.setButton()), + + // 显示快速入口 + fastEnter: createToggleHandler(() => settingStore.setFastEnter()), + + // 显示刷新按钮 + refreshButton: createToggleHandler(() => settingStore.setShowRefreshButton()), + + // 显示面包屑 + crumbs: createToggleHandler(() => settingStore.setCrumbs()), + + // 显示语言切换 + language: createToggleHandler(() => settingStore.setLanguage()), + + // 显示进度条 + nprogress: createToggleHandler(() => settingStore.setNprogress()), + + // 色弱模式 + colorWeak: createToggleHandler( + () => settingStore.setColorWeak(), + () => { + domOperations.setHtmlClass('color-weak', settingStore.colorWeak) + } + ), + + // 水印显示 + watermark: createToggleHandler(() => + settingStore.setWatermarkVisible(!settingStore.watermarkVisible) + ), + + // 菜单展开宽度 + menuOpenWidth: createValueHandler((width: number) => + settingStore.setMenuOpenWidth(width) + ), + + // 标签页风格 + tabStyle: createValueHandler((style: string) => settingStore.setTabStyle(style)), + + // 页面切换动画 + pageTransition: createValueHandler((transition: string) => + settingStore.setPageTransition(transition) + ), + + // 圆角大小 + customRadius: createValueHandler((radius: string) => + settingStore.setCustomRadius(radius) + ) + } + + // 盒子样式处理器 + const boxStyleHandlers = { + // 设置盒子模式 + setBoxMode: (type: 'border-mode' | 'shadow-mode') => { + const { boxBorderMode } = storeToRefs(settingStore) + + // 防止重复设置 + if ( + (type === 'shadow-mode' && boxBorderMode.value === false) || + (type === 'border-mode' && boxBorderMode.value === true) + ) { + return + } + + setTimeout(() => { + domOperations.setRootAttribute('data-box-mode', type) + settingStore.setBorderMode() + }, 50) + } + } + + // 颜色设置处理器 + const colorHandlers = { + // 选择主题色 + selectColor: (theme: string) => { + settingStore.setElementTheme(theme) + settingStore.reload() + } + } + + // 容器设置处理器 + const containerHandlers = { + // 设置容器宽度 + setWidth: (type: ContainerWidthEnum) => { + settingStore.setContainerWidth(type) + settingStore.reload() + } + } + + return { + domOperations, + basicHandlers, + boxStyleHandlers, + colorHandlers, + containerHandlers, + createToggleHandler, + createValueHandler + } +} diff --git a/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts new file mode 100644 index 00000000..f5e4e56e --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts @@ -0,0 +1,233 @@ +import { ref, computed, watch } from 'vue' +import { useSettingStore } from '@/store/modules/setting' +import { storeToRefs } from 'pinia' +import { useBreakpoints } from '@vueuse/core' +import AppConfig from '@/config' +import { SystemThemeEnum, MenuTypeEnum } from '@/enums/appEnum' +import { mittBus } from '@/utils/sys' +import { StorageConfig } from '@/utils' +import { useTheme } from '@/hooks/core/useTheme' +import { useCeremony } from '@/hooks/core/useCeremony' +import { useSettingsState } from './useSettingsState' +import { useSettingsHandlers } from './useSettingsHandlers' + +/** + * 设置面板核心逻辑管理 + */ +export function useSettingsPanel() { + const settingStore = useSettingStore() + const { systemThemeType, systemThemeMode, menuType } = storeToRefs(settingStore) + + // Composables + const { openFestival, cleanup } = useCeremony() + const { setSystemTheme, setSystemAutoTheme } = useTheme() + const { initColorWeak } = useSettingsState() + const { domOperations } = useSettingsHandlers() + + // 响应式状态 + const showDrawer = ref(false) + + // 使用 VueUse breakpoints 优化性能 + const breakpoints = useBreakpoints({ tablet: 1000 }) + const isMobile = breakpoints.smaller('tablet') + + // 记录窗口宽度变化前的菜单类型 + const getStoredDesktopMenuType = (): MenuTypeEnum | undefined => { + const storedMenuType = localStorage.getItem(StorageConfig.RESPONSIVE_MENU_TYPE_KEY) + return Object.values(MenuTypeEnum).includes(storedMenuType as MenuTypeEnum) + ? (storedMenuType as MenuTypeEnum) + : undefined + } + + const setStoredDesktopMenuType = (type: MenuTypeEnum) => { + localStorage.setItem(StorageConfig.RESPONSIVE_MENU_TYPE_KEY, type) + } + + const clearStoredDesktopMenuType = () => { + localStorage.removeItem(StorageConfig.RESPONSIVE_MENU_TYPE_KEY) + } + + const storedDesktopMenuType = getStoredDesktopMenuType() + const beforeMenuType = ref(storedDesktopMenuType) + const hasChangedMenu = ref(Boolean(storedDesktopMenuType)) + + // 计算属性 + const systemThemeColor = computed(() => settingStore.systemThemeColor as string) + + // 主题相关处理 + const useThemeHandlers = () => { + // 初始化系统颜色 + const initSystemColor = () => { + if (!AppConfig.systemMainColor.includes(systemThemeColor.value)) { + settingStore.setElementTheme(AppConfig.systemMainColor[0]) + settingStore.reload() + } + } + + // 初始化系统主题 + const initSystemTheme = () => { + if (systemThemeMode.value === SystemThemeEnum.AUTO) { + setSystemAutoTheme() + } else { + setSystemTheme(systemThemeType.value) + } + } + + // 监听系统主题变化 + const listenerSystemTheme = () => { + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)') + mediaQuery.addEventListener('change', initSystemTheme) + return () => { + mediaQuery.removeEventListener('change', initSystemTheme) + } + } + + return { + initSystemColor, + initSystemTheme, + listenerSystemTheme + } + } + + // 响应式布局处理 + const useResponsiveLayout = () => { + // 使用 watch 监听断点变化,性能更优 + const stopWatch = watch( + isMobile, + (mobile: boolean) => { + if (mobile) { + // 切换到移动端布局 + if (!hasChangedMenu.value) { + beforeMenuType.value = menuType.value + if (menuType.value !== MenuTypeEnum.LEFT) { + setStoredDesktopMenuType(menuType.value) + useSettingsState().switchMenuLayouts(MenuTypeEnum.LEFT) + hasChangedMenu.value = true + } + } + + settingStore.setMenuOpen(false) + } else { + // 恢复桌面端布局 + if (hasChangedMenu.value && beforeMenuType.value) { + if (menuType.value === MenuTypeEnum.LEFT) { + useSettingsState().switchMenuLayouts(beforeMenuType.value) + } + + clearStoredDesktopMenuType() + hasChangedMenu.value = false + } + + settingStore.setMenuOpen(true) + } + }, + { immediate: true } + ) + + return { stopWatch } + } + + // 抽屉控制 + const useDrawerControl = () => { + // 用于存储 setTimeout 的 ID,以便在需要时清除 + let themeChangeTimer: ReturnType | null = null + + // 打开抽屉 + const handleOpen = () => { + // 清除可能存在的旧定时器 + if (themeChangeTimer) { + clearTimeout(themeChangeTimer) + } + // 延迟添加 theme-change class,避免抽屉打开动画受影响 + themeChangeTimer = setTimeout(() => { + domOperations.setBodyClass('theme-change', true) + themeChangeTimer = null + }, 500) + } + + // 关闭抽屉 + const handleClose = () => { + // 清除未执行的定时器,防止关闭后才添加 class + if (themeChangeTimer) { + clearTimeout(themeChangeTimer) + themeChangeTimer = null + } + // 立即移除 theme-change class + domOperations.setBodyClass('theme-change', false) + } + + // 打开设置 + const openSetting = () => { + showDrawer.value = true + } + + // 关闭设置 + const closeDrawer = () => { + showDrawer.value = false + } + + return { + handleOpen, + handleClose, + openSetting, + closeDrawer + } + } + + // Props 变化监听 + const usePropsWatcher = (props: { open?: boolean }) => { + watch( + () => props.open, + (val: boolean | undefined) => { + if (val !== undefined) { + showDrawer.value = val + } + } + ) + } + + // 初始化设置 + const useSettingsInitializer = () => { + const themeHandlers = useThemeHandlers() + const { openSetting } = useDrawerControl() + const { stopWatch } = useResponsiveLayout() + let themeCleanup: (() => void) | null = null + + const initializeSettings = () => { + mittBus.on('openSetting', openSetting) + themeHandlers.initSystemColor() + themeCleanup = themeHandlers.listenerSystemTheme() + initColorWeak() + + // 设置盒子模式 + const boxMode = settingStore.boxBorderMode ? 'border-mode' : 'shadow-mode' + domOperations.setRootAttribute('data-box-mode', boxMode) + + themeHandlers.initSystemTheme() + openFestival() + } + + const cleanupSettings = () => { + stopWatch() + themeCleanup?.() + cleanup() + } + + return { + initializeSettings, + cleanupSettings + } + } + + return { + // 状态 + showDrawer, + + // 方法组合 + useThemeHandlers, + useResponsiveLayout, + useDrawerControl, + usePropsWatcher, + useSettingsInitializer + } +} diff --git a/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts new file mode 100644 index 00000000..65352d29 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts @@ -0,0 +1,37 @@ +import { useSettingStore } from '@/store/modules/setting' +import { MenuThemeEnum, MenuTypeEnum } from '@/enums/appEnum' + +/** + * 设置状态管理 + */ +export function useSettingsState() { + const settingStore = useSettingStore() + + // 色弱模式初始化 + const initColorWeak = () => { + if (settingStore.colorWeak) { + const el = document.getElementsByTagName('html')[0] + setTimeout(() => { + el.classList.add('color-weak') + }, 100) + } + } + + // 菜单布局切换 + const switchMenuLayouts = (type: MenuTypeEnum) => { + if (type === MenuTypeEnum.LEFT || type === MenuTypeEnum.TOP_LEFT) { + settingStore.setMenuOpen(true) + } + settingStore.switchMenuLayouts(type) + if (type === MenuTypeEnum.DUAL_MENU) { + settingStore.switchMenuStyles(MenuThemeEnum.DESIGN) + settingStore.setMenuOpen(true) + } + } + + return { + // 方法 + initColorWeak, + switchMenuLayouts + } +} diff --git a/web-admin/src/components/core/layouts/art-settings-panel/index.vue b/web-admin/src/components/core/layouts/art-settings-panel/index.vue new file mode 100755 index 00000000..0cbf3441 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/index.vue @@ -0,0 +1,72 @@ + + + + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/style.scss b/web-admin/src/components/core/layouts/art-settings-panel/style.scss new file mode 100755 index 00000000..e8630744 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/style.scss @@ -0,0 +1,92 @@ +@use '@styles/core/mixin.scss' as *; + +// 设置抽屉模态框样式 +.setting-modal { + background: transparent !important; + + .el-drawer { + // 背景滤镜效果 + background: rgba($color: #fff, $alpha: 50%) !important; + box-shadow: 0 0 30px rgb(0 0 0 / 10%) !important; + + @include backdropBlur(); + + .setting-box-wrap { + display: flex; + flex-wrap: wrap; + align-items: center; + width: calc(100% + 15px); + margin-bottom: 10px; + + .setting-item { + box-sizing: border-box; + width: calc(33.333% - 15px); + margin-right: 15px; + text-align: center; + + .box { + position: relative; + box-sizing: border-box; + display: flex; + height: 52px; + overflow: hidden; + cursor: pointer; + border: 2px solid var(--default-border); + border-radius: 8px; + box-shadow: 0 0 8px 0 rgb(0 0 0 / 10%); + transition: box-shadow 0.1s; + + &.mt-16 { + margin-top: 16px; + } + + &.is-active { + border: 2px solid var(--theme-color); + } + + img { + width: 100%; + height: 100%; + } + } + + .name { + margin-top: 6px; + font-size: 14px; + text-align: center; + } + } + } + } + + // 去除滚动条 + .el-drawer__body::-webkit-scrollbar { + width: 0 !important; + } +} + +.dark { + .setting-modal { + .el-drawer { + background: rgba($color: #000, $alpha: 50%) !important; + + .setting-item { + .box { + border: 2px solid transparent; + } + } + } + } +} + +// 去除火狐浏览器滚动条 +:deep(.el-drawer__body) { + scrollbar-width: none; +} + +// 移动端隐藏 +@media screen and (width <= 800px) { + .mobile-hide { + display: none !important; + } +} diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue new file mode 100644 index 00000000..b6dc9d3e --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue @@ -0,0 +1,77 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue new file mode 100644 index 00000000..86c7a9e7 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue @@ -0,0 +1,38 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue new file mode 100644 index 00000000..05a4b411 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue @@ -0,0 +1,35 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue new file mode 100644 index 00000000..1f5be721 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue @@ -0,0 +1,33 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue new file mode 100644 index 00000000..dbcae46b --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue @@ -0,0 +1,31 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue new file mode 100644 index 00000000..61237ebb --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue @@ -0,0 +1,44 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue new file mode 100644 index 00000000..31ef00cd --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue @@ -0,0 +1,17 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue new file mode 100644 index 00000000..7b47d1a1 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue @@ -0,0 +1,235 @@ + + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue new file mode 100644 index 00000000..85372be8 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue @@ -0,0 +1,51 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue new file mode 100644 index 00000000..e3ead9ec --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue @@ -0,0 +1,18 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue new file mode 100644 index 00000000..57210275 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue b/web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue new file mode 100644 index 00000000..4b46fcd6 --- /dev/null +++ b/web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue @@ -0,0 +1,28 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-work-tab/index.vue b/web-admin/src/components/core/layouts/art-work-tab/index.vue new file mode 100644 index 00000000..c1fdac3f --- /dev/null +++ b/web-admin/src/components/core/layouts/art-work-tab/index.vue @@ -0,0 +1,550 @@ + + + + + + diff --git a/web-admin/src/components/core/media/art-cutter-img/index.vue b/web-admin/src/components/core/media/art-cutter-img/index.vue new file mode 100644 index 00000000..191ceed0 --- /dev/null +++ b/web-admin/src/components/core/media/art-cutter-img/index.vue @@ -0,0 +1,350 @@ + + + + + + diff --git a/web-admin/src/components/core/media/art-video-player/index.vue b/web-admin/src/components/core/media/art-video-player/index.vue new file mode 100644 index 00000000..4f681ea2 --- /dev/null +++ b/web-admin/src/components/core/media/art-video-player/index.vue @@ -0,0 +1,111 @@ + + + + diff --git a/web-admin/src/components/core/others/art-menu-right/index.vue b/web-admin/src/components/core/others/art-menu-right/index.vue new file mode 100644 index 00000000..1cc92ab2 --- /dev/null +++ b/web-admin/src/components/core/others/art-menu-right/index.vue @@ -0,0 +1,415 @@ + + + + + + diff --git a/web-admin/src/components/core/others/art-watermark/index.vue b/web-admin/src/components/core/others/art-watermark/index.vue new file mode 100644 index 00000000..1d7f06be --- /dev/null +++ b/web-admin/src/components/core/others/art-watermark/index.vue @@ -0,0 +1,64 @@ + + + + diff --git a/web-admin/src/components/core/tables/art-table-header/index.vue b/web-admin/src/components/core/tables/art-table-header/index.vue new file mode 100644 index 00000000..788c2b7e --- /dev/null +++ b/web-admin/src/components/core/tables/art-table-header/index.vue @@ -0,0 +1,339 @@ + + + + + + diff --git a/web-admin/src/components/core/tables/art-table/index.vue b/web-admin/src/components/core/tables/art-table/index.vue new file mode 100644 index 00000000..be99e702 --- /dev/null +++ b/web-admin/src/components/core/tables/art-table/index.vue @@ -0,0 +1,368 @@ + + + + + + + + + diff --git a/web-admin/src/components/core/tables/art-table/style.scss b/web-admin/src/components/core/tables/art-table/style.scss new file mode 100644 index 00000000..67459e8d --- /dev/null +++ b/web-admin/src/components/core/tables/art-table/style.scss @@ -0,0 +1,99 @@ +.art-table { + position: relative; + height: 100%; + + .el-table { + height: 100%; + margin-top: 10px; + } + + :deep(.el-loading-mask) { + z-index: 100; + background-color: var(--default-box-color) !important; + } + + // Loading 过渡动画 - 消失时淡出 + .loading-fade-leave-active { + transition: opacity 0.3s ease-out; + } + + .loading-fade-leave-to { + opacity: 0; + } + + // 空状态垂直居中 + &.is-empty { + :deep(.el-scrollbar__wrap) { + display: flex; + } + } + + .pagination { + display: flex; + margin-top: 13px; + + :deep(.el-select) { + width: 102px !important; + } + + // 分页对齐方式 + &.left { + justify-content: flex-start; + } + + &.center { + justify-content: center; + } + + &.right { + justify-content: flex-end; + } + + // 自定义分页组件样式 + &.custom-pagination { + :deep(.el-pagination) { + .btn-prev, + .btn-next { + background-color: transparent; + border: 1px solid var(--art-gray-300); + transition: border-color 0.15s; + + &:hover:not(.is-disabled) { + color: var(--theme-color); + border-color: var(--theme-color); + } + } + + li { + box-sizing: border-box; + font-weight: 400 !important; + background-color: transparent; + border: 1px solid var(--art-gray-300); + transition: border-color 0.15s; + + &.is-active { + font-weight: 400; + color: #fff; + background-color: var(--theme-color); + border: 1px solid var(--theme-color); + } + + &:hover:not(.is-disabled) { + border-color: var(--theme-color); + } + } + } + } + } +} + +// 移动端分页 +@media (width <= 640px) { + :deep(.el-pagination) { + display: flex; + flex-wrap: wrap; + gap: 15px 0; + align-items: center; + justify-content: center; + } +} diff --git a/web-admin/src/components/core/text-effect/art-count-to/index.vue b/web-admin/src/components/core/text-effect/art-count-to/index.vue new file mode 100644 index 00000000..7fb104b9 --- /dev/null +++ b/web-admin/src/components/core/text-effect/art-count-to/index.vue @@ -0,0 +1,310 @@ + + + + diff --git a/web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue b/web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue new file mode 100644 index 00000000..770b4576 --- /dev/null +++ b/web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue @@ -0,0 +1,32 @@ + + + + diff --git a/web-admin/src/components/core/text-effect/art-text-scroll/index.vue b/web-admin/src/components/core/text-effect/art-text-scroll/index.vue new file mode 100644 index 00000000..90be30f8 --- /dev/null +++ b/web-admin/src/components/core/text-effect/art-text-scroll/index.vue @@ -0,0 +1,285 @@ + + + + diff --git a/web-admin/src/components/core/theme/theme-svg/index.vue b/web-admin/src/components/core/theme/theme-svg/index.vue new file mode 100644 index 00000000..0b565a97 --- /dev/null +++ b/web-admin/src/components/core/theme/theme-svg/index.vue @@ -0,0 +1,100 @@ + + + + + + + diff --git a/web-admin/src/components/core/views/exception/ArtException.vue b/web-admin/src/components/core/views/exception/ArtException.vue new file mode 100644 index 00000000..4be59aee --- /dev/null +++ b/web-admin/src/components/core/views/exception/ArtException.vue @@ -0,0 +1,55 @@ + + + diff --git a/web-admin/src/components/core/views/login/AuthTopBar.vue b/web-admin/src/components/core/views/login/AuthTopBar.vue new file mode 100644 index 00000000..94552537 --- /dev/null +++ b/web-admin/src/components/core/views/login/AuthTopBar.vue @@ -0,0 +1,149 @@ + + + + + + diff --git a/web-admin/src/components/core/views/login/LoginLeftView.vue b/web-admin/src/components/core/views/login/LoginLeftView.vue new file mode 100644 index 00000000..af6a9042 --- /dev/null +++ b/web-admin/src/components/core/views/login/LoginLeftView.vue @@ -0,0 +1,602 @@ + + + + + + diff --git a/web-admin/src/components/core/views/result/ArtResultPage.vue b/web-admin/src/components/core/views/result/ArtResultPage.vue new file mode 100644 index 00000000..b2eca480 --- /dev/null +++ b/web-admin/src/components/core/views/result/ArtResultPage.vue @@ -0,0 +1,43 @@ + + + diff --git a/web-admin/src/components/core/widget/art-icon-button/index.vue b/web-admin/src/components/core/widget/art-icon-button/index.vue new file mode 100644 index 00000000..760888be --- /dev/null +++ b/web-admin/src/components/core/widget/art-icon-button/index.vue @@ -0,0 +1,23 @@ + + + + diff --git a/web-admin/src/config/assets/images.ts b/web-admin/src/config/assets/images.ts new file mode 100644 index 00000000..f3e89dd1 --- /dev/null +++ b/web-admin/src/config/assets/images.ts @@ -0,0 +1,61 @@ +/** + * 配置图片资源 + * + * 统一管理设置中心使用的预览图片资源。 + * 包含主题样式、菜单布局、菜单风格的预览图。 + * + * ## 图片分类 + * + * - themeStyles: 系统主题预览图(亮色/暗色/自动) + * - menuLayouts: 菜单布局预览图(左侧/顶部/混合/双栏) + * - menuStyles: 菜单风格预览图(设计/暗色/亮色) + * + * @module config/assets/images + * @author Art Design Pro Team + */ + +import lightTheme from '@imgs/settings/theme_styles/light.png' +import darkTheme from '@imgs/settings/theme_styles/dark.png' +import systemTheme from '@imgs/settings/theme_styles/system.png' +import verticalLayout from '@imgs/settings/menu_layouts/vertical.png' +import horizontalLayout from '@imgs/settings/menu_layouts/horizontal.png' +import mixedLayout from '@imgs/settings/menu_layouts/mixed.png' +import dualColumnLayout from '@imgs/settings/menu_layouts/dual_column.png' +import designStyle from '@imgs/settings/menu_styles/design.png' +import darkStyle from '@imgs/settings/menu_styles/dark.png' +import lightStyle from '@imgs/settings/menu_styles/light.png' + +/** + * 配置中心图片资源对象 + */ +export const configImages = { + /** 系统主题预览图 */ + themeStyles: { + /** 亮色主题 */ + light: lightTheme, + /** 暗色主题 */ + dark: darkTheme, + /** 自动主题(跟随系统) */ + system: systemTheme + }, + /** 菜单布局预览图 */ + menuLayouts: { + /** 左侧菜单 */ + vertical: verticalLayout, + /** 顶部菜单 */ + horizontal: horizontalLayout, + /** 混合菜单 */ + mixed: mixedLayout, + /** 双栏菜单 */ + dualColumn: dualColumnLayout + }, + /** 菜单风格预览图 */ + menuStyles: { + /** 设计风格 */ + design: designStyle, + /** 暗色风格 */ + dark: darkStyle, + /** 亮色风格 */ + light: lightStyle + } +} diff --git a/web-admin/src/config/index.ts b/web-admin/src/config/index.ts new file mode 100644 index 00000000..7cbe9451 --- /dev/null +++ b/web-admin/src/config/index.ts @@ -0,0 +1,136 @@ +/** + * 系统全局配置 + * + * 这是系统的核心配置文件,集中管理所有全局配置项。 + * 包含系统信息、主题样式、菜单布局、颜色方案等所有可配置项。 + * + * ## 主要功能 + * + * - 系统信息 - 系统名称等基础信息 + * - 主题配置 - 亮色/暗色/自动主题的样式配置 + * - 菜单配置 - 菜单布局、主题、宽度等配置 + * - 颜色方案 - 系统主色和预设颜色列表 + * - 快速入口 - 快速入口应用和链接配置 + * - 顶部栏配置 - 顶部栏功能模块配置 + * + * ## 配置项说明 + * + * - systemInfo: 系统基础信息(名称等) + * - systemThemeStyles: 系统主题样式映射 + * - settingThemeList: 可选的系统主题列表 + * - menuLayoutList: 可选的菜单布局列表 + * - themeList: 菜单主题样式列表 + * - darkMenuStyles: 暗黑模式下的菜单样式 + * - systemMainColor: 预设的系统主色列表 + * - fastEnter: 快速入口配置 + * - headerBar: 顶部栏功能配置 + * + * @module config + * @author Art Design Pro Team + */ + +import { MenuThemeEnum, MenuTypeEnum, SystemThemeEnum } from '@/enums/appEnum' +import { SystemConfig } from '@/types/config' +import { configImages } from './assets/images' +import fastEnterConfig from './modules/fastEnter' +import { headerBarConfig } from './modules/headerBar' + +const appConfig: SystemConfig = { + // 系统信息 + systemInfo: { + name: '中科兴皖一体化门户' // 系统名称 + }, + // 系统主题 + systemThemeStyles: { + [SystemThemeEnum.LIGHT]: { className: '' }, + [SystemThemeEnum.DARK]: { className: SystemThemeEnum.DARK } + }, + // 系统主题列表 + settingThemeList: [ + { + name: 'Light', + theme: SystemThemeEnum.LIGHT, + color: ['#fff', '#fff'], + leftLineColor: '#EDEEF0', + rightLineColor: '#EDEEF0', + img: configImages.themeStyles.light + }, + { + name: 'Dark', + theme: SystemThemeEnum.DARK, + color: ['#22252A'], + leftLineColor: '#3F4257', + rightLineColor: '#3F4257', + img: configImages.themeStyles.dark + }, + { + name: 'System', + theme: SystemThemeEnum.AUTO, + color: ['#fff', '#22252A'], + leftLineColor: '#EDEEF0', + rightLineColor: '#3F4257', + img: configImages.themeStyles.system + } + ], + // 菜单布局列表 + menuLayoutList: [ + { name: 'Left', value: MenuTypeEnum.LEFT, img: configImages.menuLayouts.vertical }, + { name: 'Top', value: MenuTypeEnum.TOP, img: configImages.menuLayouts.horizontal }, + { name: 'Mixed', value: MenuTypeEnum.TOP_LEFT, img: configImages.menuLayouts.mixed }, + { name: 'Dual Column', value: MenuTypeEnum.DUAL_MENU, img: configImages.menuLayouts.dualColumn } + ], + // 菜单主题列表 + themeList: [ + { + theme: MenuThemeEnum.DESIGN, + background: '#FFFFFF', + systemNameColor: 'var(--art-gray-800)', + iconColor: '#6B6B6B', + textColor: '#29343D', + img: configImages.menuStyles.design + }, + { + theme: MenuThemeEnum.DARK, + background: '#191A23', + systemNameColor: '#D9DADB', + iconColor: '#BABBBD', + textColor: '#BABBBD', + img: configImages.menuStyles.dark + }, + { + theme: MenuThemeEnum.LIGHT, + background: '#ffffff', + systemNameColor: 'var(--art-gray-800)', + iconColor: '#6B6B6B', + textColor: '#29343D', + img: configImages.menuStyles.light + } + ], + // 暗黑模式菜单样式 + darkMenuStyles: [ + { + theme: MenuThemeEnum.DARK, + background: 'var(--default-box-color)', + systemNameColor: '#DDDDDD', + iconColor: '#BABBBD', + textColor: 'rgba(#FFFFFF, 0.7)' + } + ], + // 系统主色 + systemMainColor: [ + '#1989fa', // 运营端专业蓝 + '#07c160', // 成功绿 + '#ff976a', // 警告橙 + '#ee0a24', // 危险红 + '#1D84FF', + '#60C041' + ] as const, + // 快速入口配置 + fastEnter: fastEnterConfig, + // 顶部栏功能配置 + headerBar: headerBarConfig, + /** 纯样式骨架:不接后端业务接口 */ + stylePreviewOnly: true +} + +export default Object.freeze(appConfig) diff --git a/web-admin/src/config/modules/component.ts b/web-admin/src/config/modules/component.ts new file mode 100644 index 00000000..bc709e0e --- /dev/null +++ b/web-admin/src/config/modules/component.ts @@ -0,0 +1,105 @@ +/** + * 全局组件配置 + * + * 统一管理系统级全局组件的注册。 + * 这些组件会在应用启动时全局注册,可在任何地方使用。 + * + * ## 主要功能 + * + * - 组件配置 - 集中管理全局组件的配置信息 + * - 异步加载 - 使用 defineAsyncComponent 实现按需加载 + * - 开关控制 - 支持通过 enabled 字段启用/禁用组件 + * - 配置查询 - 提供工具函数快速查询组件配置 + * + * @module config/component + * @author Art Design Pro Team + */ + +import { defineAsyncComponent } from 'vue' + +/** + * 全局组件配置列表 + */ +export const globalComponentsConfig: GlobalComponentConfig[] = [ + { + name: '设置面板', + key: 'settings-panel', + component: defineAsyncComponent( + () => import('@/components/core/layouts/art-settings-panel/index.vue') + ), + enabled: true + }, + { + name: '全局搜索', + key: 'global-search', + component: defineAsyncComponent( + () => import('@/components/core/layouts/art-global-search/index.vue') + ), + enabled: true + }, + { + name: '锁屏', + key: 'screen-lock', + component: defineAsyncComponent( + () => import('@/components/core/layouts/art-screen-lock/index.vue') + ), + enabled: true + }, + { + name: '聊天窗口', + key: 'chat-window', + component: defineAsyncComponent( + () => import('@/components/core/layouts/art-chat-window/index.vue') + ), + enabled: true + }, + { + name: '礼花效果', + key: 'fireworks-effect', + component: defineAsyncComponent( + () => import('@/components/core/layouts/art-fireworks-effect/index.vue') + ), + enabled: true + }, + { + name: '水印效果', + key: 'watermark', + component: defineAsyncComponent( + () => import('@/components/core/others/art-watermark/index.vue') + ), + enabled: true + } +] + +/** + * 全局组件配置接口 + */ +export interface GlobalComponentConfig { + /** 组件名称 */ + name: string + /** 组件标识 */ + key: string + /** 组件 */ + component: any + /** 是否启用 */ + enabled?: boolean + /** 组件描述 */ + description?: string +} + +/** + * 获取启用的全局组件 + * @returns 已启用的组件配置列表 + */ +export const getEnabledGlobalComponents = () => { + return globalComponentsConfig.filter((config) => config.enabled !== false) +} + +/** + * 根据 key 获取组件配置 + * @param key 组件标识 + * @returns 组件配置对象 + */ +export const getGlobalComponentByKey = (key: string) => { + return globalComponentsConfig.find((config) => config.key === key) +} diff --git a/web-admin/src/config/modules/fastEnter.ts b/web-admin/src/config/modules/fastEnter.ts new file mode 100644 index 00000000..6b9740cb --- /dev/null +++ b/web-admin/src/config/modules/fastEnter.ts @@ -0,0 +1,127 @@ +/** + * 快速入口配置 + * 包含:应用列表、快速链接等配置 + */ +import { WEB_LINKS } from '@/utils/constants' +import type { FastEnterConfig } from '@/types/config' + +const fastEnterConfig: FastEnterConfig = { + // 显示条件(屏幕宽度) + minWidth: 1200, + // 应用列表 + applications: [ + { + name: '工作台', + description: '系统概览与数据统计', + icon: 'ri:pie-chart-line', + iconColor: '#377dff', + enabled: true, + order: 1, + routeName: 'Console' + }, + { + name: '分析页', + description: '数据分析与可视化', + icon: 'ri:game-line', + iconColor: '#ff3b30', + enabled: true, + order: 2, + routeName: 'Analysis' + }, + { + name: '礼花效果', + description: '动画特效展示', + icon: 'ri:loader-line', + iconColor: '#7A7FFF', + enabled: true, + order: 3, + routeName: 'Fireworks' + }, + { + name: '聊天', + description: '即时通讯功能', + icon: 'ri:user-line', + iconColor: '#13DEB9', + enabled: true, + order: 4, + routeName: 'Chat' + }, + { + name: '官方文档', + description: '使用指南与开发文档', + icon: 'ri:bill-line', + iconColor: '#ffb100', + enabled: true, + order: 5, + link: WEB_LINKS.DOCS + }, + { + name: '技术支持', + description: '技术支持与问题反馈', + icon: 'ri:user-location-line', + iconColor: '#ff6b6b', + enabled: true, + order: 6, + link: WEB_LINKS.COMMUNITY + }, + { + name: '更新日志', + description: '版本更新与变更记录', + icon: 'ri:gamepad-line', + iconColor: '#38C0FC', + enabled: true, + order: 7, + routeName: 'ChangeLog' + }, + { + name: '哔哩哔哩', + description: '技术分享与交流', + icon: 'ri:bilibili-line', + iconColor: '#FB7299', + enabled: true, + order: 8, + link: WEB_LINKS.BILIBILI + } + ], + // 快速链接 + quickLinks: [ + { + name: '登录', + enabled: true, + order: 1, + routeName: 'Login' + }, + { + name: '注册', + enabled: true, + order: 2, + routeName: 'Register' + }, + { + name: '忘记密码', + enabled: true, + order: 3, + routeName: 'ForgetPassword' + }, + { + name: '定价', + enabled: true, + order: 4, + routeName: 'Pricing' + }, + { + name: '个人中心', + enabled: true, + order: 5, + routeName: 'UserCenter' + }, + { + name: '留言管理', + enabled: true, + order: 6, + routeName: 'ArticleComment' + } + ] +} + +export default Object.freeze(fastEnterConfig) diff --git a/web-admin/src/config/modules/festival.ts b/web-admin/src/config/modules/festival.ts new file mode 100644 index 00000000..39cd790f --- /dev/null +++ b/web-admin/src/config/modules/festival.ts @@ -0,0 +1,51 @@ +/** + * 节日庆祝配置 + * + * 配置系统的节日烟花效果和祝福文本。 + * 支持单日节日和跨日期节日,可自定义烟花播放次数。 + * + * ## 配置说明 + * + * - name: 节日名称 + * - date: 节日开始日期(格式:YYYY-MM-DD) + * - endDate: 节日结束日期(可选,用于跨日期节日) + * - image: 烟花图片(需要预先导入) + * - scrollText: 滚动显示的祝福文本 + * - count: 烟花播放次数(可选,默认为 3 次) + * + * ## 注意事项 + * + * - 图片需要预先导入并在配置中引用 + * - 跨日期节日会在整个日期范围内生效 + * - 每个用户每天只会播放一次烟花效果 + * + * @module config/modules/festival + * @author Art Design Pro Team + */ + +import { FestivalConfig } from '@/types/config' + +// 导入烟花图片(根据需要取消注释) +// import sd from '@imgs/ceremony/sd.png' +// import yd from '@imgs/ceremony/yd.png' + +export const festivalConfigList: FestivalConfig[] = [ + // 跨日期示例 + // { + // name: 'v3.0 Sass 升级至 TailwindCSS', + // date: '2025-11-03', + // endDate: '2025-11-09', + // image: '', + // count: 3, + // scrollText: + // '🚀 系统 v3.0 测试阶段正式开启!测试周期为 11 月 3 日 - 11 月 16 日,通过 TailwindCSS 重构样式体系、统一 Iconify 图标方案,带来更高效现代的开发体验,正式发布敬请期待~' + // } + // 单日示例:圣诞节 + // { + // name: '圣诞节', + // date: '2024-12-25', + // image: sd, + // count: 3 // 可选,不设置则使用默认值 3 次 + // scrollText: 'Merry Christmas!Art Design Pro 祝您圣诞快乐,愿节日的欢乐与祝福如雪花般纷至沓来!', + // } +] diff --git a/web-admin/src/config/modules/headerBar.ts b/web-admin/src/config/modules/headerBar.ts new file mode 100644 index 00000000..a420e82c --- /dev/null +++ b/web-admin/src/config/modules/headerBar.ts @@ -0,0 +1,63 @@ +/** + * 顶部栏功能配置 + * + * 统一管理顶部栏各个功能模块的启用状态。 + * 通过修改此配置文件可以快速启用或禁用顶部栏的功能按钮。 + * + * @module config/headerBar + * @author Art Design Pro Team + */ + +import { HeaderBarFeatureConfig } from '@/types' + +/** + * 顶部栏功能配置对象 + */ +export const headerBarConfig: HeaderBarFeatureConfig = { + menuButton: { + enabled: true, + description: '控制左侧菜单的展开/收起按钮' + }, + refreshButton: { + enabled: true, + description: '页面刷新按钮' + }, + fastEnter: { + enabled: true, + description: '快速入口功能,提供常用应用和链接的快速访问' + }, + breadcrumb: { + enabled: true, + description: '面包屑导航,显示当前页面路径' + }, + globalSearch: { + enabled: true, + description: '全局搜索功能,支持快捷键 Ctrl+K 或 Cmd+K' + }, + fullscreen: { + enabled: true, + description: '全屏切换功能' + }, + notification: { + enabled: true, + description: '通知中心,显示系统通知和消息' + }, + chat: { + enabled: true, + description: '聊天功能,提供实时沟通' + }, + language: { + enabled: true, + description: '多语言切换功能' + }, + settings: { + enabled: true, + description: '系统设置面板' + }, + themeToggle: { + enabled: true, + description: '主题切换功能(明暗主题)' + } +} + +export default headerBarConfig diff --git a/web-admin/src/config/setting.ts b/web-admin/src/config/setting.ts new file mode 100644 index 00000000..94f2d2c5 --- /dev/null +++ b/web-admin/src/config/setting.ts @@ -0,0 +1,109 @@ +/** + * 系统设置默认值配置 + * + * 统一管理系统设置的所有默认值 + * + * ## 主要功能 + * + * - 菜单相关默认配置 + * - 主题相关默认配置 + * - 界面显示默认配置 + * - 功能开关默认配置 + * - 样式相关默认配置 + * + * ## 注意事项 + * + * 1. 修改此文件的配置项时,需要同步更新以下文件: + * - src/components/core/layouts/art-settings-panel/widget/SettingActions.vue(复制配置和重置配置逻辑) + * - src/store/modules/setting.ts(Store 状态定义) + * 2. 可以通过设置面板的"复制配置"按钮快速生成配置代码 + * 3. 枚举类型的值需要与 src/enums/appEnum.ts 中的定义保持一致 + */ + +import AppConfig from '@/config' +import { SystemThemeEnum, MenuThemeEnum, MenuTypeEnum, ContainerWidthEnum } from '@/enums/appEnum' + +/** + * 系统设置默认值配置 + */ +export const SETTING_DEFAULT_CONFIG = { + /** 菜单类型 */ + menuType: MenuTypeEnum.LEFT, + /** 菜单展开宽度 */ + menuOpenWidth: 230, + /** 菜单是否展开 */ + menuOpen: true, + /** 双菜单是否显示文本 */ + dualMenuShowText: false, + /** 系统主题类型 */ + systemThemeType: SystemThemeEnum.AUTO, + /** 系统主题模式 */ + systemThemeMode: SystemThemeEnum.AUTO, + /** 菜单风格 */ + menuThemeType: MenuThemeEnum.DESIGN, + /** 系统主题颜色 */ + systemThemeColor: AppConfig.systemMainColor[0], + /** 是否显示菜单按钮 */ + showMenuButton: true, + /** 是否显示快速入口 */ + showFastEnter: true, + /** 是否显示刷新按钮 */ + showRefreshButton: true, + /** 是否显示面包屑 */ + showCrumbs: true, + /** 是否显示工作台标签 */ + showWorkTab: true, + /** 是否显示语言切换 */ + showLanguage: true, + /** 是否显示进度条 */ + showNprogress: false, + /** 是否显示设置引导 */ + showSettingGuide: true, + /** 是否显示节日文本 */ + showFestivalText: false, + /** 是否显示水印 */ + watermarkVisible: false, + /** 是否自动关闭 */ + autoClose: false, + /** 是否唯一展开 */ + uniqueOpened: true, + /** 是否色弱模式 */ + colorWeak: false, + /** 是否刷新 */ + refresh: false, + /** 是否加载节日烟花 */ + holidayFireworksLoaded: false, + /** 边框模式 */ + boxBorderMode: true, + /** 页面过渡效果 */ + pageTransition: 'slide-left', + /** 标签页样式 */ + tabStyle: 'tab-default', + /** 自定义圆角 */ + customRadius: '0.75', + /** 容器宽度 */ + containerWidth: ContainerWidthEnum.FULL, + /** 节日日期 */ + festivalDate: '' +} + +/** + * 获取设置默认值 + * @returns 设置默认值对象 + */ +export function getSettingDefaults() { + return { ...SETTING_DEFAULT_CONFIG } +} + +/** + * 重置为默认设置 + * @param currentSettings 当前设置对象 + */ +export function resetToDefaults(currentSettings: Record) { + const defaults = getSettingDefaults() + Object.keys(defaults).forEach((key) => { + if (key in currentSettings) { + currentSettings[key] = defaults[key as keyof typeof defaults] + } + }) +} diff --git a/web-admin/src/directives/business/highlight.ts b/web-admin/src/directives/business/highlight.ts new file mode 100644 index 00000000..07b6c1dd --- /dev/null +++ b/web-admin/src/directives/business/highlight.ts @@ -0,0 +1,250 @@ +/** + * v-highlight 代码高亮指令 + * + * 为代码块提供语法高亮、行号显示和一键复制功能。 + * 基于 highlight.js 实现,支持多种编程语言的语法高亮。 + * + * ## 主要功能 + * + * - 语法高亮 - 使用 highlight.js 自动识别并高亮代码 + * - 行号显示 - 自动为每行代码添加行号 + * - 一键复制 - 提供复制按钮,点击即可复制代码(自动过滤行号) + * - 性能优化 - 批量处理代码块,避免阻塞渲染 + * - 动态监听 - 使用 MutationObserver 监听新增代码块 + * - 防重复处理 - 自动标记已处理的代码块,避免重复处理 + * + * ## 使用示例 + * + * ```vue + * + * ``` + * + * ## 性能优化 + * + * - 批量处理:每次处理 10 个代码块,避免长时间阻塞 + * - 延迟处理:使用 requestAnimationFrame 分批处理 + * - 重试机制:自动重试处理失败的代码块 + * - 智能监听:只在有新代码块时才触发处理 + * + * @module directives/highlight + * @author Art Design Pro Team + */ + +import { App, Directive } from 'vue' +import hljs from 'highlight.js' + +export type HighlightDirective = Directive + +// 高亮代码 +function highlightCode(block: HTMLElement) { + hljs.highlightElement(block) +} + +// 插入行号 +function insertLineNumbers(block: HTMLElement) { + const lines = block.innerHTML.split('\n') + const numberedLines = lines + .map((line, index) => { + return `${index + 1} ${line}` + }) + .join('\n') + block.innerHTML = numberedLines +} + +// 添加复制按钮:调整 DOM 结构,将代码部分包裹在 .code-wrapper 内 +function addCopyButton(block: HTMLElement) { + const copyButton = document.createElement('i') + copyButton.className = 'copy-button' + copyButton.innerHTML = + '' + copyButton.onclick = () => { + // 过滤掉行号,只复制代码内容 + const codeContent = block.innerText.replace(/^\d+\s+/gm, '') + navigator.clipboard.writeText(codeContent).then(() => { + ElMessage.success('复制成功') + }) + } + + const preElement = block.parentElement + if (preElement) { + let codeWrapper: HTMLElement + // 如果代码块还没有被包裹,则创建包裹容器 + if (!block.parentElement.classList.contains('code-wrapper')) { + codeWrapper = document.createElement('div') + codeWrapper.className = 'code-wrapper' + preElement.replaceChild(codeWrapper, block) + codeWrapper.appendChild(block) + } else { + codeWrapper = block.parentElement + } + // 将复制按钮添加到 pre 元素(而非 codeWrapper 内),这样它不会随滚动条滚动 + preElement.appendChild(copyButton) + } +} + +// 检查代码块是否已经被处理过 +function isBlockProcessed(block: HTMLElement): boolean { + return ( + block.hasAttribute('data-highlighted') || + !!block.querySelector('.line-number') || + !!block.parentElement?.querySelector('.copy-button') + ) +} + +// 标记代码块为已处理 +function markBlockAsProcessed(block: HTMLElement) { + block.setAttribute('data-highlighted', 'true') +} + +// 处理单个代码块 +function processBlock(block: HTMLElement) { + if (isBlockProcessed(block)) { + return + } + + try { + highlightCode(block) + insertLineNumbers(block) + addCopyButton(block) + markBlockAsProcessed(block) + } catch (error) { + console.warn('处理代码块时出错:', error) + } +} + +// 查找并处理所有代码块 +function processAllCodeBlocks(el: HTMLElement) { + const blocks = Array.from(el.querySelectorAll('pre code')) + const unprocessedBlocks = blocks.filter((block) => !isBlockProcessed(block)) + + if (unprocessedBlocks.length === 0) { + return + } + + if (unprocessedBlocks.length <= 10) { + // 如果代码块数量少于等于10,直接处理所有代码块 + unprocessedBlocks.forEach((block) => processBlock(block)) + } else { + // 定义每次处理的代码块数 + const batchSize = 10 + let currentIndex = 0 + + const processBatch = () => { + const batch = unprocessedBlocks.slice(currentIndex, currentIndex + batchSize) + + batch.forEach((block) => { + processBlock(block) + }) + + // 更新索引并继续处理下一批 + currentIndex += batchSize + if (currentIndex < unprocessedBlocks.length) { + // 使用 requestAnimationFrame 确保下一帧再处理 + requestAnimationFrame(processBatch) + } + } + + // 开始处理第一批代码块 + processBatch() + } +} + +// 重试处理函数 +function retryProcessing(el: HTMLElement, maxRetries: number = 3, delay: number = 200) { + let retryCount = 0 + + const tryProcess = () => { + processAllCodeBlocks(el) + + // 检查是否还有未处理的代码块 + const remainingBlocks = Array.from(el.querySelectorAll('pre code')).filter( + (block) => !isBlockProcessed(block) + ) + + if (remainingBlocks.length > 0 && retryCount < maxRetries) { + retryCount++ + setTimeout(tryProcess, delay * retryCount) // 递增延迟 + } + } + + tryProcess() +} + +// 代码高亮、插入行号、复制按钮 +const highlightDirective: HighlightDirective = { + mounted(el: HTMLElement) { + // 立即尝试处理一次 + processAllCodeBlocks(el) + + // 延迟处理,确保 v-html 内容已经渲染 + setTimeout(() => { + retryProcessing(el) + }, 100) + + // 使用 MutationObserver 监听 DOM 变化 + const observer = new MutationObserver((mutations) => { + let hasNewCodeBlocks = false + + mutations.forEach((mutation) => { + if (mutation.type === 'childList') { + mutation.addedNodes.forEach((node) => { + if (node.nodeType === Node.ELEMENT_NODE) { + const element = node as HTMLElement + // 检查新添加的节点是否包含代码块 + if (element.tagName === 'PRE' || element.querySelector('pre code')) { + hasNewCodeBlocks = true + } + } + }) + } + }) + + if (hasNewCodeBlocks) { + // 延迟处理新添加的代码块 + setTimeout(() => { + processAllCodeBlocks(el) + }, 50) + } + }) + + // 开始观察 + observer.observe(el, { + childList: true, + subtree: true + }) + + // 将 observer 存储到元素上,以便在 unmounted 时清理 + ;(el as any)._highlightObserver = observer + }, + + updated(el: HTMLElement) { + // 当组件更新时,重新处理代码块 + setTimeout(() => { + processAllCodeBlocks(el) + }, 50) + }, + + unmounted(el: HTMLElement) { + // 清理 MutationObserver + const observer = (el as any)._highlightObserver + if (observer) { + observer.disconnect() + delete (el as any)._highlightObserver + } + } +} + +export function setupHighlightDirective(app: App) { + app.directive('highlight', highlightDirective) +} diff --git a/web-admin/src/directives/business/ripple.ts b/web-admin/src/directives/business/ripple.ts new file mode 100644 index 00000000..e65470e2 --- /dev/null +++ b/web-admin/src/directives/business/ripple.ts @@ -0,0 +1,116 @@ +/** + * v-ripple 水波纹效果指令 + * + * 为元素添加 Material Design 风格的水波纹点击效果。 + * 点击时从点击位置扩散出圆形水波纹动画,提升交互体验。 + * + * ## 主要功能 + * + * - 水波纹动画 - 点击时从点击位置扩散圆形波纹 + * - 自适应大小 - 根据元素尺寸自动调整波纹大小和动画时长 + * - 智能配色 - 自动识别按钮类型,使用合适的波纹颜色 + * - 自定义颜色 - 支持通过参数自定义波纹颜色 + * - 性能优化 - 使用 requestAnimationFrame 和自动清理机制 + * + * ## 使用示例 + * + * ```vue + * + * ``` + * + * ## 颜色规则 + * + * - 有色按钮(primary、success、warning 等):使用白色半透明波纹 + * - 默认按钮:使用主题色半透明波纹 + * - 自定义:通过 color 参数指定任意颜色 + * + * @module directives/ripple + * @author Art Design Pro Team + */ + +import type { App, Directive, DirectiveBinding } from 'vue' + +export interface RippleOptions { + /** 水波纹颜色 */ + color?: string +} + +export type RippleDirective = Directive + +export const vRipple: RippleDirective = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + // 获取指令的配置参数 + const options: RippleOptions = binding.value || {} + + // 设置元素为相对定位,并隐藏溢出部分 + el.style.position = 'relative' + el.style.overflow = 'hidden' + + // 点击事件处理 + el.addEventListener('mousedown', (e: MouseEvent) => { + const rect = el.getBoundingClientRect() + const left = e.clientX - rect.left + const top = e.clientY - rect.top + + // 创建水波纹元素 + const ripple = document.createElement('div') + const diameter = Math.max(el.clientWidth, el.clientHeight) + const radius = diameter / 2 + + // 根据直径计算动画时间(直径越大,动画时间越长) + const baseTime = 600 // 基础动画时间(毫秒) + const scaleFactor = 0.5 // 缩放因子 + const animationDuration = baseTime + diameter * scaleFactor + + // 设置水波纹的尺寸和位置 + ripple.style.width = ripple.style.height = `${diameter}px` + ripple.style.left = `${left - radius}px` + ripple.style.top = `${top - radius}px` + ripple.style.position = 'absolute' + ripple.style.borderRadius = '50%' + ripple.style.pointerEvents = 'none' + + // 判断是否为有色按钮(Element Plus 按钮类型) + const buttonTypes = ['primary', 'info', 'warning', 'danger', 'success'].map( + (type) => `el-button--${type}` + ) + const isColoredButton = buttonTypes.some((type) => el.classList.contains(type)) + const defaultColor = isColoredButton + ? 'rgba(255, 255, 255, 0.25)' // 有色按钮使用白色水波纹 + : 'var(--el-color-primary-light-7)' // 默认按钮使用主题色水波纹 + + // 设置水波纹颜色、初始状态和过渡效果 + ripple.style.backgroundColor = options.color || defaultColor + ripple.style.transform = 'scale(0)' + ripple.style.transition = `transform ${animationDuration}ms cubic-bezier(0.3, 0, 0.2, 1), opacity ${animationDuration}ms cubic-bezier(0.3, 0, 0.5, 1)` + ripple.style.zIndex = '1' + + // 添加水波纹元素到DOM中 + el.appendChild(ripple) + + // 触发动画 + requestAnimationFrame(() => { + ripple.style.transform = 'scale(2)' + ripple.style.opacity = '0' + }) + + // 动画结束后移除水波纹元素 + setTimeout(() => { + ripple.remove() + }, animationDuration + 500) // 增加500ms缓冲时间 + }) + } +} + +export function setupRippleDirective(app: App) { + app.directive('ripple', vRipple) +} diff --git a/web-admin/src/directives/core/auth.ts b/web-admin/src/directives/core/auth.ts new file mode 100755 index 00000000..3d244c7c --- /dev/null +++ b/web-admin/src/directives/core/auth.ts @@ -0,0 +1,66 @@ +/** + * v-auth 权限指令 + * + * 适用于后端权限控制模式,基于权限标识控制 DOM 元素的显示和隐藏。 + * 如果用户没有对应权限,元素将从 DOM 中移除。 + * + * ## 主要功能 + * + * - 权限验证 - 根据路由 meta 中的权限列表验证用户权限 + * - DOM 控制 - 无权限时自动移除元素,而非隐藏 + * - 响应式更新 - 权限变化时自动更新元素状态 + * + * ## 使用示例 + * + * ```vue + * + * 新增 + * + * + * 编辑 + * + * + * 删除 + * ``` + * + * ## 注意事项 + * + * - 该指令会直接移除 DOM 元素,而不是使用 v-if 隐藏 + * - 权限列表从当前路由的 meta.authList 中获取 + * + * @module directives/auth + * @author Art Design Pro Team + */ + +import { router } from '@/router' +import { App, Directive, DirectiveBinding } from 'vue' + +export type AuthDirective = Directive + +function checkAuthPermission(el: HTMLElement, binding: DirectiveBinding): void { + // 获取当前路由的权限列表 + const authList = (router.currentRoute.value.meta.authList as Array<{ authMark: string }>) || [] + + // 检查是否有对应的权限标识 + const hasPermission = authList.some((item) => item.authMark === binding.value) + + // 如果没有权限,移除元素 + if (!hasPermission) { + removeElement(el) + } +} + +function removeElement(el: HTMLElement): void { + if (el.parentNode) { + el.parentNode.removeChild(el) + } +} + +const authDirective: AuthDirective = { + mounted: checkAuthPermission, + updated: checkAuthPermission +} + +export function setupAuthDirective(app: App): void { + app.directive('auth', authDirective) +} diff --git a/web-admin/src/directives/core/roles.ts b/web-admin/src/directives/core/roles.ts new file mode 100644 index 00000000..f1db35bb --- /dev/null +++ b/web-admin/src/directives/core/roles.ts @@ -0,0 +1,87 @@ +/** + * v-roles 角色权限指令 + * + * 基于用户角色控制 DOM 元素的显示和隐藏。 + * 只要用户拥有指定角色中的任意一个,元素就会显示,否则从 DOM 中移除。 + * + * ## 主要功能 + * + * - 角色验证 - 检查用户是否拥有指定角色 + * - 多角色支持 - 支持单个角色或多个角色(满足其一即可) + * - DOM 控制 - 无权限时自动移除元素,而非隐藏 + * - 响应式更新 - 角色变化时自动更新元素状态 + * + * ## 使用示例 + * + * ```vue + * + * ``` + * + * ## 权限逻辑 + * + * - 用户角色从 userStore.getUserInfo.roles 获取 + * - 只要用户拥有指定角色中的任意一个,元素就会显示 + * - 如果用户没有任何角色或不满足条件,元素将被移除 + * + * ## 注意事项 + * + * - 该指令会直接移除 DOM 元素,而不是使用 v-if 隐藏 + * - 适用于基于角色的粗粒度权限控制 + * - 如需基于具体操作的细粒度权限控制,请使用 v-auth 指令 + * + * @module directives/roles + * @author Art Design Pro Team + */ + +import { useUserStore } from '@/store/modules/user' +import { App, Directive, DirectiveBinding } from 'vue' + +export type RolesDirective = Directive + +function checkRolePermission(el: HTMLElement, binding: DirectiveBinding): void { + const userStore = useUserStore() + const userRoles = userStore.getUserInfo.roles + + // 如果用户角色为空或未定义,移除元素 + if (!userRoles?.length) { + removeElement(el) + return + } + + // 确保指令值为数组格式 + const requiredRoles = Array.isArray(binding.value) ? binding.value : [binding.value] + + // 检查用户是否具有所需角色之一 + const hasPermission = requiredRoles.some((role: string) => userRoles.includes(role)) + + // 如果没有权限,安全地移除元素 + if (!hasPermission) { + removeElement(el) + } +} + +function removeElement(el: HTMLElement): void { + if (el.parentNode) { + el.parentNode.removeChild(el) + } +} + +const rolesDirective: RolesDirective = { + mounted: checkRolePermission, + updated: checkRolePermission +} + +export function setupRolesDirective(app: App): void { + app.directive('roles', rolesDirective) +} diff --git a/web-admin/src/directives/index.ts b/web-admin/src/directives/index.ts new file mode 100755 index 00000000..b428a2b1 --- /dev/null +++ b/web-admin/src/directives/index.ts @@ -0,0 +1,14 @@ +import type { App } from 'vue' +import { setupAuthDirective, type AuthDirective } from './core/auth' +import { setupHighlightDirective, type HighlightDirective } from './business/highlight' +import { setupRippleDirective, type RippleDirective } from './business/ripple' +import { setupRolesDirective, type RolesDirective } from './core/roles' + +export function setupGlobDirectives(app: App) { + setupAuthDirective(app) // 权限指令 + setupRolesDirective(app) // 角色权限指令 + setupHighlightDirective(app) // 高亮指令 + setupRippleDirective(app) // 水波纹指令 +} + +export type { AuthDirective, HighlightDirective, RippleDirective, RolesDirective } diff --git a/web-admin/src/enums/appEnum.ts b/web-admin/src/enums/appEnum.ts new file mode 100755 index 00000000..a39c278a --- /dev/null +++ b/web-admin/src/enums/appEnum.ts @@ -0,0 +1,81 @@ +/** + * 系统级别枚举定义模块 + * + * ## 主要功能 + * + * - 菜单类型枚举(左侧、顶部、混合、双栏) + * - 主题类型枚举(亮色、暗色、自动) + * - 菜单主题枚举(设计、亮色、暗色) + * - 语言类型枚举(中文、英文) + * - 容器宽度枚举(全屏、固定) + * - 菜单宽度枚举(收起宽度) + * + * @module enums/appEnum + * @author Art Design Pro Team + */ + +/** + * 菜单类型 + */ +export enum MenuTypeEnum { + /** 左侧菜单 */ + LEFT = 'left', + /** 顶部菜单 */ + TOP = 'top', + /** 顶部+左侧菜单 */ + TOP_LEFT = 'top-left', + /** 双栏菜单 */ + DUAL_MENU = 'dual-menu' +} + +/** + * 系统主题 + */ +export enum SystemThemeEnum { + /** 暗色主题 */ + DARK = 'dark', + /** 亮色主题 */ + LIGHT = 'light', + /** 自动主题(跟随系统) */ + AUTO = 'auto' +} + +/** + * 菜单主题 + */ +export enum MenuThemeEnum { + /** 暗色主题 */ + DARK = 'dark', + /** 亮色主题 */ + LIGHT = 'light', + /** 设计主题 */ + DESIGN = 'design' +} + +/** + * 菜单宽度 + */ +export enum MenuWidth { + /** 收起宽度 */ + CLOSE = '64px' +} + +/** + * 语言类型 + */ +export enum LanguageEnum { + /** 中文 */ + ZH = 'zh', + /** 英文 */ + EN = 'en' +} + +/** + * 容器宽度 + */ +export enum ContainerWidthEnum { + /** 全屏宽度 */ + FULL = '100%', + /** 固定宽度 */ + BOXED = '1200px' +} diff --git a/web-admin/src/enums/formEnum.ts b/web-admin/src/enums/formEnum.ts new file mode 100644 index 00000000..8e9b3b45 --- /dev/null +++ b/web-admin/src/enums/formEnum.ts @@ -0,0 +1,24 @@ +/** + * 表单相关枚举定义模块 + * + * ## 主要功能 + * + * - 页面模式枚举(新增、编辑) + * - 表格尺寸枚举(默认、紧凑、宽松) + * + * @module enums/formEnum + * @author Art Design Pro Team + */ + +// 页面类型 +export enum PageModeEnum { + Add, // 新增 + Edit // 编辑 +} + +// 表格大小 +export enum TableSizeEnum { + DEFAULT = 'default', + SMALL = 'small', + LARGE = 'large' +} diff --git a/web-admin/src/env.d.ts b/web-admin/src/env.d.ts new file mode 100755 index 00000000..4401f21f --- /dev/null +++ b/web-admin/src/env.d.ts @@ -0,0 +1,34 @@ +/// + +declare module 'nprogress' + +declare module 'crypto-js' + +declare module 'vue-img-cutter' + +declare module 'file-saver' + +declare module 'qrcode.vue' { + export type Level = 'L' | 'M' | 'Q' | 'H' + export type RenderAs = 'canvas' | 'svg' + export type GradientType = 'linear' | 'radial' + export interface ImageSettings { + src: string + height: number + width: number + excavate: boolean + } + export interface QRCodeProps { + value: string + size?: number + level?: Level + background?: string + foreground?: string + renderAs?: RenderAs + } + const QrcodeVue: any + export default QrcodeVue +} + +// 全局变量声明 +declare const __APP_VERSION__: string // 版本号 diff --git a/web-admin/src/hooks/core/useAppMode.ts b/web-admin/src/hooks/core/useAppMode.ts new file mode 100644 index 00000000..c39cd9e7 --- /dev/null +++ b/web-admin/src/hooks/core/useAppMode.ts @@ -0,0 +1,45 @@ +/** + * useAppMode - 应用模式管理 + * + * 提供应用访问模式的判断和管理功能,支持前端和后端两种权限控制模式。 + * 根据环境变量 VITE_ACCESS_MODE 自动识别当前运行模式。 + * + * ## 主要功能 + * + * 1. 模式识别 - 自动识别前端模式或后端模式 + * 2. 前端模式 - 权限由前端路由配置控制,适合小型项目或演示环境 + * 3. 后端模式 - 权限由后端接口返回的菜单数据控制,适合企业级应用 + * 4. 响应式状态 - 提供响应式的模式判断,方便在组件中使用 + * + * @module useAppMode + * @author Art Design Pro Team + */ + +import { computed } from 'vue' + +export function useAppMode() { + // 获取访问模式配置 + const accessMode = import.meta.env.VITE_ACCESS_MODE + + /** + * 是否为前端控制模式 + * 前端模式:权限由前端路由配置控制 + */ + const isFrontendMode = computed(() => accessMode === 'frontend') + /** + * 是否为后端控制模式 + * 后端模式:权限由后端接口返回的菜单数据控制 + */ + const isBackendMode = computed(() => accessMode === 'backend') + + /** + * 当前应用模式 + */ + const currentMode = computed(() => accessMode) + + return { + isFrontendMode, + isBackendMode, + currentMode + } +} diff --git a/web-admin/src/hooks/core/useAuth.ts b/web-admin/src/hooks/core/useAuth.ts new file mode 100644 index 00000000..283b859e --- /dev/null +++ b/web-admin/src/hooks/core/useAuth.ts @@ -0,0 +1,74 @@ +/** + * useAuth - 权限验证管理 + * + * 提供统一的权限验证功能,支持前端和后端两种权限模式。 + * 用于控制页面按钮、操作等功能的显示和访问权限。 + * + * ## 主要功能 + * + * 1. 权限检查 - 检查用户是否拥有指定的权限标识 + * 2. 双模式支持 - 自动适配前端模式和后端模式的权限验证 + * 3. 前端模式 - 从用户信息中获取按钮权限列表(如 ['add', 'edit', 'delete']) + * 4. 后端模式 - 从路由 meta 配置中获取权限列表(如 [{ authMark: 'add' }]) + * + * ## 使用示例 + * + * ```typescript + * const { hasAuth } = useAuth() + * + * // 检查是否有新增权限 + * if (hasAuth('add')) { + * // 显示新增按钮 + * } + * + * // 在模板中使用 + * 编辑 + * 删除 + * ``` + * + * @module useAuth + * @author Art Design Pro Team + */ + +import { useRoute } from 'vue-router' +import { storeToRefs } from 'pinia' +import { useUserStore } from '@/store/modules/user' +import { useAppMode } from '@/hooks/core/useAppMode' +import type { AppRouteRecord } from '@/types/router' + +type AuthItem = NonNullable[number] + +const userStore = useUserStore() + +export const useAuth = () => { + const route = useRoute() + const { isFrontendMode } = useAppMode() + const { info } = storeToRefs(userStore) + + // 前端按钮权限(例如:['add', 'edit']) + const frontendAuthList = info.value?.buttons ?? [] + + // 后端路由 meta 配置的权限列表(例如:[{ authMark: 'add' }]) + const backendAuthList: AuthItem[] = Array.isArray(route.meta.authList) + ? (route.meta.authList as AuthItem[]) + : [] + + /** + * 检查是否拥有某权限标识(前后端模式通用) + * @param auth 权限标识 + * @returns 是否有权限 + */ + const hasAuth = (auth: string): boolean => { + // 前端模式 + if (isFrontendMode.value) { + return frontendAuthList.includes(auth) + } + + // 后端模式 + return backendAuthList.some((item) => item?.authMark === auth) + } + + return { + hasAuth + } +} diff --git a/web-admin/src/hooks/core/useCeremony.ts b/web-admin/src/hooks/core/useCeremony.ts new file mode 100644 index 00000000..ead26302 --- /dev/null +++ b/web-admin/src/hooks/core/useCeremony.ts @@ -0,0 +1,184 @@ +/** + * useCeremony - 节日庆祝管理 + * + * 提供节日烟花效果和祝福文本展示功能,为系统增添节日氛围。 + * 自动检测当前日期是否为节日,并在首次进入时播放烟花动画和显示祝福语。 + * + * ## 主要功能 + * + * 1. 节日检测 - 自动匹配当前日期与节日配置列表,支持单日和跨日期节日 + * 2. 烟花动画 - 播放节日烟花特效,支持自定义图片和触发次数 + * 3. 祝福文本 - 烟花结束后显示节日祝福文本 + * 4. 状态管理 - 记录烟花播放状态,避免重复播放 + * 5. 清理机制 - 提供清理方法,支持手动停止和重置 + * + * ## 使用示例 + * + * ```typescript + * // 在配置文件中定义节日 + * // 单日节日 + * { + * date: '2024-12-25', + * name: '圣诞节', + * image: christmasImage, + * count: 3 // 可选,不设置则使用默认值 3 次 + * scrollText: 'Merry Christmas!', + * } + * + * // 跨日期节日 + * { + * date: '2025-11-07', + * endDate: '2025-11-10', + * name: 'v3.0 测试阶段', + * image: '', + * count: 5 // 自定义烟花播放次数 + * scrollText: '系统 v3.0 测试阶段正式开启!', + * } + * ``` + * + * @module useCeremony + * @author Art Design Pro Team + */ + +import { useTimeoutFn, useIntervalFn, useDateFormat } from '@vueuse/core' +import { storeToRefs } from 'pinia' +import { computed } from 'vue' +import { useSettingStore } from '@/store/modules/setting' +import { mittBus } from '@/utils/sys' +import { festivalConfigList } from '@/config/modules/festival' + +/** + * 节日庆祝配置常量 + */ +const FESTIVAL_CONFIG = { + /** 初始延迟(毫秒) */ + INITIAL_DELAY: 300, + /** 烟花播放间隔(毫秒) */ + FIREWORK_INTERVAL: 1000, + /** 文本显示延迟(毫秒) */ + TEXT_DELAY: 2000, + /** 默认烟花播放次数 */ + DEFAULT_FIREWORKS_COUNT: 3 +} as const + +/** + * 节日庆祝功能 + * 提供节日烟花效果和祝福文本展示 + */ +export function useCeremony() { + const settingStore = useSettingStore() + const { holidayFireworksLoaded, isShowFireworks } = storeToRefs(settingStore) + + let fireworksInterval: { pause: () => void } | null = null + + /** + * 检查日期是否在节日范围内 + * @param currentDate 当前日期 + * @param festivalDate 节日开始日期 + * @param festivalEndDate 节日结束日期(可选) + */ + const isDateInRange = ( + currentDate: string, + festivalDate: string, + festivalEndDate?: string + ): boolean => { + if (!festivalEndDate) { + // 单日节日 + return currentDate === festivalDate + } + + // 跨日期节日 + const current = new Date(currentDate) + const start = new Date(festivalDate) + const end = new Date(festivalEndDate) + + return current >= start && current <= end + } + + /** + * 获取当前日期对应的节日数据 + */ + const currentFestivalData = computed(() => { + const currentDate = useDateFormat(new Date(), 'YYYY-MM-DD').value + return festivalConfigList.find((item) => isDateInRange(currentDate, item.date, item.endDate)) + }) + + /** + * 更新节日日期到 store + */ + const updateFestivalDate = () => { + settingStore.setFestivalDate(currentFestivalData.value?.date || '') + } + + /** + * 触发烟花效果 + */ + const triggerFirework = () => { + mittBus.emit('triggerFireworks', currentFestivalData.value?.image) + } + + /** + * 完成烟花效果后显示文本 + */ + const showFestivalText = () => { + settingStore.setholidayFireworksLoaded(true) + + useTimeoutFn(() => { + settingStore.setShowFestivalText(true) + updateFestivalDate() + }, FESTIVAL_CONFIG.TEXT_DELAY) + } + + /** + * 启动烟花循环 + */ + const startFireworksLoop = () => { + let playedCount = 0 + // 使用节日配置的播放次数,如果没有则使用默认值 + const count = currentFestivalData.value?.count ?? FESTIVAL_CONFIG.DEFAULT_FIREWORKS_COUNT + + const { pause } = useIntervalFn(() => { + triggerFirework() + playedCount++ + + if (playedCount >= count) { + pause() + showFestivalText() + } + }, FESTIVAL_CONFIG.FIREWORK_INTERVAL) + + fireworksInterval = { pause } + } + + /** + * 开启节日庆祝 + */ + const openFestival = () => { + if (!currentFestivalData.value || !isShowFireworks.value) { + return + } + + const { start } = useTimeoutFn(startFireworksLoop, FESTIVAL_CONFIG.INITIAL_DELAY) + start() + } + + /** + * 清理烟花效果 + */ + const cleanup = () => { + if (fireworksInterval) { + fireworksInterval.pause() + fireworksInterval = null + } + settingStore.setShowFestivalText(false) + updateFestivalDate() + } + + return { + openFestival, + cleanup, + holidayFireworksLoaded, + currentFestivalData, + isShowFireworks + } +} diff --git a/web-admin/src/hooks/core/useChart.ts b/web-admin/src/hooks/core/useChart.ts new file mode 100644 index 00000000..29ba1d10 --- /dev/null +++ b/web-admin/src/hooks/core/useChart.ts @@ -0,0 +1,745 @@ +/** + * useChart - ECharts 图表管理 + * + * 提供完整的 ECharts 图表生命周期管理和配置能力,简化图表开发流程。 + * 自动处理图表初始化、更新、销毁、主题切换、响应式调整等复杂逻辑。 + * + * ## 核心功能 + * + * 1. 图表生命周期管理 - 自动处理初始化、更新、销毁,支持延迟加载和可见性检测 + * 2. 主题自动适配 - 响应系统主题变化,自动更新图表样式和配色 + * 3. 响应式调整 - 监听窗口大小、菜单展开等变化,自动调整图表尺寸 + * 4. 空状态处理 - 优雅的空数据展示,自动显示"暂无数据"提示 + * 5. 样式配置统一 - 提供坐标轴、图例、提示框等统一的样式配置方法 + * 6. 性能优化 - 防抖处理、样式缓存、requestAnimationFrame 优化 + * 7. 高级组件抽象 - useChartComponent 提供更高层次的图表组件封装 + * + * ## 使用示例 + * + * ```typescript + * // 基础用法 + * const { + * chartRef, + * initChart, + * updateChart, + * getAxisLineStyle, + * getTooltipStyle + * } = useChart() + * + * onMounted(() => { + * initChart({ + * xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed'] }, + * yAxis: { type: 'value' }, + * series: [{ data: [120, 200, 150], type: 'bar' }] + * }) + * }) + * + * // 高级用法 - 组件抽象 + * const chart = useChartComponent({ + * props, + * generateOptions: () => ({ + * // ECharts 配置 + * }), + * checkEmpty: () => data.value.length === 0, + * watchSources: [() => props.data] + * }) + * ``` + * + * @module useChart + * @author Art Design Pro Team + */ + +import { echarts, type EChartsOption } from '@/plugins/echarts' +import { storeToRefs } from 'pinia' +import { useSettingStore } from '@/store/modules/setting' +import { getCssVar } from '@/utils/ui' +import type { BaseChartProps, ChartThemeConfig, UseChartOptions } from '@/types/component/chart' + +// 图表主题配置 +export const useChartOps = (): ChartThemeConfig => ({ + /** */ + chartHeight: '16rem', + /** 字体大小 */ + fontSize: 13, + /** 字体颜色 */ + fontColor: '#999', + /** 主题颜色 */ + themeColor: getCssVar('--el-color-primary-light-1'), + /** 颜色组 */ + colors: [ + getCssVar('--el-color-primary-light-1'), + '#4ABEFF', + '#EDF2FF', + '#14DEBA', + '#FFAF20', + '#FA8A6C', + '#FFAF20' + ] +}) + +// 常量定义 +const RESIZE_DELAYS = [50, 100, 200, 350] as const +const MENU_RESIZE_DELAYS = [50, 100, 200] as const +const RESIZE_DEBOUNCE_DELAY = 100 + +export function useChart(options: UseChartOptions = {}) { + const { initOptions, initDelay = 0, threshold = 0.1, autoTheme = true } = options + + const settingStore = useSettingStore() + const { isDark, menuOpen, menuType } = storeToRefs(settingStore) + + const chartRef = ref() + let chart: echarts.ECharts | null = null + let intersectionObserver: IntersectionObserver | null = null + let pendingOptions: EChartsOption | null = null + let resizeTimeoutId: number | null = null + let resizeFrameId: number | null = null + let isDestroyed = false + let emptyStateDiv: HTMLElement | null = null + + // 清理定时器的统一方法 + const clearTimers = () => { + if (resizeTimeoutId) { + clearTimeout(resizeTimeoutId) + resizeTimeoutId = null + } + if (resizeFrameId) { + cancelAnimationFrame(resizeFrameId) + resizeFrameId = null + } + } + + // 使用 requestAnimationFrame 优化 resize 处理 + const requestAnimationResize = () => { + if (resizeFrameId) { + cancelAnimationFrame(resizeFrameId) + } + resizeFrameId = requestAnimationFrame(() => { + handleResize() + resizeFrameId = null + }) + } + + // 防抖的resize处理(用于窗口resize事件) + const debouncedResize = () => { + if (resizeTimeoutId) { + clearTimeout(resizeTimeoutId) + } + resizeTimeoutId = window.setTimeout(() => { + requestAnimationResize() + resizeTimeoutId = null + }, RESIZE_DEBOUNCE_DELAY) + } + + // 多延迟resize处理 - 统一方法 + const multiDelayResize = (delays: readonly number[]) => { + // 立即调用一次,快速响应 + nextTick(requestAnimationResize) + + // 使用延迟时间,确保图表正确适应变化 + delays.forEach((delay) => { + setTimeout(requestAnimationResize, delay) + }) + } + + // 收缩菜单时,重新计算图表大小(仅在图表存在时监听) + let menuOpenStopHandle: (() => void) | null = null + let menuTypeStopHandle: (() => void) | null = null + + const setupMenuWatchers = () => { + menuOpenStopHandle = watch(menuOpen, () => multiDelayResize(RESIZE_DELAYS)) + menuTypeStopHandle = watch(menuType, () => { + nextTick(requestAnimationResize) + setTimeout(() => multiDelayResize(MENU_RESIZE_DELAYS), 0) + }) + } + + const cleanupMenuWatchers = () => { + menuOpenStopHandle?.() + menuTypeStopHandle?.() + menuOpenStopHandle = null + menuTypeStopHandle = null + } + + // 主题变化时重新设置图表选项 + let themeStopHandle: (() => void) | null = null + + const setupThemeWatcher = () => { + if (autoTheme) { + themeStopHandle = watch(isDark, () => { + // 更新空状态样式 + emptyStateManager.updateStyle() + + if (chart && !isDestroyed) { + // 使用 requestAnimationFrame 优化主题更新 + requestAnimationFrame(() => { + if (chart && !isDestroyed) { + const currentOptions = chart.getOption() + if (currentOptions) { + updateChart(currentOptions as EChartsOption) + } + } + }) + } + }) + } + } + + const cleanupThemeWatcher = () => { + themeStopHandle?.() + themeStopHandle = null + } + + // 样式生成器 - 统一的样式配置 + const createLineStyle = (color: string, width = 1, type?: 'solid' | 'dashed') => ({ + color, + width, + ...(type && { type }) + }) + + // 缓存样式配置以减少重复计算 + const styleCache = { + axisLine: null as any, + splitLine: null as any, + axisLabel: null as any, + lastDarkValue: isDark.value + } + + const clearStyleCache = () => { + styleCache.axisLine = null + styleCache.splitLine = null + styleCache.axisLabel = null + styleCache.lastDarkValue = isDark.value + } + + // 坐标轴线样式 + const getAxisLineStyle = (show: boolean = true) => { + if (styleCache.lastDarkValue !== isDark.value) { + clearStyleCache() + } + if (!styleCache.axisLine) { + styleCache.axisLine = { + show, + lineStyle: createLineStyle(isDark.value ? '#444' : '#EDEDED') + } + } + return styleCache.axisLine + } + + // 分割线样式 + const getSplitLineStyle = (show: boolean = true) => { + if (styleCache.lastDarkValue !== isDark.value) { + clearStyleCache() + } + if (!styleCache.splitLine) { + styleCache.splitLine = { + show, + lineStyle: createLineStyle(isDark.value ? '#444' : '#EDEDED', 1, 'dashed') + } + } + return styleCache.splitLine + } + + // 坐标轴标签样式 + const getAxisLabelStyle = (show: boolean = true) => { + if (styleCache.lastDarkValue !== isDark.value) { + clearStyleCache() + } + if (!styleCache.axisLabel) { + const { fontColor, fontSize } = useChartOps() + styleCache.axisLabel = { + show, + color: fontColor, + fontSize + } + } + return styleCache.axisLabel + } + + // 坐标轴刻度样式(静态配置,无需缓存) + const getAxisTickStyle = () => ({ + show: false + }) + + // 获取动画配置 + const getAnimationConfig = (animationDelay: number = 50, animationDuration: number = 1500) => ({ + animationDelay: (idx: number) => idx * animationDelay + 200, + animationDuration: (idx: number) => animationDuration - idx * 50, + animationEasing: 'quarticOut' as const + }) + + // 获取统一的 tooltip 配置 + const getTooltipStyle = (trigger: 'item' | 'axis' = 'axis', customOptions: any = {}) => ({ + trigger, + backgroundColor: isDark.value ? 'rgba(0, 0, 0, 0.8)' : 'rgba(255, 255, 255, 0.9)', + borderColor: isDark.value ? '#333' : '#ddd', + borderWidth: 1, + textStyle: { + color: isDark.value ? '#fff' : '#333' + }, + ...customOptions + }) + + // 获取统一的图例配置 + const getLegendStyle = ( + position: 'bottom' | 'top' | 'left' | 'right' = 'bottom', + customOptions: any = {} + ) => { + const baseConfig = { + textStyle: { + color: isDark.value ? '#fff' : '#333' + }, + itemWidth: 12, + itemHeight: 12, + itemGap: 20, + ...customOptions + } + + // 根据位置设置不同的配置 + switch (position) { + case 'bottom': + return { + ...baseConfig, + bottom: 0, + left: 'center', + orient: 'horizontal', + icon: 'roundRect' + } + case 'top': + return { + ...baseConfig, + top: 0, + left: 'center', + orient: 'horizontal', + icon: 'roundRect' + } + case 'left': + return { + ...baseConfig, + left: 0, + top: 'center', + orient: 'vertical', + icon: 'roundRect' + } + case 'right': + return { + ...baseConfig, + right: 0, + top: 'center', + orient: 'vertical', + icon: 'roundRect' + } + default: + return baseConfig + } + } + + // 根据图例位置计算 grid 配置 + const getGridWithLegend = ( + showLegend: boolean, + legendPosition: 'bottom' | 'top' | 'left' | 'right' = 'bottom', + baseGrid: any = {} + ) => { + const defaultGrid = { + top: 15, + right: 15, + bottom: 8, + left: 0, + containLabel: true, + ...baseGrid + } + + if (!showLegend) { + return defaultGrid + } + + // 根据图例位置调整 grid + switch (legendPosition) { + case 'bottom': + return { + ...defaultGrid, + bottom: 40 + } + case 'top': + return { + ...defaultGrid, + top: 40 + } + case 'left': + return { + ...defaultGrid, + left: 120 + } + case 'right': + return { + ...defaultGrid, + right: 120 + } + default: + return defaultGrid + } + } + + // 创建IntersectionObserver + const createIntersectionObserver = () => { + if (intersectionObserver || !chartRef.value) return + + intersectionObserver = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting && pendingOptions && !isDestroyed) { + // 使用 requestAnimationFrame 确保在下一帧初始化图表 + requestAnimationFrame(() => { + if (!isDestroyed && pendingOptions) { + try { + // 元素变为可见,初始化图表 + if (!chart) { + chart = echarts.init(entry.target as HTMLElement) + } + + // 触发自定义事件,让组件处理动画逻辑 + const event = new CustomEvent('chartVisible', { + detail: { options: pendingOptions } + }) + entry.target.dispatchEvent(event) + + pendingOptions = null + cleanupIntersectionObserver() + } catch (error) { + console.error('图表初始化失败:', error) + } + } + }) + } + }) + }, + { threshold } + ) + + intersectionObserver.observe(chartRef.value) + } + + // 清理IntersectionObserver + const cleanupIntersectionObserver = () => { + if (intersectionObserver) { + intersectionObserver.disconnect() + intersectionObserver = null + } + } + + // 检查容器是否可见 + const isContainerVisible = (element: HTMLElement): boolean => { + const rect = element.getBoundingClientRect() + return rect.width > 0 && rect.height > 0 && rect.top < window.innerHeight && rect.bottom > 0 + } + + // 图表初始化核心逻辑 + const performChartInit = (options: EChartsOption) => { + if (!chart && chartRef.value && !isDestroyed) { + chart = echarts.init(chartRef.value) + // 图表创建后立即设置监听器 + setupMenuWatchers() + setupThemeWatcher() + } + if (chart && !isDestroyed) { + chart.setOption(options) + pendingOptions = null + } + } + + // 空状态管理器 + const emptyStateManager = { + create: () => { + if (!chartRef.value || emptyStateDiv) return + + emptyStateDiv = document.createElement('div') + emptyStateDiv.style.cssText = ` + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 12px; + color: ${isDark.value ? '#555555' : '#B3B2B2'}; + background: transparent; + z-index: 10; + ` + emptyStateDiv.innerHTML = `暂无数据` + + // 确保父容器有相对定位 + if ( + chartRef.value.style.position !== 'relative' && + chartRef.value.style.position !== 'absolute' + ) { + chartRef.value.style.position = 'relative' + } + + chartRef.value.appendChild(emptyStateDiv) + }, + + remove: () => { + if (emptyStateDiv && chartRef.value) { + chartRef.value.removeChild(emptyStateDiv) + emptyStateDiv = null + } + }, + + updateStyle: () => { + if (emptyStateDiv) { + emptyStateDiv.style.color = isDark.value ? '#666' : '#999' + } + } + } + + // 初始化图表 + const initChart = (options: EChartsOption = {}, isEmpty: boolean = false) => { + if (!chartRef.value || isDestroyed) return + + const mergedOptions = { ...initOptions, ...options } + + try { + if (isEmpty) { + // 处理空数据情况 - 显示自定义空状态div + if (chart) { + chart.clear() + } + emptyStateManager.create() + return + } else { + // 有数据时移除空状态div + emptyStateManager.remove() + } + + if (isContainerVisible(chartRef.value)) { + // 容器可见,正常初始化 + if (initDelay > 0) { + setTimeout(() => performChartInit(mergedOptions), initDelay) + } else { + performChartInit(mergedOptions) + } + } else { + // 容器不可见,保存选项并设置监听器 + pendingOptions = mergedOptions + createIntersectionObserver() + } + } catch (error) { + console.error('图表初始化失败:', error) + } + } + + // 更新图表 + const updateChart = (options: EChartsOption) => { + if (isDestroyed) return + + try { + if (!chart) { + // 如果图表不存在,先初始化 + initChart(options) + return + } + chart.setOption(options) + } catch (error) { + console.error('图表更新失败:', error) + } + } + + // 处理窗口大小变化 + const handleResize = () => { + if (chart && !isDestroyed) { + try { + chart.resize() + } catch (error) { + console.error('图表resize失败:', error) + } + } + } + + // 销毁图表 + const destroyChart = () => { + isDestroyed = true + + if (chart) { + try { + chart.dispose() + } catch (error) { + console.error('图表销毁失败:', error) + } finally { + chart = null + } + } + + // 清理所有监听器和资源 + cleanupMenuWatchers() + cleanupThemeWatcher() + emptyStateManager.remove() + cleanupIntersectionObserver() + clearTimers() + clearStyleCache() + pendingOptions = null + } + + // 获取图表实例 + const getChartInstance = () => chart + + // 获取图表是否已初始化 + const isChartInitialized = () => chart !== null + + onMounted(() => { + window.addEventListener('resize', debouncedResize) + }) + + onBeforeUnmount(() => { + window.removeEventListener('resize', debouncedResize) + }) + + onUnmounted(() => { + destroyChart() + }) + + return { + isDark, + chartRef, + initChart, + updateChart, + handleResize, + destroyChart, + getChartInstance, + isChartInitialized, + emptyStateManager, + getAxisLineStyle, + getSplitLineStyle, + getAxisLabelStyle, + getAxisTickStyle, + getAnimationConfig, + getTooltipStyle, + getLegendStyle, + useChartOps, + getGridWithLegend + } +} + +// 高级图表组件抽象 +interface UseChartComponentOptions { + /** Props响应式对象 */ + props: T + /** 图表配置生成函数 */ + generateOptions: () => EChartsOption + /** 空数据检查函数 */ + checkEmpty?: () => boolean + /** 自定义监听的响应式数据 */ + watchSources?: (() => any)[] + /** 自定义可视事件处理 */ + onVisible?: () => void + /** useChart选项 */ + chartOptions?: UseChartOptions +} + +export function useChartComponent(options: UseChartComponentOptions) { + const { + props, + generateOptions, + checkEmpty, + watchSources = [], + onVisible, + chartOptions = {} + } = options + + const chart = useChart(chartOptions) + const { chartRef, initChart, isDark, emptyStateManager } = chart + + // 检查是否为空数据 + const isEmpty = computed(() => { + if (props.isEmpty) return true + if (checkEmpty) return checkEmpty() + return false + }) + + // 更新图表 + const updateChart = () => { + nextTick(() => { + if (isEmpty.value) { + // 处理空数据情况 - 显示自定义空状态div + if (chart.getChartInstance()) { + chart.getChartInstance()?.clear() + } + emptyStateManager.create() + } else { + // 有数据时移除空状态div并初始化图表 + emptyStateManager.remove() + initChart(generateOptions()) + } + }) + } + + // 处理图表进入可视区域时的逻辑 + const handleChartVisible = () => { + if (onVisible) { + onVisible() + } else { + updateChart() + } + } + + // 存储监听器停止函数 + const stopHandles: (() => void)[] = [] + + // 设置数据监听 + const setupWatchers = () => { + // 监听自定义数据源 + if (watchSources.length > 0) { + const stopHandle = watch(watchSources, updateChart, { deep: true }) + stopHandles.push(stopHandle) + } + + // 监听主题变化 + const themeStopHandle = watch(isDark, () => { + emptyStateManager.updateStyle() + updateChart() + }) + stopHandles.push(themeStopHandle) + } + + // 清理所有监听器 + const cleanupWatchers = () => { + stopHandles.forEach((stop) => stop()) + stopHandles.length = 0 + } + + // 设置生命周期 + const setupLifecycle = () => { + onMounted(() => { + updateChart() + + // 监听图表可见事件 + if (chartRef.value) { + chartRef.value.addEventListener('chartVisible', handleChartVisible) + } + }) + + onBeforeUnmount(() => { + // 清理事件监听器 + if (chartRef.value) { + chartRef.value.removeEventListener('chartVisible', handleChartVisible) + } + // 清理所有监听器 + cleanupWatchers() + // 清理空状态div + emptyStateManager.remove() + }) + } + + // 初始化 + setupWatchers() + setupLifecycle() + + return { + ...chart, + isEmpty, + updateChart, + handleChartVisible + } +} diff --git a/web-admin/src/hooks/core/useCommon.ts b/web-admin/src/hooks/core/useCommon.ts new file mode 100644 index 00000000..c9368543 --- /dev/null +++ b/web-admin/src/hooks/core/useCommon.ts @@ -0,0 +1,87 @@ +/** + * useCommon - 通用功能集合 + * + * 提供常用的页面操作功能,包括页面刷新、滚动控制、路径获取等。 + * 这些功能在多个页面和组件中都会用到,统一封装便于复用。 + * + * ## 主要功能 + * + * 1. 首页路径 - 获取系统配置的首页路径 + * 2. 页面刷新 - 刷新当前页面内容 + * 3. 滚动控制 - 提供多种滚动到顶部和指定位置的方法 + * 4. 平滑滚动 - 支持平滑滚动动画效果 + * + * @module useCommon + * @author Art Design Pro Team + */ + +import { computed } from 'vue' +import { useMenuStore } from '@/store/modules/menu' +import { useSettingStore } from '@/store/modules/setting' + +export function useCommon() { + const menuStore = useMenuStore() + const settingStore = useSettingStore() + + /** + * 首页路径 + * 从菜单 store 中获取配置的首页路径 + */ + const homePath = computed(() => menuStore.getHomePath()) + + /** + * 刷新当前页面 + * 通过切换 setting store 中的 refresh 状态触发页面重新渲染 + */ + const refresh = () => { + settingStore.reload() + } + + /** + * 滚动到页面顶部 + * 查找主内容区域并将其滚动位置重置为顶部 + */ + const scrollToTop = () => { + const scrollContainer = document.getElementById('app-main') + if (scrollContainer) { + scrollContainer.scrollTop = 0 + } + } + + /** + * 平滑滚动到页面顶部 + * 使用 smooth 行为实现平滑滚动效果 + */ + const smoothScrollToTop = () => { + const scrollContainer = document.getElementById('app-main') + if (scrollContainer) { + scrollContainer.scrollTo({ + top: 0, + behavior: 'smooth' + }) + } + } + + /** + * 滚动到指定位置 + * @param top 目标滚动位置(像素) + * @param smooth 是否使用平滑滚动 + */ + const scrollTo = (top: number, smooth: boolean = false) => { + const scrollContainer = document.getElementById('app-main') + if (scrollContainer) { + scrollContainer.scrollTo({ + top, + behavior: smooth ? 'smooth' : 'auto' + }) + } + } + + return { + homePath, + refresh, + scrollTo, + scrollToTop, + smoothScrollToTop + } +} diff --git a/web-admin/src/hooks/core/useFastEnter.ts b/web-admin/src/hooks/core/useFastEnter.ts new file mode 100644 index 00000000..555eb658 --- /dev/null +++ b/web-admin/src/hooks/core/useFastEnter.ts @@ -0,0 +1,55 @@ +/** + * useFastEnter - 快速入口管理 + * + * 管理顶部栏的快速入口功能,提供应用列表和快速链接的配置和过滤。 + * 支持动态启用/禁用、自定义排序、响应式宽度控制等功能。 + * + * ## 主要功能 + * + * 1. 应用列表管理 - 获取启用的应用列表,自动按排序权重排序 + * 2. 快速链接管理 - 获取启用的快速链接,支持自定义排序 + * 3. 响应式配置 - 所有配置自动响应变化,无需手动更新 + * 4. 宽度控制 - 提供最小显示宽度配置,支持响应式布局 + * + * @module useFastEnter + * @author Art Design Pro Team + */ + +import { computed } from 'vue' +import appConfig from '@/config' +import type { FastEnterApplication, FastEnterQuickLink } from '@/types/config' + +export function useFastEnter() { + // 获取快速入口配置 + const fastEnterConfig = computed(() => appConfig.fastEnter) + + // 获取启用的应用列表(按排序权重排序) + const enabledApplications = computed(() => { + if (!fastEnterConfig.value?.applications) return [] + + return fastEnterConfig.value.applications + .filter((app) => app.enabled !== false) + .sort((a, b) => (a.order || 0) - (b.order || 0)) + }) + + // 获取启用的快速链接(按排序权重排序) + const enabledQuickLinks = computed(() => { + if (!fastEnterConfig.value?.quickLinks) return [] + + return fastEnterConfig.value.quickLinks + .filter((link) => link.enabled !== false) + .sort((a, b) => (a.order || 0) - (b.order || 0)) + }) + + // 获取最小显示宽度 + const minWidth = computed(() => { + return fastEnterConfig.value?.minWidth || 1200 + }) + + return { + fastEnterConfig, + enabledApplications, + enabledQuickLinks, + minWidth + } +} diff --git a/web-admin/src/hooks/core/useHeaderBar.ts b/web-admin/src/hooks/core/useHeaderBar.ts new file mode 100644 index 00000000..be107128 --- /dev/null +++ b/web-admin/src/hooks/core/useHeaderBar.ts @@ -0,0 +1,201 @@ +/** + * useHeaderBar - 顶部栏功能管理 + * + * 统一管理顶部栏各个功能模块的显示状态和配置信息。 + * 提供灵活的功能开关控制,支持动态显示/隐藏顶部栏的各个功能按钮。 + * + * ## 主要功能 + * + * 1. 功能开关控制 - 统一管理菜单按钮、刷新按钮、快速入口等功能的显示状态 + * 2. 配置信息获取 - 获取各个功能模块的详细配置信息 + * 3. 功能列表查询 - 快速获取所有启用或禁用的功能列表 + * 4. 响应式状态 - 所有状态自动响应配置和 store 变化 + * + * @module useHeaderBar + * @author Art Design Pro Team + */ + +import { computed } from 'vue' +import { storeToRefs } from 'pinia' +import { useSettingStore } from '@/store/modules/setting' +import { headerBarConfig } from '@/config/modules/headerBar' +import { HeaderBarFeatureConfig } from '@/types' + +/** + * 顶部栏功能管理 + * @returns 顶部栏功能相关的状态和方法 + */ +export function useHeaderBar() { + const settingStore = useSettingStore() + + // 获取顶部栏配置 + const headerBarConfigRef = computed(() => headerBarConfig) + + // 从store中获取相关状态 + const { showMenuButton, showFastEnter, showRefreshButton, showCrumbs, showLanguage } = + storeToRefs(settingStore) + + /** + * 检查特定功能是否启用 + * @param feature 功能名称 + * @returns 是否启用 + */ + const isFeatureEnabled = (feature: keyof HeaderBarFeatureConfig): boolean => { + return headerBarConfigRef.value[feature]?.enabled ?? false + } + + /** + * 获取功能配置信息 + * @param feature 功能名称 + * @returns 功能配置信息 + */ + const getFeatureConfig = (feature: keyof HeaderBarFeatureConfig) => { + return headerBarConfigRef.value[feature] + } + + // 检查菜单按钮是否显示 + const shouldShowMenuButton = computed(() => { + return isFeatureEnabled('menuButton') && showMenuButton.value + }) + + // 检查刷新按钮是否显示 + const shouldShowRefreshButton = computed(() => { + return isFeatureEnabled('refreshButton') && showRefreshButton.value + }) + + // 检查快速入口是否显示 + const shouldShowFastEnter = computed(() => { + return isFeatureEnabled('fastEnter') && showFastEnter.value + }) + + // 检查面包屑是否显示 + const shouldShowBreadcrumb = computed(() => { + return isFeatureEnabled('breadcrumb') && showCrumbs.value + }) + + // 检查全局搜索是否显示 + const shouldShowGlobalSearch = computed(() => { + return isFeatureEnabled('globalSearch') + }) + + // 检查全屏按钮是否显示 + const shouldShowFullscreen = computed(() => { + return isFeatureEnabled('fullscreen') + }) + + // 检查通知中心是否显示 + const shouldShowNotification = computed(() => { + return isFeatureEnabled('notification') + }) + + // 检查聊天功能是否显示 + const shouldShowChat = computed(() => { + return isFeatureEnabled('chat') + }) + + // 检查语言切换是否显示 + const shouldShowLanguage = computed(() => { + return isFeatureEnabled('language') && showLanguage.value + }) + + // 检查设置面板是否显示 + const shouldShowSettings = computed(() => { + return isFeatureEnabled('settings') + }) + + // 检查主题切换是否显示 + const shouldShowThemeToggle = computed(() => { + return isFeatureEnabled('themeToggle') + }) + + // 获取快速入口的最小宽度 + const fastEnterMinWidth = computed(() => { + const config = getFeatureConfig('fastEnter') + return (config as any)?.minWidth || 1200 + }) + + /** + * 检查功能是否启用(别名) + * @param feature 功能名称 + * @returns 是否启用 + */ + const isFeatureActive = (feature: keyof HeaderBarFeatureConfig): boolean => { + return isFeatureEnabled(feature) + } + + /** + * 获取功能配置(别名) + * @param feature 功能名称 + * @returns 功能配置 + */ + const getFeatureInfo = (feature: keyof HeaderBarFeatureConfig) => { + return getFeatureConfig(feature) + } + + /** + * 获取所有启用的功能列表 + * @returns 启用的功能名称数组 + */ + const getEnabledFeatures = (): (keyof HeaderBarFeatureConfig)[] => { + return Object.keys(headerBarConfigRef.value).filter( + (key) => headerBarConfigRef.value[key as keyof HeaderBarFeatureConfig]?.enabled + ) as (keyof HeaderBarFeatureConfig)[] + } + + /** + * 获取所有禁用的功能列表 + * @returns 禁用的功能名称数组 + */ + const getDisabledFeatures = (): (keyof HeaderBarFeatureConfig)[] => { + return Object.keys(headerBarConfigRef.value).filter( + (key) => !headerBarConfigRef.value[key as keyof HeaderBarFeatureConfig]?.enabled + ) as (keyof HeaderBarFeatureConfig)[] + } + + /** + * 获取所有启用的功能(别名) + * @returns 启用的功能列表 + */ + const getActiveFeatures = () => { + return getEnabledFeatures() + } + + /** + * 获取所有禁用的功能(别名) + * @returns 禁用的功能列表 + */ + const getInactiveFeatures = () => { + return getDisabledFeatures() + } + + return { + // 配置 + headerBarConfig: headerBarConfigRef, + + // 显示状态计算属性 + shouldShowMenuButton, // 是否显示菜单按钮 + shouldShowRefreshButton, // 是否显示刷新按钮 + shouldShowFastEnter, // 是否显示快速入口 + shouldShowBreadcrumb, // 是否显示面包屑 + shouldShowGlobalSearch, // 是否显示全局搜索 + shouldShowFullscreen, // 是否显示全屏按钮 + shouldShowNotification, // 是否显示通知中心 + shouldShowChat, // 是否显示聊天功能 + shouldShowLanguage, // 是否显示语言切换 + shouldShowSettings, // 是否显示设置面板 + shouldShowThemeToggle, // 是否显示主题切换 + + // 配置相关 + fastEnterMinWidth, // 快速入口最小宽度 + + // 方法 + isFeatureEnabled, // 检查功能是否启用 + isFeatureActive, // 检查功能是否启用(别名) + getFeatureConfig, // 获取功能配置 + getFeatureInfo, // 获取功能配置(别名) + getEnabledFeatures, // 获取所有启用的功能 + getDisabledFeatures, // 获取所有禁用的功能 + getActiveFeatures, // 获取所有启用的功能(别名) + getInactiveFeatures // 获取所有禁用的功能(别名) + } +} diff --git a/web-admin/src/hooks/core/useLayoutHeight.ts b/web-admin/src/hooks/core/useLayoutHeight.ts new file mode 100644 index 00000000..4b1171a4 --- /dev/null +++ b/web-admin/src/hooks/core/useLayoutHeight.ts @@ -0,0 +1,148 @@ +/** + * useLayoutHeight - 页面布局高度管理 + * + * 自动计算和管理页面内容区域的高度,确保内容区域能够正确填充剩余空间。 + * 监听头部元素高度变化,动态调整内容区域高度,避免出现滚动条或布局错乱。 + * + * ## 主要功能 + * + * 1. 动态高度计算 - 根据头部元素高度自动计算内容区域高度 + * 2. 响应式监听 - 自动监听元素尺寸变化并更新高度 + * 3. CSS 变量同步 - 自动更新 CSS 变量,方便全局使用 + * 4. 灵活配置 - 支持自定义间距、CSS 变量名等 + * 5. 自动查找模式 - 提供通过 ID 自动查找元素的便捷方式 + * + * @module useLayoutHeight + * @author Art Design Pro Team + */ + +import { ref, computed, watch, onMounted } from 'vue' +import { useElementSize } from '@vueuse/core' + +/** + * 页面容器高度配置 + */ +interface LayoutHeightOptions { + /** 额外的间距(默认 15px) */ + extraSpacing?: number + /** 是否自动更新 CSS 变量(默认 true) */ + updateCssVar?: boolean + /** CSS 变量名称(默认 '--art-full-height') */ + cssVarName?: string +} + +export function useLayoutHeight(options: LayoutHeightOptions = {}) { + const { extraSpacing = 15, updateCssVar = true, cssVarName = '--art-full-height' } = options + + // 元素引用 + const headerRef = ref() + const contentHeaderRef = ref() + + // 使用 VueUse 自动监听元素尺寸变化 + const { height: headerHeight } = useElementSize(headerRef) + const { height: contentHeaderHeight } = useElementSize(contentHeaderRef) + + // 计算容器最小高度(响应式) + const containerMinHeight = computed(() => { + const totalHeight = headerHeight.value + contentHeaderHeight.value + extraSpacing + return `calc(100vh - ${totalHeight}px)` + }) + + if (updateCssVar) { + watch( + containerMinHeight, + (newHeight) => { + requestAnimationFrame(() => { + document.documentElement.style.setProperty(cssVarName, newHeight) + }) + }, + { immediate: true } + ) + } + + return { + /** 容器最小高度(响应式) */ + containerMinHeight, + /** 头部元素引用 */ + headerRef, + /** 内容头部元素引用 */ + contentHeaderRef, + /** 头部高度(响应式) */ + headerHeight, + /** 内容头部高度(响应式) */ + contentHeaderHeight + } +} + +/** + * 通过 ID 自动查找元素的布局高度管理 + * 适用于无法直接获取元素引用的场景 + * + * @param headerIds 头部元素的 ID 数组 + * @param options 配置选项 + * + * ``` + */ +export function useAutoLayoutHeight( + headerIds: string[] = ['app-header', 'app-content-header'], + options: LayoutHeightOptions = {} +) { + const { extraSpacing = 15, updateCssVar = true, cssVarName = '--art-full-height' } = options + + // 创建元素引用 + const headerRef = ref() + const contentHeaderRef = ref() + + // 使用 VueUse 自动监听元素尺寸变化 + const { height: headerHeight } = useElementSize(headerRef) + const { height: contentHeaderHeight } = useElementSize(contentHeaderRef) + + // 计算容器最小高度(响应式) + const containerMinHeight = computed(() => { + const totalHeight = headerHeight.value + contentHeaderHeight.value + extraSpacing + return `calc(100vh - ${totalHeight}px)` + }) + + if (updateCssVar) { + watch( + containerMinHeight, + (newHeight) => { + requestAnimationFrame(() => { + document.documentElement.style.setProperty(cssVarName, newHeight) + }) + }, + { immediate: true } + ) + } + + // 在 DOM 挂载后查找元素 + onMounted(() => { + if (typeof document !== 'undefined') { + // 使用 nextTick 确保 DOM 完全渲染 + requestAnimationFrame(() => { + const header = document.getElementById(headerIds[0]) + const contentHeader = document.getElementById(headerIds[1]) + + if (header) { + headerRef.value = header + } + if (contentHeader) { + contentHeaderRef.value = contentHeader + } + }) + } + }) + + return { + /** 容器最小高度(响应式) */ + containerMinHeight, + /** 头部元素引用 */ + headerRef, + /** 内容头部元素引用 */ + contentHeaderRef, + /** 头部高度(响应式) */ + headerHeight, + /** 内容头部高度(响应式) */ + contentHeaderHeight + } +} diff --git a/web-admin/src/hooks/core/useTable.ts b/web-admin/src/hooks/core/useTable.ts new file mode 100644 index 00000000..d9def4f9 --- /dev/null +++ b/web-admin/src/hooks/core/useTable.ts @@ -0,0 +1,762 @@ +/** + * useTable - 企业级表格数据管理方案 + * + * 功能完整的表格数据管理解决方案,专为后台管理系统设计。 + * 封装了表格开发中的所有常见需求,让你专注于业务逻辑。 + * + * ## 主要功能 + * + * 1. 数据管理 - 自动处理 API 请求、响应转换、加载状态和错误处理 + * 2. 分页控制 - 自动同步分页状态、移动端适配、智能页码边界处理 + * 3. 搜索功能 - 防抖搜索优化、参数管理、一键重置、参数过滤 + * 4. 缓存系统 - 智能请求缓存、多种清理策略、自动过期管理、统计信息 + * 5. 刷新策略 - 提供 5 种刷新方法适配不同业务场景(新增/更新/删除/手动/定时) + * 6. 列配置管理 - 动态显示/隐藏列、列排序、配置持久化、批量操作(可选) + * + * @module useTable + * @author Art Design Pro Team + */ + +import { ref, reactive, computed, onMounted, onUnmounted, nextTick, readonly } from 'vue' +import { useWindowSize } from '@vueuse/core' +import { useTableColumns } from './useTableColumns' +import type { ColumnOption } from '@/types/component' +import { + TableCache, + CacheInvalidationStrategy, + type ApiResponse +} from '../../utils/table/tableCache' +import { + type TableError, + defaultResponseAdapter, + extractTableData, + updatePaginationFromResponse, + createSmartDebounce, + createErrorHandler +} from '../../utils/table/tableUtils' +import { tableConfig } from '../../utils/table/tableConfig' + +// 类型推导工具类型 +type InferApiParams = T extends (params: infer P) => any ? P : never +type InferApiResponse = T extends (params: any) => Promise ? R : never +type InferRecordType = T extends Api.Common.PaginatedResponse ? U : never + +// 优化的配置接口 - 支持自动类型推导 +export interface UseTableConfig< + TApiFn extends (params: any) => Promise = (params: any) => Promise, + TRecord = InferRecordType>, + TParams = InferApiParams, + TResponse = InferApiResponse +> { + // 核心配置 + core: { + /** API 请求函数 */ + apiFn: TApiFn + /** 默认请求参数 */ + apiParams?: Partial + /** 排除 apiParams 中的属性 */ + excludeParams?: string[] + /** 是否立即加载数据 */ + immediate?: boolean + /** 列配置工厂函数 */ + columnsFactory?: () => ColumnOption[] + /** 自定义分页字段映射 */ + paginationKey?: { + /** 当前页码字段名,默认为 'current' */ + current?: string + /** 每页条数字段名,默认为 'size' */ + size?: string + } + } + + // 数据处理 + transform?: { + /** 数据转换函数 */ + dataTransformer?: (data: TRecord[]) => TRecord[] + /** 响应数据适配器 */ + responseAdapter?: (response: TResponse) => ApiResponse + } + + // 性能优化 + performance?: { + /** 是否启用缓存 */ + enableCache?: boolean + /** 缓存时间(毫秒) */ + cacheTime?: number + /** 防抖延迟时间(毫秒) */ + debounceTime?: number + /** 最大缓存条数限制 */ + maxCacheSize?: number + } + + // 生命周期钩子 + hooks?: { + /** 数据加载成功回调(仅网络请求成功时触发) */ + onSuccess?: (data: TRecord[], response: ApiResponse) => void + /** 错误处理回调 */ + onError?: (error: TableError) => void + /** 缓存命中回调(从缓存获取数据时触发) */ + onCacheHit?: (data: TRecord[], response: ApiResponse) => void + /** 加载状态变化回调 */ + onLoading?: (loading: boolean) => void + /** 重置表单回调函数 */ + resetFormCallback?: () => void + } + + // 调试配置 + debug?: { + /** 是否启用日志输出 */ + enableLog?: boolean + /** 日志级别 */ + logLevel?: 'info' | 'warn' | 'error' + } +} + +export function useTable Promise>( + config: UseTableConfig +) { + return useTableImpl(config) +} + +/** + * useTable 的核心实现 - 强大的表格数据管理 Hook + * + * 提供完整的表格解决方案,包括: + * - 数据获取与缓存 + * - 分页控制 + * - 搜索功能 + * - 智能刷新策略 + * - 错误处理 + * - 列配置管理 + */ +function useTableImpl Promise>( + config: UseTableConfig +) { + type TRecord = InferRecordType> + type TParams = InferApiParams + const { + core: { + apiFn, + apiParams = {} as Partial, + excludeParams = [], + immediate = true, + columnsFactory, + paginationKey + }, + transform: { dataTransformer, responseAdapter = defaultResponseAdapter } = {}, + performance: { + enableCache = false, + cacheTime = 5 * 60 * 1000, + debounceTime = 300, + maxCacheSize = 50 + } = {}, + hooks: { onSuccess, onError, onCacheHit, resetFormCallback } = {}, + debug: { enableLog = false } = {} + } = config + + // 分页字段名配置:优先使用传入的配置,否则使用全局配置 + const pageKey = paginationKey?.current || tableConfig.paginationKey.current + const sizeKey = paginationKey?.size || tableConfig.paginationKey.size + + // 响应式触发器,用于手动更新缓存统计信息 + const cacheUpdateTrigger = ref(0) + + // 日志工具函数 + const logger = { + log: (message: string, ...args: unknown[]) => { + if (enableLog) { + console.log(`[useTable] ${message}`, ...args) + } + }, + warn: (message: string, ...args: unknown[]) => { + if (enableLog) { + console.warn(`[useTable] ${message}`, ...args) + } + }, + error: (message: string, ...args: unknown[]) => { + if (enableLog) { + console.error(`[useTable] ${message}`, ...args) + } + } + } + + // 缓存实例 + const cache = enableCache ? new TableCache(cacheTime, maxCacheSize, enableLog) : null + + // 加载状态机 + type LoadingState = 'idle' | 'loading' | 'success' | 'error' + const loadingState = ref('idle') + const loading = computed(() => loadingState.value === 'loading') + + // 错误状态 + const error = ref(null) + + // 表格数据 + const data = ref([]) + + // 请求取消控制器 + let abortController: AbortController | null = null + + // 缓存清理定时器 + let cacheCleanupTimer: NodeJS.Timeout | null = null + + // 搜索参数 + const searchParams = reactive( + Object.assign( + { + [pageKey]: 1, + [sizeKey]: 10 + }, + apiParams || {} + ) as TParams + ) + + // 分页配置 + const pagination = reactive({ + current: ((searchParams as Record)[pageKey] as number) || 1, + size: ((searchParams as Record)[sizeKey] as number) || 10, + total: 0 + }) + + // 移动端分页 (响应式) + const { width } = useWindowSize() + const mobilePagination = computed(() => ({ + ...pagination, + small: width.value < 768 + })) + + // 列配置 + const columnConfig = columnsFactory ? useTableColumns(columnsFactory) : null + const columns = columnConfig?.columns + const columnChecks = columnConfig?.columnChecks + + // 是否有数据 + const hasData = computed(() => data.value.length > 0) + + // 缓存统计信息 + const cacheInfo = computed(() => { + // 依赖触发器,确保缓存变化时重新计算 + void cacheUpdateTrigger.value + if (!cache) return { total: 0, size: '0KB', hitRate: '0 avg hits' } + return cache.getStats() + }) + + // 错误处理函数 + const handleError = createErrorHandler(onError, enableLog) + + // 清理缓存,根据不同的业务场景选择性地清理缓存 + const clearCache = (strategy: CacheInvalidationStrategy, context?: string): void => { + if (!cache) return + + let clearedCount = 0 + + switch (strategy) { + case CacheInvalidationStrategy.CLEAR_ALL: + cache.clear() + logger.log(`清空所有缓存 - ${context || ''}`) + break + + case CacheInvalidationStrategy.CLEAR_CURRENT: + clearedCount = cache.clearCurrentSearch(searchParams) + logger.log(`清空当前搜索缓存 ${clearedCount} 条 - ${context || ''}`) + break + + case CacheInvalidationStrategy.CLEAR_PAGINATION: + clearedCount = cache.clearPagination() + logger.log(`清空分页缓存 ${clearedCount} 条 - ${context || ''}`) + break + + case CacheInvalidationStrategy.KEEP_ALL: + default: + logger.log(`保持缓存不变 - ${context || ''}`) + break + } + // 手动触发缓存状态更新 + cacheUpdateTrigger.value++ + } + + // 获取数据的核心方法 + const fetchData = async ( + params?: Partial, + useCache = enableCache + ): Promise> => { + // 取消上一个请求 + if (abortController) { + abortController.abort() + } + + // 创建新的取消控制器 + const currentController = new AbortController() + abortController = currentController + + // 状态机:进入 loading 状态 + loadingState.value = 'loading' + error.value = null + + try { + let requestParams = Object.assign( + {}, + searchParams, + { + [pageKey]: pagination.current, + [sizeKey]: pagination.size + }, + params || {} + ) as TParams + + // 剔除不需要的参数 + if (excludeParams.length > 0) { + const filteredParams = { ...requestParams } + excludeParams.forEach((key) => { + delete (filteredParams as Record)[key] + }) + requestParams = filteredParams as TParams + } + + // 检查缓存 + if (useCache && cache) { + const cachedItem = cache.get(requestParams) + if (cachedItem) { + data.value = cachedItem.data + updatePaginationFromResponse(pagination, cachedItem.response) + + // 修复:避免重复设置相同的值,防止响应式循环更新 + const paramsRecord = searchParams as Record + if (paramsRecord[pageKey] !== pagination.current) { + paramsRecord[pageKey] = pagination.current + } + if (paramsRecord[sizeKey] !== pagination.size) { + paramsRecord[sizeKey] = pagination.size + } + + // 状态机:缓存命中,进入 success 状态 + loadingState.value = 'success' + + // 缓存命中时触发专门的回调,而不是 onSuccess + if (onCacheHit) { + onCacheHit(cachedItem.data, cachedItem.response) + } + + logger.log(`缓存命中`) + return cachedItem.response + } + } + + const response = await apiFn(requestParams) + + // 检查请求是否被取消 + if (currentController.signal.aborted) { + throw new Error('请求已取消') + } + + // 使用响应适配器转换为标准格式 + const standardResponse = responseAdapter(response) + + // 处理响应数据 + let tableData = extractTableData(standardResponse) + + // 应用数据转换函数 + if (dataTransformer) { + tableData = dataTransformer(tableData) + } + + // 更新状态 + data.value = tableData + updatePaginationFromResponse(pagination, standardResponse) + + // 修复:避免重复设置相同的值,防止响应式循环更新 + const paramsRecord = searchParams as Record + if (paramsRecord[pageKey] !== pagination.current) { + paramsRecord[pageKey] = pagination.current + } + if (paramsRecord[sizeKey] !== pagination.size) { + paramsRecord[sizeKey] = pagination.size + } + + // 缓存数据 + if (useCache && cache) { + cache.set(requestParams, tableData, standardResponse) + // 手动触发缓存状态更新 + cacheUpdateTrigger.value++ + logger.log(`数据已缓存`) + } + + // 状态机:请求成功,进入 success 状态 + loadingState.value = 'success' + + // 成功回调 + if (onSuccess) { + onSuccess(tableData, standardResponse) + } + + return standardResponse + } catch (err) { + if (err instanceof Error && err.message === '请求已取消') { + // 请求被取消,回到 idle 状态 + loadingState.value = 'idle' + return { records: [], total: 0, current: 1, size: 10 } + } + + // 状态机:请求失败,进入 error 状态 + loadingState.value = 'error' + data.value = [] + const tableError = handleError(err, '获取表格数据失败') + throw tableError + } finally { + // 只有当前控制器是活跃的才清空 + if (abortController === currentController) { + abortController = null + } + } + } + + // 获取数据 (保持当前页) + const getData = async (params?: Partial): Promise | void> => { + try { + return await fetchData(params) + } catch { + // 错误已在 fetchData 中处理 + return Promise.resolve() + } + } + + // 分页获取数据 (重置到第一页) - 专门用于搜索场景 + const getDataByPage = async (params?: Partial): Promise | void> => { + pagination.current = 1 + ;(searchParams as Record)[pageKey] = 1 + + // 搜索时清空当前搜索条件的缓存,确保获取最新数据 + clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '搜索数据') + + try { + return await fetchData(params, false) // 搜索时不使用缓存 + } catch { + // 错误已在 fetchData 中处理 + return Promise.resolve() + } + } + + // 智能防抖搜索函数 + const debouncedGetDataByPage = createSmartDebounce(getDataByPage, debounceTime) + + // 重置搜索参数 + const resetSearchParams = async (): Promise => { + // 取消防抖的搜索 + debouncedGetDataByPage.cancel() + + // 保存分页相关的默认值 + const paramsRecord = searchParams as Record + const defaultPagination = { + [pageKey]: 1, + [sizeKey]: (paramsRecord[sizeKey] as number) || 10 + } + + // 清空所有搜索参数 + Object.keys(searchParams).forEach((key) => { + delete paramsRecord[key] + }) + + // 重新设置默认参数 + Object.assign(searchParams, apiParams || {}, defaultPagination) + + // 重置分页 + pagination.current = 1 + pagination.size = defaultPagination[sizeKey] as number + + // 清空错误状态 + error.value = null + + // 清空缓存 + clearCache(CacheInvalidationStrategy.CLEAR_ALL, '重置搜索') + + // 重新获取数据 + await getData() + + // 执行重置回调 + if (resetFormCallback) { + await nextTick() + resetFormCallback() + } + } + + // 替换搜索参数:适用于表单查询,避免旧字段残留 + const replaceSearchParams = (params?: Partial): void => { + const paramsRecord = searchParams as Record + const currentSize = pagination.size || ((paramsRecord[sizeKey] as number) ?? 10) + + Object.keys(searchParams).forEach((key) => { + if (key !== pageKey && key !== sizeKey) { + delete paramsRecord[key] + } + }) + + Object.assign( + searchParams, + { + [pageKey]: 1, + [sizeKey]: currentSize + }, + params || {} + ) + + pagination.current = 1 + pagination.size = currentSize + } + + // 防重复调用的标志 + let isCurrentChanging = false + + // 处理分页大小变化 + const handleSizeChange = async (newSize: number): Promise => { + if (newSize <= 0) return + + debouncedGetDataByPage.cancel() + + const paramsRecord = searchParams as Record + pagination.size = newSize + pagination.current = 1 + paramsRecord[sizeKey] = newSize + paramsRecord[pageKey] = 1 + + clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '分页大小变化') + + await getData() + } + + // 处理当前页变化 + const handleCurrentChange = async (newCurrent: number): Promise => { + if (newCurrent <= 0) return + + // 修复:防止重复调用 + if (isCurrentChanging) { + return + } + + // 修复:如果当前页没有变化,不需要重新请求 + if (pagination.current === newCurrent) { + logger.log('分页页码未变化,跳过请求') + return + } + + try { + isCurrentChanging = true + + // 修复:只更新必要的状态 + const paramsRecord = searchParams as Record + pagination.current = newCurrent + // 只有当 searchParams 的分页字段与新值不同时才更新 + if (paramsRecord[pageKey] !== newCurrent) { + paramsRecord[pageKey] = newCurrent + } + + await getData() + } finally { + isCurrentChanging = false + } + } + + // 针对不同业务场景的刷新方法 + + // 新增后刷新:回到第一页并清空分页缓存(适用于新增数据后) + const refreshCreate = async (): Promise => { + debouncedGetDataByPage.cancel() + pagination.current = 1 + ;(searchParams as Record)[pageKey] = 1 + clearCache(CacheInvalidationStrategy.CLEAR_PAGINATION, '新增数据') + await getData() + } + + // 更新后刷新:保持当前页,仅清空当前搜索缓存(适用于更新数据后) + const refreshUpdate = async (): Promise => { + clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '编辑数据') + await getData() + } + + // 删除后刷新:智能处理页码,避免空页面(适用于删除数据后) + const refreshRemove = async (): Promise => { + const { current } = pagination + + // 清除缓存并获取最新数据 + clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '删除数据') + await getData() + + // 如果当前页为空且不是第一页,回到上一页 + if (data.value.length === 0 && current > 1) { + pagination.current = current - 1 + ;(searchParams as Record)[pageKey] = current - 1 + await getData() + } + } + + // 全量刷新:清空所有缓存,重新获取数据(适用于手动刷新按钮) + const refreshData = async (): Promise => { + debouncedGetDataByPage.cancel() + clearCache(CacheInvalidationStrategy.CLEAR_ALL, '手动刷新') + await getData() + } + + // 轻量刷新:仅清空当前搜索条件的缓存,保持分页状态(适用于定时刷新) + const refreshSoft = async (): Promise => { + clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '软刷新') + await getData() + } + + // 取消当前请求 + const cancelRequest = (): void => { + if (abortController) { + abortController.abort() + } + debouncedGetDataByPage.cancel() + } + + // 清空数据 + const clearData = (): void => { + data.value = [] + error.value = null + clearCache(CacheInvalidationStrategy.CLEAR_ALL, '清空数据') + } + + // 清理已过期的缓存条目,释放内存空间 + const clearExpiredCache = (): number => { + if (!cache) return 0 + const cleanedCount = cache.cleanupExpired() + if (cleanedCount > 0) { + // 手动触发缓存状态更新 + cacheUpdateTrigger.value++ + } + return cleanedCount + } + + // 设置定期清理过期缓存 + if (enableCache && cache) { + cacheCleanupTimer = setInterval(() => { + const cleanedCount = cache.cleanupExpired() + if (cleanedCount > 0) { + logger.log(`自动清理 ${cleanedCount} 条过期缓存`) + // 手动触发缓存状态更新 + cacheUpdateTrigger.value++ + } + }, cacheTime / 2) // 每半个缓存周期清理一次 + } + + // 挂载时自动加载数据 + if (immediate) { + onMounted(async () => { + await getData() + }) + } + + // 组件卸载时彻底清理 + onUnmounted(() => { + cancelRequest() + if (cache) { + cache.clear() + } + if (cacheCleanupTimer) { + clearInterval(cacheCleanupTimer) + } + }) + + // 优化的返回值结构 + return { + // 数据相关 + /** 表格数据 */ + data, + /** 数据加载状态 */ + loading: readonly(loading), + /** 错误状态 */ + error: readonly(error), + /** 数据是否为空 */ + isEmpty: computed(() => data.value.length === 0), + /** 是否有数据 */ + hasData, + + // 分页相关 + /** 分页状态信息 */ + pagination: readonly(pagination), + /** 移动端分页配置 */ + paginationMobile: mobilePagination, + /** 页面大小变化处理 */ + handleSizeChange, + /** 当前页变化处理 */ + handleCurrentChange, + + // 搜索相关 - 统一前缀 + /** 搜索参数 */ + searchParams, + /** 替换搜索参数(适用于表单查询,避免旧字段残留) */ + replaceSearchParams, + /** 重置搜索参数 */ + resetSearchParams, + + // 数据操作 - 更明确的操作意图 + /** 加载数据 */ + fetchData: getData, + /** 获取数据 */ + getData: getDataByPage, + /** 获取数据(防抖) */ + getDataDebounced: debouncedGetDataByPage, + /** 清空数据 */ + clearData, + + // 刷新策略 + /** 全量刷新:清空所有缓存,重新获取数据(适用于手动刷新按钮) */ + refreshData, + /** 轻量刷新:仅清空当前搜索条件的缓存,保持分页状态(适用于定时刷新) */ + refreshSoft, + /** 新增后刷新:回到第一页并清空分页缓存(适用于新增数据后) */ + refreshCreate, + /** 更新后刷新:保持当前页,仅清空当前搜索缓存(适用于更新数据后) */ + refreshUpdate, + /** 删除后刷新:智能处理页码,避免空页面(适用于删除数据后) */ + refreshRemove, + + // 缓存控制 + /** 缓存统计信息 */ + cacheInfo, + /** 清除缓存,根据不同的业务场景选择性地清理缓存: */ + clearCache, + // 支持4种清理策略 + // clearCache(CacheInvalidationStrategy.CLEAR_ALL, '手动刷新') // 清空所有缓存 + // clearCache(CacheInvalidationStrategy.CLEAR_CURRENT, '搜索数据') // 只清空当前搜索条件的缓存 + // clearCache(CacheInvalidationStrategy.CLEAR_PAGINATION, '新增数据') // 清空分页相关缓存 + // clearCache(CacheInvalidationStrategy.KEEP_ALL, '保持缓存') // 不清理任何缓存 + /** 清理已过期的缓存条目,释放内存空间 */ + clearExpiredCache, + + // 请求控制 + /** 取消当前请求 */ + cancelRequest, + + // 列配置 (如果提供了 columnsFactory) + ...(columnConfig && { + /** 表格列配置 */ + columns, + /** 列显示控制 */ + columnChecks, + /** 新增列 */ + addColumn: columnConfig.addColumn, + /** 删除列 */ + removeColumn: columnConfig.removeColumn, + /** 切换列显示状态 */ + toggleColumn: columnConfig.toggleColumn, + /** 更新列配置 */ + updateColumn: columnConfig.updateColumn, + /** 批量更新列配置 */ + batchUpdateColumns: columnConfig.batchUpdateColumns, + /** 重新排序列 */ + reorderColumns: columnConfig.reorderColumns, + /** 获取指定列配置 */ + getColumnConfig: columnConfig.getColumnConfig, + /** 获取所有列配置 */ + getAllColumns: columnConfig.getAllColumns, + /** 重置所有列配置到默认状态 */ + resetColumns: columnConfig.resetColumns + }) + } +} + +// 重新导出类型和枚举,方便使用 +export { CacheInvalidationStrategy } from '../../utils/table/tableCache' +export type { ApiResponse, CacheItem } from '../../utils/table/tableCache' +export type { BaseRequestParams, TableError } from '../../utils/table/tableUtils' diff --git a/web-admin/src/hooks/core/useTableColumns.ts b/web-admin/src/hooks/core/useTableColumns.ts new file mode 100644 index 00000000..84b6e13a --- /dev/null +++ b/web-admin/src/hooks/core/useTableColumns.ts @@ -0,0 +1,312 @@ +/** + * useTableColumns - 表格列配置管理 + * + * 提供动态的表格列配置管理能力,支持运行时灵活控制列的显示、隐藏、排序等操作。 + * 通常与 useTable 配合使用,为表格提供完整的列管理功能。 + * + * ## 主要功能 + * + * 1. 列显示控制 - 动态显示/隐藏列,支持批量操作 + * 2. 列排序 - 拖拽或编程方式重新排列列顺序 + * 3. 列配置管理 - 新增、删除、更新列配置 + * 4. 特殊列支持 - 自动处理 selection、expand、index 等特殊列 + * 5. 状态持久化 - 保持列的显示状态,支持重置到初始状态 + * + * ## 使用示例 + * + * ```typescript + * const { columns, columnChecks, toggleColumn, reorderColumns } = useTableColumns(() => [ + * { prop: 'name', label: '姓名', visible: true }, + * { prop: 'email', label: '邮箱', visible: true }, + * { prop: 'status', label: '状态', visible: false } + * ]) + * + * // 切换列显示 + * toggleColumn('email', false) + * + * // 重新排序 + * reorderColumns(0, 2) + * ``` + * + * @module useTableColumns + * @author Art Design Pro Team + */ + +import { ref, computed, watch } from 'vue' +import { $t } from '@/locales' +import type { ColumnOption } from '@/types/component' + +/** + * 特殊列类型 + */ +const SPECIAL_COLUMNS: Record = { + selection: { prop: '__selection__', label: $t('table.column.selection') }, + expand: { prop: '__expand__', label: $t('table.column.expand') }, + index: { prop: '__index__', label: $t('table.column.index') } +} + +/** + * 获取列的唯一标识 + */ +export const getColumnKey = (col: ColumnOption) => + SPECIAL_COLUMNS[col.type as keyof typeof SPECIAL_COLUMNS]?.prop ?? (col.prop as string) + +/** + * 获取列的显示状态 + * 优先使用 visible 字段,如果不存在则使用 checked 字段 + */ +export const getColumnVisibility = (col: ColumnOption): boolean => { + // visible 优先级高于 checked + if (col.visible !== undefined) { + return col.visible + } + // 如果 visible 未定义,使用 checked,默认为 true + return col.checked ?? true +} + +/** + * 获取列的检查状态 + */ +export const getColumnChecks = (columns: ColumnOption[]) => + columns.map((col) => { + const special = col.type && SPECIAL_COLUMNS[col.type] + const visibility = getColumnVisibility(col) + + if (special) { + return { ...col, prop: special.prop, label: special.label, checked: true, visible: true } + } + return { ...col, checked: visibility, visible: visibility } + }) + +/** + * 动态列配置接口 + */ +export interface DynamicColumnConfig { + /** + * 新增列(支持单个或批量) + * @param column 列配置或列配置数组 + * @param index 可选的插入位置,默认末尾(批量时为第一个列的位置) + */ + addColumn: (column: ColumnOption | ColumnOption[], index?: number) => void + /** + * 删除列(支持单个或批量) + * @param prop 列的唯一标识或标识数组 + */ + removeColumn: (prop: string | string[]) => void + /** + * 切换列显示状态(支持单个或批量) + * @param prop 列的唯一标识或标识数组 + * @param visible 可选的显示状态,默认取反 + */ + toggleColumn: (prop: string | string[], visible?: boolean) => void + + /** + * 更新列(支持单个或批量) + * @param prop 列的唯一标识或更新配置数组 + * @param updates 列配置更新(当 prop 为字符串时使用) + */ + updateColumn: ( + prop: string | Array<{ prop: string; updates: Partial> }>, + updates?: Partial> + ) => void + /** + * 批量更新列(兼容旧版本,推荐使用 updateColumn 的数组模式) + * @param updates 列更新配置 + * @deprecated 推荐使用 updateColumn 的数组模式 + */ + batchUpdateColumns: (updates: Array<{ prop: string; updates: Partial> }>) => void + /** + * 重新排序列 + * @param fromIndex 源索引 + * @param toIndex 目标索引 + */ + reorderColumns: (fromIndex: number, toIndex: number) => void + /** + * 获取列配置 + * @param prop 列的唯一标识 + * @returns 列配置 + */ + getColumnConfig: (prop: string) => ColumnOption | undefined + /** + * 获取所有列配置 + * @returns 所有列配置 + */ + getAllColumns: () => ColumnOption[] + /** + * 重置所有列 + */ + resetColumns: () => void +} + +export function useTableColumns( + columnsFactory: () => ColumnOption[] +): { + columns: any + columnChecks: any +} & DynamicColumnConfig { + const dynamicColumns = ref[]>(columnsFactory()) + const columnChecks = ref[]>(getColumnChecks(dynamicColumns.value)) + + // 当 dynamicColumns 变动时,重新生成 columnChecks 且保留已存在的显示状态 + watch( + dynamicColumns, + (newCols) => { + const visibilityMap = new Map( + columnChecks.value.map((c) => [getColumnKey(c), getColumnVisibility(c)]) + ) + const newChecks = getColumnChecks(newCols).map((c) => { + const key = getColumnKey(c) + const visibility = visibilityMap.has(key) ? visibilityMap.get(key) : getColumnVisibility(c) + return { + ...c, + checked: visibility, + visible: visibility + } + }) + columnChecks.value = newChecks + }, + { deep: true } + ) + + // 当前显示列(基于 columnChecks 的 checked 或 visible) + const columns = computed(() => { + const colMap = new Map(dynamicColumns.value.map((c) => [getColumnKey(c), c])) + return columnChecks.value + .filter((c) => getColumnVisibility(c)) + .map((c) => colMap.get(getColumnKey(c))) + .filter(Boolean) as ColumnOption[] + }) + + // 支持 updater 返回新数组或直接在传入数组上 mutate + const setDynamicColumns = (updater: (cols: ColumnOption[]) => void | ColumnOption[]) => { + const copy = [...dynamicColumns.value] + const result = updater(copy) + dynamicColumns.value = Array.isArray(result) ? result : copy + } + + return { + columns, + columnChecks, + + /** + * 新增列(支持单个或批量) + */ + addColumn: (column: ColumnOption | ColumnOption[], index?: number) => + setDynamicColumns((cols) => { + const next = [...cols] + const columnsToAdd = Array.isArray(column) ? column : [column] + const insertIndex = + typeof index === 'number' && index >= 0 && index <= next.length ? index : next.length + + // 批量插入 + next.splice(insertIndex, 0, ...columnsToAdd) + return next + }), + + /** + * 删除列(支持单个或批量) + */ + removeColumn: (prop: string | string[]) => + setDynamicColumns((cols) => { + const propsToRemove = Array.isArray(prop) ? prop : [prop] + return cols.filter((c) => !propsToRemove.includes(getColumnKey(c))) + }), + + /** + * 更新列(支持单个或批量) + */ + updateColumn: ( + prop: string | Array<{ prop: string; updates: Partial> }>, + updates?: Partial> + ) => { + // 批量模式:prop 是数组 + if (Array.isArray(prop)) { + setDynamicColumns((cols) => { + const map = new Map(prop.map((u) => [u.prop, u.updates])) + return cols.map((c) => { + const key = getColumnKey(c) + const upd = map.get(key) + return upd ? { ...c, ...upd } : c + }) + }) + } + // 单个模式:prop 是字符串 + else if (updates) { + setDynamicColumns((cols) => + cols.map((c) => (getColumnKey(c) === prop ? { ...c, ...updates } : c)) + ) + } + }, + + /** + * 切换列显示状态(支持单个或批量) + */ + toggleColumn: (prop: string | string[], visible?: boolean) => { + const propsToToggle = Array.isArray(prop) ? prop : [prop] + const next = [...columnChecks.value] + + propsToToggle.forEach((p) => { + const i = next.findIndex((c) => getColumnKey(c) === p) + if (i > -1) { + const currentVisibility = getColumnVisibility(next[i]) + const newVisibility = visible ?? !currentVisibility + // 同时更新 checked 和 visible 以保持兼容性 + next[i] = { ...next[i], checked: newVisibility, visible: newVisibility } + } + }) + + columnChecks.value = next + }, + + /** + * 重置所有列 + */ + resetColumns: () => { + dynamicColumns.value = columnsFactory() + }, + + /** + * 批量更新列(兼容旧版本) + * @deprecated 推荐使用 updateColumn 的数组模式 + */ + batchUpdateColumns: (updates) => + setDynamicColumns((cols) => { + const map = new Map(updates.map((u) => [u.prop, u.updates])) + return cols.map((c) => { + const key = getColumnKey(c) + const upd = map.get(key) + return upd ? { ...c, ...upd } : c + }) + }), + + /** + * 重新排序列 + */ + reorderColumns: (fromIndex: number, toIndex: number) => + setDynamicColumns((cols) => { + if ( + fromIndex < 0 || + fromIndex >= cols.length || + toIndex < 0 || + toIndex >= cols.length || + fromIndex === toIndex + ) { + return cols + } + const next = [...cols] + const [moved] = next.splice(fromIndex, 1) + next.splice(toIndex, 0, moved) + return next + }), + + /** + * 获取列配置 + */ + getColumnConfig: (prop: string) => dynamicColumns.value.find((c) => getColumnKey(c) === prop), + + /** + * 获取所有列配置 + */ + getAllColumns: () => [...dynamicColumns.value] + } +} diff --git a/web-admin/src/hooks/core/useTableHeight.ts b/web-admin/src/hooks/core/useTableHeight.ts new file mode 100644 index 00000000..8fdf6dab --- /dev/null +++ b/web-admin/src/hooks/core/useTableHeight.ts @@ -0,0 +1,105 @@ +/** + * useTableHeight - 表格高度自动计算 + * + * 自动计算表格容器的最佳高度,确保表格在不同布局场景下都能正确显示。 + * 根据表格头部、分页器等元素的高度动态调整容器高度,避免出现滚动条或布局错乱。 + * + * ## 主要功能 + * + * 1. 动态高度计算 - 根据表格头部、分页器高度自动计算容器高度 + * 2. 响应式更新 - 配置变化时自动重新计算高度 + * 3. 灵活配置 - 支持自定义各部分高度和间距 + * 4. 智能适配 - 无额外元素时自动使用 100% 高度 + * + * @module useTableHeight + * @author Art Design Pro Team + */ + +import { computed, type Ref } from 'vue' + +/** + * 表格高度计算器配置接口 + */ +interface TableHeightOptions { + /** 是否显示表格头部 */ + showTableHeader: Ref + /** 分页器高度 */ + paginationHeight: Ref + /** 表格头部高度 */ + tableHeaderHeight: Ref + /** 分页器间距 */ + paginationSpacing: Ref +} + +/** + * 表格高度计算器类 + */ +class TableHeightCalculator { + // 常量配置 + private static readonly DEFAULT_TABLE_HEADER_HEIGHT = 44 + private static readonly TABLE_HEADER_SPACING = 12 + + constructor(private options: TableHeightOptions) {} + + /** + * 计算容器高度 + */ + calculate(): { height: string } { + const offset = this.calculateOffset() + return { + height: offset === 0 ? '100%' : `calc(100% - ${offset}px)` + } + } + + /** + * 计算偏移量 + */ + private calculateOffset(): number { + if (!this.options.showTableHeader.value) { + return this.calculatePaginationOffset() + } + + const headerHeight = this.getHeaderHeight() + const paginationOffset = this.calculatePaginationOffset() + + return headerHeight + paginationOffset + TableHeightCalculator.TABLE_HEADER_SPACING + } + + /** + * 获取表格头部高度 + */ + private getHeaderHeight(): number { + return this.options.tableHeaderHeight.value || TableHeightCalculator.DEFAULT_TABLE_HEADER_HEIGHT + } + + /** + * 计算分页器偏移量 + */ + private calculatePaginationOffset(): number { + const { paginationHeight, paginationSpacing } = this.options + return paginationHeight.value === 0 ? 0 : paginationHeight.value + paginationSpacing.value + } +} + +/** + * 表格高度计算 Hook + * + * 提供表格容器高度的自动计算功能,支持: + * - 表格头部高度 + * - 分页器高度 + * - 动态间距计算 + * + * @param options 配置选项 + * @returns 容器高度计算结果 + */ +export function useTableHeight(options: TableHeightOptions) { + const containerHeight = computed(() => { + const calculator = new TableHeightCalculator(options) + return calculator.calculate() + }) + + return { + /** 容器高度样式对象 */ + containerHeight + } +} diff --git a/web-admin/src/hooks/core/useTheme.ts b/web-admin/src/hooks/core/useTheme.ts new file mode 100644 index 00000000..187c3e03 --- /dev/null +++ b/web-admin/src/hooks/core/useTheme.ts @@ -0,0 +1,174 @@ +/** + * useTheme - 系统主题管理 + * + * 提供完整的主题切换和管理功能,支持亮色、暗色和自动模式。 + * 自动处理主题切换时的过渡效果,确保切换流畅无闪烁。 + * + * ## 主要功能 + * + * 1. 主题切换 - 支持亮色、暗色、自动三种主题模式 + * 2. 自动模式 - 根据系统偏好自动切换主题 + * 3. 颜色适配 - 自动调整主题色的明暗变体(9 个层级) + * 4. 过渡优化 - 切换时临时禁用过渡效果,避免闪烁 + * 5. 状态持久化 - 主题设置自动保存到 store + * + * ## 使用示例 + * + * ```typescript + * const { switchThemeStyles } = useTheme() + * + * // 切换到暗色主题 + * switchThemeStyles(SystemThemeEnum.DARK) + * + * // 切换到亮色主题 + * switchThemeStyles(SystemThemeEnum.LIGHT) + * + * // 切换到自动模式(跟随系统) + * switchThemeStyles(SystemThemeEnum.AUTO) + * ``` + * + * @module useTheme + * @author Art Design Pro Team + */ + +import { useSettingStore } from '@/store/modules/setting' +import { SystemThemeEnum } from '@/enums/appEnum' +import AppConfig from '@/config' +import { SystemThemeTypes } from '@/types/store' +import { getDarkColor, getLightColor, setElementThemeColor } from '@/utils/ui' +import { usePreferredDark } from '@vueuse/core' +import { watch } from 'vue' + +export function useTheme() { + const settingStore = useSettingStore() + + // 禁用过渡效果 + const disableTransitions = () => { + const style = document.createElement('style') + style.setAttribute('id', 'disable-transitions') + style.textContent = '* { transition: none !important; }' + document.head.appendChild(style) + } + + // 启用过渡效果 + const enableTransitions = () => { + const style = document.getElementById('disable-transitions') + if (style) { + style.remove() + } + } + + // 设置系统主题 + const setSystemTheme = (theme: SystemThemeEnum, themeMode?: SystemThemeEnum) => { + // 临时禁用过渡效果 + disableTransitions() + + const el = document.getElementsByTagName('html')[0] + const isDark = theme === SystemThemeEnum.DARK + + if (!themeMode) { + themeMode = theme + } + + const currentTheme = AppConfig.systemThemeStyles[theme as keyof SystemThemeTypes] + + if (currentTheme) { + el.setAttribute('class', currentTheme.className) + } + + // 设置按钮颜色加深或变浅 + const primary = settingStore.systemThemeColor + + for (let i = 1; i <= 9; i++) { + document.documentElement.style.setProperty( + `--el-color-primary-light-${i}`, + isDark ? `${getDarkColor(primary, i / 10)}` : `${getLightColor(primary, i / 10)}` + ) + } + + // 更新store中的主题设置 + settingStore.setGlopTheme(theme, themeMode) + + // 使用 requestAnimationFrame 确保在下一帧恢复过渡效果 + requestAnimationFrame(() => { + requestAnimationFrame(() => { + enableTransitions() + }) + }) + } + + // 使用 VueUse 的 usePreferredDark 检测系统主题偏好 + const prefersDark = usePreferredDark() + + // 自动设置系统主题 + const setSystemAutoTheme = () => { + const theme = prefersDark.value ? SystemThemeEnum.DARK : SystemThemeEnum.LIGHT + setSystemTheme(theme, SystemThemeEnum.AUTO) + } + + // 切换主题 + const switchThemeStyles = (theme: SystemThemeEnum) => { + if (theme === SystemThemeEnum.AUTO) { + setSystemAutoTheme() + } else { + setSystemTheme(theme) + } + } + + return { + setSystemTheme, + setSystemAutoTheme, + switchThemeStyles, + prefersDark + } +} + +/** + * 初始化主题系统 + */ +export function initializeTheme() { + const settingStore = useSettingStore() + const prefersDark = usePreferredDark() + + // 根据系统偏好应用主题 + const applyThemeByMode = () => { + const el = document.getElementsByTagName('html')[0] + let actualTheme = settingStore.systemThemeType + + // 如果是 AUTO 模式,检测系统偏好 + if (settingStore.systemThemeMode === SystemThemeEnum.AUTO) { + actualTheme = prefersDark.value ? SystemThemeEnum.DARK : SystemThemeEnum.LIGHT + // 更新实际应用的主题类型 + settingStore.systemThemeType = actualTheme + } + + // 设置主题 class + const currentTheme = AppConfig.systemThemeStyles[actualTheme as keyof SystemThemeTypes] + if (currentTheme) { + el.setAttribute('class', currentTheme.className) + } + + // 设置主题颜色 + setElementThemeColor(settingStore.systemThemeColor) + + // 设置圆角 + document.documentElement.style.setProperty('--custom-radius', `${settingStore.customRadius}rem`) + } + + // 应用主题 + applyThemeByMode() + + // 如果是 AUTO 模式,监听系统主题变化(使用 VueUse 的响应式特性) + if (settingStore.systemThemeMode === SystemThemeEnum.AUTO) { + watch( + prefersDark, + () => { + // 只有在 AUTO 模式下才响应系统主题变化 + if (settingStore.systemThemeMode === SystemThemeEnum.AUTO) { + applyThemeByMode() + } + }, + { immediate: false } + ) + } +} diff --git a/web-admin/src/hooks/index.ts b/web-admin/src/hooks/index.ts new file mode 100644 index 00000000..472b09c8 --- /dev/null +++ b/web-admin/src/hooks/index.ts @@ -0,0 +1,32 @@ +// 通用功能集合 +export { useCommon } from './core/useCommon' + +// 应用模式 +export { useAppMode } from './core/useAppMode' + +// 权限控制 +export { useAuth } from './core/useAuth' + +// 表格数据管理方案 +export { useTable } from './core/useTable' + +// 表格列配置管理 +export { useTableColumns } from './core/useTableColumns' + +// 主题相关 +export { useTheme } from './core/useTheme' + +// 礼花+文字滚动 +export { useCeremony } from './core/useCeremony' + +// 顶栏快速入口 +export { useFastEnter } from './core/useFastEnter' + +// 顶栏功能管理 +export { useHeaderBar } from './core/useHeaderBar' + +// 图表相关 +export { useChart, useChartComponent, useChartOps } from './core/useChart' + +// 布局高度 +export { useLayoutHeight, useAutoLayoutHeight } from './core/useLayoutHeight' diff --git a/web-admin/src/locales/index.ts b/web-admin/src/locales/index.ts new file mode 100644 index 00000000..36c26489 --- /dev/null +++ b/web-admin/src/locales/index.ts @@ -0,0 +1,123 @@ +/** + * 国际化配置 + * + * 基于 vue-i18n 实现的多语言国际化解决方案。 + * 支持中文和英文切换,自动从本地存储恢复用户的语言偏好。 + * + * ## 主要功能 + * + * - 多语言支持 - 支持中文(简体)和英文两种语言 + * - 语言切换 - 运行时动态切换语言,无需刷新页面 + * - 持久化存储 - 自动保存和恢复用户的语言偏好 + * - 全局注入 - 在任何组件中都可以使用 $t 函数进行翻译 + * - 类型安全 - 提供 TypeScript 类型支持 + * + * ## 支持的语言 + * + * - zh: 简体中文 + * - en: English + * + * @module locales + * @author Art Design Pro Team + */ + +import { createI18n } from 'vue-i18n' +import type { I18n, I18nOptions } from 'vue-i18n' +import { LanguageEnum } from '@/enums/appEnum' +import { getSystemStorage } from '@/utils/storage' +import { StorageKeyManager } from '@/utils/storage/storage-key-manager' + +// 同步导入语言文件 +import enMessages from './langs/en.json' +import zhMessages from './langs/zh.json' + +/** + * 存储键管理器实例 + */ +const storageKeyManager = new StorageKeyManager() + +/** + * 语言消息对象 + */ +const messages = { + [LanguageEnum.EN]: enMessages, + [LanguageEnum.ZH]: zhMessages +} + +/** + * 语言选项列表 + * 用于语言切换下拉框 + */ +export const languageOptions = [ + { value: LanguageEnum.ZH, label: '简体中文' }, + { value: LanguageEnum.EN, label: 'English' } +] + +/** + * 从存储中获取语言设置 + * @returns 语言设置,如果获取失败则返回默认语言 + */ +const getDefaultLanguage = (): LanguageEnum => { + // 尝试从版本化的存储中获取语言设置 + try { + const storageKey = storageKeyManager.getStorageKey('user') + const userStore = localStorage.getItem(storageKey) + + if (userStore) { + const { language } = JSON.parse(userStore) + if (language && Object.values(LanguageEnum).includes(language)) { + return language + } + } + } catch (error) { + console.warn('[i18n] 从版本化存储获取语言设置失败:', error) + } + + // 尝试从系统存储中获取语言设置 + try { + const sys = getSystemStorage() + if (sys) { + const { user } = JSON.parse(sys) + if (user?.language && Object.values(LanguageEnum).includes(user.language)) { + return user.language + } + } + } catch (error) { + console.warn('[i18n] 从系统存储获取语言设置失败:', error) + } + + // 返回默认语言 + console.debug('[i18n] 使用默认语言:', LanguageEnum.ZH) + return LanguageEnum.ZH +} + +/** + * i18n 配置选项 + */ +const i18nOptions: I18nOptions = { + locale: getDefaultLanguage(), + legacy: false, + globalInjection: true, + fallbackLocale: LanguageEnum.ZH, + messages +} + +/** + * i18n 实例 + */ +const i18n: I18n = createI18n(i18nOptions) + +/** + * 翻译函数类型 + */ +interface Translation { + (key: string): string +} + +/** + * 全局翻译函数 + * 可在任何地方使用,无需导入 useI18n + */ +export const $t = i18n.global.t as Translation + +export default i18n diff --git a/web-admin/src/locales/langs/en.json b/web-admin/src/locales/langs/en.json new file mode 100644 index 00000000..38204559 --- /dev/null +++ b/web-admin/src/locales/langs/en.json @@ -0,0 +1,348 @@ +{ + "httpMsg": { + "unauthorized": "Unauthorized access, please login again", + "forbidden": "Access to this resource is forbidden", + "notFound": "The requested resource does not exist", + "methodNotAllowed": "Request method not allowed", + "requestTimeout": "Request timeout, please try again later", + "internalServerError": "Internal server error, please try again later", + "badGateway": "Bad gateway error, please try again later", + "serviceUnavailable": "Service temporarily unavailable, please try again later", + "gatewayTimeout": "Gateway timeout, please try again later", + "requestCancelled": "Request cancelled", + "networkError": "Cannot reach the server. Check your network or ensure the API is running (dev: backend on port 8000).", + "requestFailed": "Request failed", + "requestConfigError": "Request configuration error" + }, + "topBar": { + "search": { + "title": "Search" + }, + "user": { + "userCenter": "User center", + "docs": "Document", + "github": "Github", + "lockScreen": "Lock screen", + "logout": "Log out" + }, + "guide": { + "title": "Click here to view", + "theme": "Theme style", + "menu": "Open top menu", + "description": "More configurations" + } + }, + "common": { + "tips": "Prompt", + "cancel": "Cancel", + "confirm": "Confirm", + "logOutTips": "Do you want to log out?" + }, + "search": { + "placeholder": "Search page", + "historyTitle": "Search history", + "switchKeydown": "Navigate", + "selectKeydown": "Select", + "exitKeydown": "Close" + }, + "setting": { + "menuType": { + "title": "Menu Layout", + "list": ["Vertical", "Horizontal", "Mixed", "Dual"] + }, + "theme": { + "title": "Theme Style", + "list": ["Light", "Dark", "System"] + }, + "menu": { + "title": "Menu Style" + }, + "color": { + "title": "Theme Color" + }, + "box": { + "title": "Box Style", + "list": ["Border", "Shadow"] + }, + "container": { + "title": "Container Width", + "list": ["Full", "Boxed"] + }, + "basics": { + "title": "Basic Config", + "list": { + "multiTab": "Show work tab", + "accordion": "Sidebar opens accordion", + "collapseSidebar": "Show sidebar button", + "reloadPage": "Show reload page button", + "fastEnter": "Show fast enter", + "breadcrumb": "Show crumb navigation", + "language": "Show multilingual selection", + "progressBar": "Show top progress bar", + "weakMode": "Color Weakness Mode", + "watermark": "Global watermark", + "menuWidth": "Menu width", + "tabStyle": "Tab style", + "pageTransition": "Page animation", + "borderRadius": "Custom radius" + } + }, + "tabStyle": { + "default": "Default", + "card": "Card", + "google": "Chrome" + }, + "transition": { + "list": { + "none": "None", + "fade": "Fade", + "slideLeft": "Slide Left", + "slideBottom": "Slide Bottom", + "slideTop": "Slide Top" + } + }, + "actions": { + "resetConfig": "Reset Config", + "copyConfig": "Copy Config", + "copySuccess": "Configuration copied to clipboard, paste it into src/config/setting.ts file", + "copyFailed": "Copy failed, please try again", + "resetFailed": "Reset failed, please refresh the page and try again" + } + }, + "notice": { + "title": "Notice", + "btnRead": "Mark as read", + "bar": ["Notice", "Message", "Todo"], + "text": ["No"], + "viewAll": "View all" + }, + "worktab": { + "btn": { + "refresh": "Refresh", + "fixed": "Fixed", + "unfixed": "Unfixed", + "closeLeft": "Close left", + "closeRight": "Close right", + "closeOther": "Close other", + "closeAll": "Close all" + } + }, + "login": { + "leftView": { + "title": "A backend system of beauty and efficiency", + "subTitle": "A sleek and practical interface for a great user experience" + }, + "title": "Welcome back", + "subTitle": "Please enter your account and password to login", + "roles": { + "super": "Super Admin", + "admin": "Admin", + "user": "User" + }, + "placeholder": { + "username": "Please enter your account", + "password": "Please enter your password", + "slider": "Please slide to verify" + }, + "sliderText": "Please slide to verify", + "sliderSuccessText": "Verification successful", + "rememberPwd": "Remember password", + "forgetPwd": "Forgot password", + "btnText": "Login", + "noAccount": "No account yet?", + "register": "Register", + "success": { + "title": "Login successful", + "message": "Welcome back" + } + }, + "forgetPassword": { + "title": "Forgot password?", + "subTitle": "Enter your email to reset your password", + "placeholder": "Please enter your email", + "submitBtnText": "Submit", + "backBtnText": "Back" + }, + "register": { + "title": "Create account", + "subTitle": "Welcome to join us, please fill in the following information to complete the registration", + "placeholder": { + "username": "Please enter your account", + "password": "Please enter your password", + "confirmPassword": "Please enter your password again" + }, + "rule": { + "confirmPasswordRequired": "Please enter your password again", + "passwordMismatch": "The two passwords are inconsistent!", + "usernameLength": "The length is 3 to 20 characters", + "passwordLength": "The password length cannot be less than 6 digits", + "agreementRequired": "Please agree to the privacy policy" + }, + "agreeText": "I agree", + "privacyPolicy": "Privacy policy", + "submitBtnText": "Register", + "hasAccount": "Already have an account?", + "toLogin": "To login" + }, + "lockScreen": { + "pwdError": "Password error", + "lock": { + "inputPlaceholder": "Please input lock screen password", + "btnText": "Lock" + }, + "unlock": { + "inputPlaceholder": "Please input unlock password", + "btnText": "Unlock", + "backBtnText": "Back to login" + } + }, + "greeting": { + "dawn": "Good morning!", + "morning": "Good morning!", + "afternoon": "Good afternoon!", + "evening": "Good evening!" + }, + "exceptionPage": { + "gohome": "Go Home", + "403": "Sorry, you do not have permission to access this page", + "404": "Sorry, the page you are trying to access does not exist", + "500": "Sorry, there was an error on the server" + }, + "menus": { + "login": { + "title": "Login" + }, + "register": { + "title": "Register" + }, + "forgetPassword": { + "title": "Forget Password" + }, + "outside": { + "title": "Outside" + }, + "dashboard": { + "title": "Dashboard", + "console": "Console", + "analysis": "Analysis", + "ecommerce": "Ecommerce" + }, + "widgets": { + "title": "Components", + "icon": "Icon", + "imageCrop": "Image Crop", + "excel": "Excel Import Export", + "video": "Video Player", + "countTo": "Count To", + "wangEditor": "Wang Editor", + "watermark": "Watermark", + "contextMenu": "Context Menu", + "qrcode": "QR Code", + "drag": "Drag", + "textScroll": "Text Scroll", + "fireworks": "Fireworks", + "elementUI": "Component Overview" + }, + "template": { + "title": "Template Center", + "chat": "Chat", + "cards": "Cards", + "banners": "Banners", + "charts": "Charts", + "map": "Map", + "calendar": "Calendar", + "pricing": "Pricing" + }, + "article": { + "title": "Article", + "articleList": "Article List", + "articleDetail": "Article Detail", + "comment": "Comment", + "articlePublish": "Article Publish" + }, + "result": { + "title": "Result Page", + "success": "Success", + "fail": "Fail" + }, + "exception": { + "title": "Exception", + "forbidden": "403", + "notFound": "404", + "serverError": "500" + }, + "examples": { + "title": "Feature Examples", + "tabs": "Tabs", + "tablesBasic": "Basic Tables", + "tables": "Advanced Tables", + "tablesTree": "Tree Table Layout", + "forms": "Forms", + "searchBar": "Search Form", + "socketChat": "Socket Connection", + "permission": { + "title": "Frontend Permission", + "switchRole": "Toggle Auth", + "buttonAuth": "Button Authority", + "pageVisibility": "Super Admin Visibility" + } + }, + "system": { + "title": "System Settings", + "user": "User Manage", + "role": "Role Manage", + "userCenter": "User Center", + "menu": "Menu Manage", + "nested": "Nested Menu", + "menu1": "Menu 1", + "menu2": "Menu 2", + "menu21": "Menu 2-1", + "menu3": "Menu 3", + "menu31": "Menu 3-1", + "menu32": "Menu 3-2", + "menu321": "Menu 3-2-1" + }, + "safeguard": { + "title": "Safeguard", + "server": "Server" + }, + "plan": { + "title": "Version Plan", + "log": "Change Log" + }, + "help": { + "title": "Help Center", + "document": "Document", + "liteVersion": "Lite Version", + "oldVersion": "v2.6.1 Version" + } + }, + "table": { + "form": { + "reset": "Reset", + "submit": "Submit" + }, + "searchBar": { + "reset": "Reset", + "search": "Search", + "expand": "Expand", + "collapse": "Collapse", + "searchInputPlaceholder": "Please enter", + "searchSelectPlaceholder": "Please select" + }, + "selection": "Select", + "sizeOptions": { + "small": "Compact", + "default": "Default", + "large": "Loose" + }, + "column": { + "selection": "Select", + "expand": "Expand", + "index": "Index" + }, + "zebra": "Zebra", + "border": "Border", + "headerBackground": "Header BG" + } +} diff --git a/web-admin/src/locales/langs/zh.json b/web-admin/src/locales/langs/zh.json new file mode 100644 index 00000000..49a62d1b --- /dev/null +++ b/web-admin/src/locales/langs/zh.json @@ -0,0 +1,348 @@ +{ + "httpMsg": { + "unauthorized": "未授权访问,请重新登录", + "forbidden": "禁止访问该资源", + "notFound": "请求的资源不存在", + "methodNotAllowed": "请求方法不允许", + "requestTimeout": "请求超时,请稍后重试", + "internalServerError": "服务器内部错误,请稍后重试", + "badGateway": "网关错误,请稍后重试", + "serviceUnavailable": "服务暂时不可用,请稍后重试", + "gatewayTimeout": "网关超时,请稍后重试", + "requestCancelled": "请求已取消", + "networkError": "无法连接服务器,请检查网络或确认后端服务已运行(开发环境需启动 backend 并监听 8000 端口)", + "requestFailed": "请求失败", + "requestConfigError": "请求配置错误" + }, + "topBar": { + "search": { + "title": "搜索" + }, + "user": { + "userCenter": "个人中心", + "docs": "使用文档", + "github": "Github", + "lockScreen": "锁定屏幕", + "logout": "退出登录" + }, + "guide": { + "title": "点击这里查看", + "theme": "主题风格", + "menu": "开启顶栏菜单", + "description": "等更多配置" + } + }, + "common": { + "tips": "提示", + "cancel": "取消", + "confirm": "确定", + "logOutTips": "您是否要退出登录?" + }, + "search": { + "placeholder": "搜索页面", + "historyTitle": "搜索历史", + "switchKeydown": "切换", + "selectKeydown": "选择", + "exitKeydown": "关闭" + }, + "setting": { + "menuType": { + "title": "菜单布局", + "list": ["垂直", "水平", "混合", "双列"] + }, + "theme": { + "title": "主题风格", + "list": ["浅色", "深色", "系统"] + }, + "menu": { + "title": "菜单风格" + }, + "color": { + "title": "系统主题色" + }, + "box": { + "title": "盒子样式", + "list": ["边框", "阴影"] + }, + "container": { + "title": "容器宽度", + "list": ["铺满", "定宽"] + }, + "basics": { + "title": "基础配置", + "list": { + "multiTab": "开启多标签栏", + "accordion": "侧边栏开启手风琴模式", + "collapseSidebar": "显示折叠侧边栏按钮", + "fastEnter": "显示快速入口", + "reloadPage": "显示重载页面按钮", + "breadcrumb": "显示全局面包屑导航", + "language": "显示多语言选择", + "progressBar": "显示顶部进度条", + "weakMode": "色弱模式", + "watermark": "全局水印", + "menuWidth": "菜单宽度", + "tabStyle": "标签页风格", + "pageTransition": "页面切换动画", + "borderRadius": "自定义圆角" + } + }, + "tabStyle": { + "default": "默认", + "card": "卡片", + "google": "谷歌" + }, + "transition": { + "list": { + "none": "无动画", + "fade": "淡入淡出", + "slideLeft": "左侧滑入", + "slideBottom": "下方滑入", + "slideTop": "上方滑入" + } + }, + "actions": { + "resetConfig": "重置配置", + "copyConfig": "复制配置", + "copySuccess": "配置已复制到剪贴板,可粘贴到 src/config/setting.ts 文件中", + "copyFailed": "复制失败,请重试", + "resetFailed": "重置失败,请刷新页面后重试" + } + }, + "notice": { + "title": "通知", + "btnRead": "标为已读", + "bar": ["通知", "消息", "代办"], + "text": ["暂无"], + "viewAll": "查看全部" + }, + "worktab": { + "btn": { + "refresh": "刷新", + "fixed": "固定", + "unfixed": "取消固定", + "closeLeft": "关闭左侧", + "closeRight": "关闭右侧", + "closeOther": "关闭其他", + "closeAll": "关闭全部" + } + }, + "login": { + "leftView": { + "title": "一款兼具设计美学与高效开发的后台系统", + "subTitle": "美观实用的界面,经过视觉优化,确保卓越的用户体验" + }, + "title": "欢迎回来", + "subTitle": "输入您的账号和密码登录", + "roles": { + "super": "超级管理员", + "admin": "管理员", + "user": "普通用户" + }, + "placeholder": { + "username": "请输入账号", + "password": "请输入密码", + "slider": "请拖动滑块完成验证" + }, + "sliderText": "按住滑块拖动", + "sliderSuccessText": "验证成功", + "rememberPwd": "记住密码", + "forgetPwd": "忘记密码", + "btnText": "登录", + "noAccount": "还没有账号?", + "register": "注册", + "success": { + "title": "登录成功", + "message": "欢迎回来" + } + }, + "forgetPassword": { + "title": "忘记密码?", + "subTitle": "输入您的电子邮件来重置您的密码", + "placeholder": "请输入您的电子邮件", + "submitBtnText": "提交", + "backBtnText": "返回" + }, + "register": { + "title": "创建账号", + "subTitle": "欢迎加入我们,请填写以下信息完成注册", + "placeholder": { + "username": "请输入账号", + "password": "请输入密码", + "confirmPassword": "请再次输入密码" + }, + "rule": { + "confirmPasswordRequired": "请再次输入密码", + "passwordMismatch": "两次输入密码不一致!", + "usernameLength": "长度在 3 到 20 个字符", + "passwordLength": "密码长度不能小于6位", + "agreementRequired": "请同意隐私协议" + }, + "agreeText": "我同意", + "privacyPolicy": "《隐私政策》", + "submitBtnText": "注册", + "hasAccount": "已有账号?", + "toLogin": "去登录" + }, + "lockScreen": { + "pwdError": "密码错误", + "lock": { + "inputPlaceholder": "请输入锁屏密码", + "btnText": "锁定" + }, + "unlock": { + "inputPlaceholder": "请输入解锁密码", + "btnText": "解锁", + "backBtnText": "返回登录" + } + }, + "greeting": { + "dawn": "凌晨了!", + "morning": "上午好!", + "afternoon": "下午好!", + "evening": "晚上好!" + }, + "exceptionPage": { + "gohome": "返回首页", + "403": "抱歉,您无权访问该页面", + "404": "抱歉,您访问的页面不存在", + "500": "抱歉,服务器出错了" + }, + "menus": { + "login": { + "title": "登录" + }, + "register": { + "title": "注册" + }, + "forgetPassword": { + "title": "忘记密码" + }, + "outside": { + "title": "内嵌页面" + }, + "dashboard": { + "title": "仪表盘", + "console": "工作台", + "analysis": "分析页", + "ecommerce": "电子商务" + }, + "widgets": { + "title": "组件中心", + "icon": "图标", + "imageCrop": "图像裁剪", + "excel": "Excel 导入导出", + "video": "视频播放器", + "countTo": "数字滚动", + "wangEditor": "富文本编辑器", + "watermark": "水印", + "contextMenu": "右键菜单", + "qrcode": "二维码", + "drag": "拖拽", + "textScroll": "文字滚动", + "fireworks": "礼花", + "elementUI": "组件总览" + }, + "template": { + "title": "模板中心", + "chat": "聊天", + "cards": "卡片", + "banners": "横幅", + "charts": "图表", + "map": "地图", + "calendar": "日历", + "pricing": "定价" + }, + "article": { + "title": "文章管理", + "articleList": "文章列表", + "articleDetail": "文章详情", + "comment": "留言管理", + "articlePublish": "文章发布" + }, + "result": { + "title": "结果页面", + "success": "成功页", + "fail": "失败页" + }, + "exception": { + "title": "异常页面", + "forbidden": "403", + "notFound": "404", + "serverError": "500" + }, + "examples": { + "title": "功能示例", + "tabs": "标签页", + "tablesBasic": "基础表格", + "tables": "高级表格", + "tablesTree": "左右布局表格", + "forms": "表单", + "searchBar": "搜索表单", + "socketChat": "Socket 连接", + "permission": { + "title": "前端权限", + "switchRole": "切换权限", + "buttonAuth": "按钮权限演示", + "pageVisibility": "超级管理员可见" + } + }, + "system": { + "title": "系统管理", + "user": "用户管理", + "role": "角色管理", + "userCenter": "个人中心", + "menu": "菜单管理", + "nested": "嵌套菜单", + "menu1": "菜单1", + "menu2": "菜单2", + "menu21": "菜单2-1", + "menu3": "菜单3", + "menu31": "菜单3-1", + "menu32": "菜单3-2", + "menu321": "菜单3-2-1" + }, + "safeguard": { + "title": "运维管理", + "server": "服务器管理" + }, + "plan": { + "title": "版本计划", + "log": "更新日志" + }, + "help": { + "title": "帮助中心", + "document": "官方文档", + "liteVersion": "精简版本", + "oldVersion": "v2.6.1 版本" + } + }, + "table": { + "form": { + "reset": "重置", + "submit": "提交" + }, + "searchBar": { + "reset": "重置", + "search": "查询", + "expand": "展开", + "collapse": "收起", + "searchInputPlaceholder": "请输入", + "searchSelectPlaceholder": "请选择" + }, + "selection": "选择", + "sizeOptions": { + "small": "紧凑", + "default": "默认", + "large": "宽松" + }, + "column": { + "selection": "勾选", + "expand": "展开", + "index": "序号" + }, + "zebra": "斑马纹", + "border": "边框", + "headerBackground": "表头背景" + } +} diff --git a/web-admin/src/main.ts b/web-admin/src/main.ts new file mode 100644 index 00000000..af44fcb8 --- /dev/null +++ b/web-admin/src/main.ts @@ -0,0 +1,74 @@ +import './utils/patch-el-select-filterable' +import App from './App.vue' +import { createApp } from 'vue' +import { initStore } from './store' // Store +import { initRouter } from './router' // Router +import language from './locales' // 国际化 +import '@styles/core/tailwind.css' // tailwind +import '@styles/index.scss' // 样式 +import '@utils/sys/console.ts' // 控制台输出内容 +import { setupGlobDirectives } from './directives' +import { setupErrorHandle } from './utils/sys/error-handle' +import AppConfig from './config' +import { useUserStore } from './store/modules/user' + +function maskSecret(value?: string) { + if (!value) return '(empty)' + if (value.length <= 6) return '*'.repeat(value.length) + return `${value.slice(0, 3)}***${value.slice(-3)}` +} + +function logApiCryptoBootInfo() { + const { + VITE_API_ENCRYPT_ENABLED, + VITE_API_ENCRYPT_FAIL_OPEN, + VITE_API_ENCRYPT_FIXED_SECRET, + VITE_API_ENCRYPT_EXCLUDE_PATHS + } = import.meta.env + const excludeCount = String(VITE_API_ENCRYPT_EXCLUDE_PATHS || '') + .split(',') + .map((item) => item.trim()) + .filter(Boolean).length + console.info( + '[API_CRYPTO_BOOT] enabled=%s failOpen=%s fixedSecret=%s excludeCount=%s mode=%s', + String(VITE_API_ENCRYPT_ENABLED || 'false'), + String(VITE_API_ENCRYPT_FAIL_OPEN || 'true'), + maskSecret(String(VITE_API_ENCRYPT_FIXED_SECRET || '')), + excludeCount, + import.meta.env.MODE + ) +} + +document.addEventListener( + 'touchstart', + function () {}, + { passive: false } +) + +logApiCryptoBootInfo() + +const app = createApp(App) +initStore(app) + +if (AppConfig.stylePreviewOnly) { + const u = useUserStore() + u.setLoginStatus(true) + u.setToken('style-preview-token', 'style-preview-refresh') + u.setUserInfo({ + id: '0', + username: 'style-preview', + realName: '样式预览', + role: 'super_admin', + phone: '', + regionId: '', + regionName: '', + isActive: true + } as Api.Auth.UserInfo) +} + +initRouter(app) +setupGlobDirectives(app) +setupErrorHandle(app) + +app.use(language) +app.mount('#app') \ No newline at end of file diff --git a/web-admin/src/mock/json/chinaMap.json b/web-admin/src/mock/json/chinaMap.json new file mode 100644 index 00000000..551c055b --- /dev/null +++ b/web-admin/src/mock/json/chinaMap.json @@ -0,0 +1,25643 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "adcode": 110000, + "name": "北京市", + "center": [116.405285, 39.904989], + "centroid": [116.41995, 40.18994], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 0, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [117.348611, 40.581141], + [117.389879, 40.561593], + [117.429915, 40.576141], + [117.412669, 40.605226], + [117.467487, 40.649738], + [117.467487, 40.649738], + [117.501364, 40.636569], + [117.514914, 40.660181], + [117.493973, 40.675161], + [117.408973, 40.686961], + [117.342451, 40.673799], + [117.319662, 40.657911], + [117.278394, 40.664267], + [117.208177, 40.694675], + [117.117018, 40.70012], + [117.11209, 40.707379], + [117.012308, 40.693767], + [116.964881, 40.709647], + [116.926692, 40.745022], + [116.924229, 40.773581], + [116.848468, 40.839264], + [116.81336, 40.848319], + [116.759773, 40.889954], + [116.713577, 40.909858], + [116.722201, 40.927495], + [116.677853, 40.970888], + [116.698795, 41.021477], + [116.688324, 41.044501], + [116.647672, 41.059394], + [116.615643, 41.053076], + [116.623034, 41.021026], + [116.598397, 40.974503], + [116.5676, 40.992574], + [116.519557, 40.98128], + [116.519557, 40.98128], + [116.455499, 40.980828], + [116.447492, 40.953715], + [116.477057, 40.899907], + [116.398216, 40.90624], + [116.370499, 40.94377], + [116.339702, 40.929303], + [116.334159, 40.90443], + [116.438253, 40.81934], + [116.46597, 40.774487], + [116.453651, 40.765876], + [116.316912, 40.772221], + [116.311369, 40.754996], + [116.273181, 40.762703], + [116.247311, 40.791707], + [116.22021, 40.744115], + [116.204812, 40.740035], + [116.171551, 40.695582], + [116.162928, 40.662451], + [116.133979, 40.666536], + [116.09887, 40.630665], + [116.005247, 40.583868], + [115.982457, 40.578868], + [115.971986, 40.6025], + [115.907929, 40.617493], + [115.885139, 40.595229], + [115.827857, 40.587504], + [115.819849, 40.55932], + [115.784741, 40.55841], + [115.755176, 40.540221], + [115.736082, 40.503372], + [115.781045, 40.49336], + [115.771806, 40.443734], + [115.864197, 40.359422], + [115.917784, 40.354405], + [115.95166, 40.281852], + [115.968907, 40.264045], + [115.89869, 40.234354], + [115.870356, 40.185909], + [115.855574, 40.188652], + [115.847567, 40.147036], + [115.806299, 40.15344], + [115.773654, 40.176307], + [115.75456, 40.145663], + [115.75456, 40.145663], + [115.599959, 40.119583], + [115.59072, 40.096239], + [115.527278, 40.076092], + [115.485394, 40.040364], + [115.454597, 40.029825], + [115.450286, 39.992697], + [115.428728, 39.984443], + [115.426264, 39.950502], + [115.481083, 39.935819], + [115.522967, 39.899099], + [115.515575, 39.892212], + [115.515575, 39.892212], + [115.526046, 39.87568], + [115.514344, 39.837549], + [115.567314, 39.816407], + [115.552532, 39.794799], + [115.50572, 39.784222], + [115.483547, 39.798477], + [115.483547, 39.798477], + [115.443511, 39.785601], + [115.439815, 39.752022], + [115.486626, 39.741899], + [115.491554, 39.670074], + [115.478619, 39.650723], + [115.478619, 39.650723], + [115.522351, 39.640124], + [115.518039, 39.597252], + [115.545756, 39.618922], + [115.587024, 39.589873], + [115.633836, 39.599557], + [115.633836, 39.599557], + [115.667712, 39.615234], + [115.698509, 39.577881], + [115.698509, 39.577881], + [115.699125, 39.570039], + [115.699125, 39.570039], + [115.716988, 39.56035], + [115.716988, 39.56035], + [115.718835, 39.553891], + [115.718835, 39.553891], + [115.720683, 39.551122], + [115.720683, 39.551122], + [115.722531, 39.5442], + [115.721299, 39.543738], + [115.722531, 39.5442], + [115.722531, 39.543738], + [115.721299, 39.543738], + [115.722531, 39.543738], + [115.724995, 39.5442], + [115.724995, 39.5442], + [115.738545, 39.540046], + [115.738545, 39.539585], + [115.738545, 39.540046], + [115.738545, 39.539585], + [115.752712, 39.515581], + [115.806299, 39.510041], + [115.806299, 39.510041], + [115.821081, 39.522968], + [115.821081, 39.522968], + [115.828473, 39.541431], + [115.867893, 39.546507], + [115.867893, 39.546507], + [115.91532, 39.582955], + [115.91532, 39.582955], + [115.910393, 39.600479], + [115.910393, 39.600479], + [115.957204, 39.560812], + [115.978146, 39.595868], + [115.995392, 39.576958], + [116.026189, 39.587567], + [116.036044, 39.571884], + [116.09887, 39.575113], + [116.130283, 39.567732], + [116.151841, 39.583416], + [116.198652, 39.589412], + [116.240536, 39.564041], + [116.257782, 39.500344], + [116.307057, 39.488337], + [116.337854, 39.455536], + [116.361876, 39.455074], + [116.361876, 39.455074], + [116.434557, 39.442597], + [116.454883, 39.453226], + [116.444412, 39.482332], + [116.411767, 39.482794], + [116.401912, 39.528046], + [116.443796, 39.510041], + [116.437637, 39.526661], + [116.478289, 39.535431], + [116.473361, 39.552968], + [116.50847, 39.551122], + [116.524484, 39.596329], + [116.592237, 39.621227], + [116.592237, 39.621227], + [116.620571, 39.601863], + [116.664918, 39.605552], + [116.723432, 39.59264], + [116.724048, 39.59264], + [116.723432, 39.59264], + [116.724048, 39.59264], + [116.726512, 39.595407], + [116.726512, 39.595407], + [116.709266, 39.618], + [116.748686, 39.619844], + [116.79057, 39.595868], + [116.812128, 39.615695], + [116.8497, 39.66777], + [116.906366, 39.677444], + [116.90575, 39.688037], + [116.889736, 39.687576], + [116.887272, 39.72533], + [116.916837, 39.731314], + [116.902055, 39.763523], + [116.949482, 39.778703], + [116.918069, 39.84628], + [116.907598, 39.832494], + [116.865714, 39.843982], + [116.812128, 39.889916], + [116.78441, 39.891294], + [116.782563, 39.947749], + [116.757925, 39.967934], + [116.781331, 40.034866], + [116.820135, 40.02845], + [116.831222, 40.051359], + [116.867562, 40.041739], + [116.927924, 40.055024], + [116.945171, 40.04128], + [117.025243, 40.030283], + [117.051728, 40.059605], + [117.105315, 40.074261], + [117.105315, 40.074261], + [117.140423, 40.064185], + [117.159517, 40.077008], + [117.204481, 40.069681], + [117.210024, 40.082045], + [117.224191, 40.094865], + [117.224191, 40.094865], + [117.254988, 40.114548], + [117.254988, 40.114548], + [117.254988, 40.114548], + [117.274082, 40.105852], + [117.307343, 40.136971], + [117.349227, 40.136513], + [117.367089, 40.172649], + [117.367089, 40.173106], + [117.367089, 40.173106], + [117.367089, 40.172649], + [117.383719, 40.188195], + [117.389879, 40.227958], + [117.351075, 40.229786], + [117.331365, 40.289613], + [117.295024, 40.2782], + [117.271618, 40.325211], + [117.271618, 40.325211], + [117.243285, 40.369453], + [117.226039, 40.368997], + [117.234046, 40.417312], + [117.263611, 40.442367], + [117.208793, 40.501552], + [117.262995, 40.512927], + [117.247597, 40.539766], + [117.269771, 40.560684], + [117.348611, 40.581141], + [117.348611, 40.581141] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 120000, + "name": "天津市", + "center": [117.190182, 39.125596], + "centroid": [117.347043, 39.288036], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 1, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [117.765602, 39.400527], + [117.846906, 39.407926], + [117.871543, 39.411625], + [117.870311, 39.455074], + [117.899877, 39.474479], + [117.912195, 39.517428], + [117.912195, 39.517428], + [117.904804, 39.533585], + [117.933753, 39.574191], + [117.868464, 39.59679], + [117.829659, 39.589873], + [117.766834, 39.598635], + [117.753899, 39.579726], + [117.753899, 39.579726], + [117.745276, 39.547892], + [117.715711, 39.529892], + [117.707088, 39.576036], + [117.684914, 39.58895], + [117.654117, 39.575113], + [117.637486, 39.603246], + [117.66274, 39.636437], + [117.668899, 39.666849], + [117.627015, 39.703693], + [117.57774, 39.726711], + [117.595603, 39.74604], + [117.56111, 39.754782], + [117.546327, 39.775943], + [117.561726, 39.799856], + [117.529081, 39.859144], + [117.529081, 39.859144], + [117.508139, 39.901854], + [117.508139, 39.901854], + [117.512451, 39.90874], + [117.512451, 39.90874], + [117.513067, 39.910576], + [117.513067, 39.910576], + [117.514914, 39.946832], + [117.534625, 39.954631], + [117.546327, 39.999116], + [117.594987, 39.994531], + [117.594987, 39.994531], + [117.614697, 39.97252], + [117.671363, 39.973896], + [117.691073, 39.984902], + [117.756363, 39.965181], + [117.781616, 39.966558], + [117.781616, 39.966558], + [117.795167, 39.996823], + [117.795167, 39.996823], + [117.793319, 40.005534], + [117.793319, 40.005534], + [117.768681, 40.022034], + [117.768681, 40.022034], + [117.744044, 40.018368], + [117.74774, 40.047236], + [117.776073, 40.059605], + [117.752667, 40.081588], + [117.71879, 40.082045], + [117.71879, 40.082045], + [117.675059, 40.082045], + [117.655965, 40.109514], + [117.655965, 40.109514], + [117.654117, 40.114548], + [117.654117, 40.114548], + [117.651653, 40.122786], + [117.651653, 40.122786], + [117.613465, 40.158014], + [117.613465, 40.158014], + [117.609769, 40.160301], + [117.609769, 40.160301], + [117.576508, 40.178593], + [117.571581, 40.219276], + [117.548791, 40.232527], + [117.505059, 40.227044], + [117.450241, 40.252627], + [117.415748, 40.248973], + [117.389879, 40.227958], + [117.383719, 40.188195], + [117.367089, 40.172649], + [117.367089, 40.173106], + [117.367089, 40.173106], + [117.367089, 40.172649], + [117.349227, 40.136513], + [117.307343, 40.136971], + [117.274082, 40.105852], + [117.254988, 40.114548], + [117.254988, 40.114548], + [117.254988, 40.114548], + [117.224191, 40.094865], + [117.224191, 40.094865], + [117.210024, 40.082045], + [117.192162, 40.066475], + [117.198322, 39.992697], + [117.150894, 39.944996], + [117.162597, 39.876598], + [117.162597, 39.876598], + [117.227887, 39.852712], + [117.247597, 39.860981], + [117.251908, 39.834332], + [117.192162, 39.832953], + [117.156438, 39.817326], + [117.15767, 39.796638], + [117.205713, 39.763984], + [117.161981, 39.748801], + [117.165061, 39.718886], + [117.165061, 39.718886], + [117.177996, 39.645194], + [117.152742, 39.623532], + [117.10901, 39.625375], + [117.10901, 39.625375], + [117.016004, 39.653949], + [116.983359, 39.638742], + [116.983359, 39.638742], + [116.964265, 39.64335], + [116.948866, 39.680668], + [116.948866, 39.680668], + [116.944555, 39.695405], + [116.944555, 39.695405], + [116.932236, 39.706456], + [116.932236, 39.706456], + [116.90575, 39.688037], + [116.906366, 39.677444], + [116.8497, 39.66777], + [116.812128, 39.615695], + [116.808432, 39.576497], + [116.78749, 39.554352], + [116.819519, 39.528507], + [116.820751, 39.482332], + [116.785026, 39.465702], + [116.832454, 39.435664], + [116.876185, 39.43474], + [116.839845, 39.413474], + [116.840461, 39.378326], + [116.818287, 39.3737], + [116.829374, 39.338994], + [116.870642, 39.357506], + [116.889736, 39.338068], + [116.87249, 39.291304], + [116.881729, 39.225966], + [116.881729, 39.225966], + [116.855859, 39.215766], + [116.870026, 39.153607], + [116.909446, 39.150822], + [116.912526, 39.110898], + [116.91191, 39.111362], + [116.91191, 39.111362], + [116.912526, 39.110898], + [116.871874, 39.054688], + [116.812744, 39.05097], + [116.812744, 39.05097], + [116.783179, 39.05097], + [116.783179, 39.05097], + [116.754229, 39.034701], + [116.754229, 39.034701], + [116.754845, 39.003084], + [116.72836, 38.975174], + [116.708034, 38.931892], + [116.722201, 38.896968], + [116.723432, 38.852706], + [116.75115, 38.831264], + [116.737599, 38.784629], + [116.746222, 38.754299], + [116.794265, 38.744498], + [116.794265, 38.744498], + [116.858939, 38.741231], + [116.877417, 38.680522], + [116.948866, 38.689398], + [116.950714, 38.689398], + [116.95133, 38.689398], + [116.950714, 38.689398], + [116.948866, 38.689398], + [116.95133, 38.689398], + [117.038793, 38.688464], + [117.068358, 38.680522], + [117.055424, 38.639398], + [117.070822, 38.608072], + [117.109626, 38.584685], + [117.150894, 38.617892], + [117.183539, 38.61836], + [117.183539, 38.61836], + [117.213104, 38.639866], + [117.213104, 38.639866], + [117.258684, 38.608072], + [117.258684, 38.608072], + [117.238358, 38.580943], + [117.25314, 38.556143], + [117.368937, 38.564566], + [117.432379, 38.601524], + [117.47919, 38.616489], + [117.55803, 38.613683], + [117.639334, 38.626776], + [117.65658, 38.66043], + [117.729261, 38.680055], + [117.740964, 38.700141], + [117.740964, 38.753833], + [117.671363, 38.772032], + [117.646725, 38.788827], + [117.64611, 38.828933], + [117.752051, 38.847579], + [117.778536, 38.869016], + [117.847522, 38.855502], + [117.875855, 38.920252], + [117.898029, 38.948649], + [117.855529, 38.957492], + [117.837667, 39.057011], + [117.871543, 39.122506], + [117.96455, 39.172631], + [117.977485, 39.206028], + [118.032919, 39.219939], + [118.034767, 39.218548], + [118.064948, 39.231065], + [118.064948, 39.256094], + [118.036615, 39.264898], + [118.024296, 39.289451], + [118.024296, 39.289451], + [117.982412, 39.298714], + [117.982412, 39.298714], + [117.979333, 39.300566], + [117.979333, 39.300566], + [117.973173, 39.312143], + [117.973173, 39.312143], + [117.965782, 39.314921], + [117.965782, 39.314921], + [117.919587, 39.318162], + [117.919587, 39.318162], + [117.88879, 39.332051], + [117.854913, 39.328348], + [117.854297, 39.328348], + [117.854913, 39.328348], + [117.854297, 39.328348], + [117.850601, 39.363984], + [117.850601, 39.363984], + [117.810565, 39.354729], + [117.805022, 39.373237], + [117.784696, 39.376938], + [117.74466, 39.354729], + [117.670747, 39.357969], + [117.669515, 39.322792], + [117.594987, 39.349176], + [117.536472, 39.338068], + [117.521074, 39.357043], + [117.570965, 39.404689], + [117.601146, 39.419485], + [117.614081, 39.407001], + [117.668899, 39.412087], + [117.673211, 39.386652], + [117.699696, 39.407463], + [117.765602, 39.400527] + ] + ], + [ + [ + [117.805022, 39.373237], + [117.852449, 39.380639], + [117.846906, 39.407926], + [117.765602, 39.400527], + [117.784696, 39.376938], + [117.805022, 39.373237] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 130000, + "name": "河北省", + "center": [114.502461, 38.045474], + "childrenNum": 11, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 2, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [117.467487, 40.649738], + [117.412669, 40.605226], + [117.429915, 40.576141], + [117.389879, 40.561593], + [117.348611, 40.581141], + [117.348611, 40.581141], + [117.269771, 40.560684], + [117.247597, 40.539766], + [117.262995, 40.512927], + [117.208793, 40.501552], + [117.263611, 40.442367], + [117.234046, 40.417312], + [117.226039, 40.368997], + [117.243285, 40.369453], + [117.271618, 40.325211], + [117.271618, 40.325211], + [117.295024, 40.2782], + [117.331365, 40.289613], + [117.351075, 40.229786], + [117.389879, 40.227958], + [117.415748, 40.248973], + [117.450241, 40.252627], + [117.505059, 40.227044], + [117.548791, 40.232527], + [117.571581, 40.219276], + [117.576508, 40.178593], + [117.609769, 40.160301], + [117.609769, 40.160301], + [117.613465, 40.158014], + [117.613465, 40.158014], + [117.651653, 40.122786], + [117.651653, 40.122786], + [117.654117, 40.114548], + [117.654117, 40.114548], + [117.655965, 40.109514], + [117.655965, 40.109514], + [117.675059, 40.082045], + [117.71879, 40.082045], + [117.71879, 40.082045], + [117.752667, 40.081588], + [117.776073, 40.059605], + [117.74774, 40.047236], + [117.744044, 40.018368], + [117.768681, 40.022034], + [117.768681, 40.022034], + [117.793319, 40.005534], + [117.793319, 40.005534], + [117.795167, 39.996823], + [117.795167, 39.996823], + [117.781616, 39.966558], + [117.781616, 39.966558], + [117.756363, 39.965181], + [117.691073, 39.984902], + [117.671363, 39.973896], + [117.614697, 39.97252], + [117.594987, 39.994531], + [117.594987, 39.994531], + [117.546327, 39.999116], + [117.534625, 39.954631], + [117.514914, 39.946832], + [117.513067, 39.910576], + [117.513067, 39.910576], + [117.512451, 39.90874], + [117.512451, 39.90874], + [117.508139, 39.901854], + [117.508139, 39.901854], + [117.529081, 39.859144], + [117.529081, 39.859144], + [117.561726, 39.799856], + [117.546327, 39.775943], + [117.56111, 39.754782], + [117.595603, 39.74604], + [117.57774, 39.726711], + [117.627015, 39.703693], + [117.668899, 39.666849], + [117.66274, 39.636437], + [117.637486, 39.603246], + [117.654117, 39.575113], + [117.684914, 39.58895], + [117.707088, 39.576036], + [117.715711, 39.529892], + [117.745276, 39.547892], + [117.753899, 39.579726], + [117.753899, 39.579726], + [117.766834, 39.598635], + [117.829659, 39.589873], + [117.868464, 39.59679], + [117.933753, 39.574191], + [117.904804, 39.533585], + [117.912195, 39.517428], + [117.912195, 39.517428], + [117.899877, 39.474479], + [117.870311, 39.455074], + [117.871543, 39.411625], + [117.846906, 39.407926], + [117.852449, 39.380639], + [117.805022, 39.373237], + [117.810565, 39.354729], + [117.850601, 39.363984], + [117.850601, 39.363984], + [117.854297, 39.328348], + [117.854913, 39.328348], + [117.854297, 39.328348], + [117.854913, 39.328348], + [117.88879, 39.332051], + [117.919587, 39.318162], + [117.919587, 39.318162], + [117.965782, 39.314921], + [117.965782, 39.314921], + [117.973173, 39.312143], + [117.973173, 39.312143], + [117.979333, 39.300566], + [117.979333, 39.300566], + [117.982412, 39.298714], + [117.982412, 39.298714], + [118.024296, 39.289451], + [118.024296, 39.289451], + [118.036615, 39.264898], + [118.064948, 39.256094], + [118.064948, 39.231065], + [118.034767, 39.218548], + [118.026144, 39.201854], + [118.070492, 39.213911], + [118.077883, 39.201854], + [118.12531, 39.182838], + [118.162883, 39.136433], + [118.1906, 39.080708], + [118.225092, 39.034701], + [118.319331, 39.009594], + [118.366143, 39.016104], + [118.377845, 38.971917], + [118.491178, 38.909077], + [118.539837, 38.910008], + [118.604511, 38.971452], + [118.570634, 38.999363], + [118.533062, 39.090928], + [118.588497, 39.107648], + [118.578642, 39.130863], + [118.637156, 39.157319], + [118.76096, 39.133648], + [118.814546, 39.138754], + [118.857662, 39.162888], + [118.897082, 39.151286], + [118.920488, 39.171703], + [118.951285, 39.178662], + [118.896466, 39.139683], + [118.890307, 39.118792], + [118.926031, 39.123435], + [118.97777, 39.163352], + [119.023966, 39.187012], + [119.038132, 39.211593], + [119.096031, 39.24219], + [119.121284, 39.281576], + [119.185342, 39.342234], + [119.272805, 39.363521], + [119.317153, 39.4107], + [119.316537, 39.437051], + [119.269726, 39.498497], + [119.366428, 39.734996], + [119.474217, 39.813189], + [119.536427, 39.809052], + [119.520413, 39.840306], + [119.540739, 39.888079], + [119.588166, 39.910576], + [119.620195, 39.904609], + [119.642369, 39.925264], + [119.681789, 39.922511], + [119.726137, 39.940867], + [119.787115, 39.950502], + [119.820375, 39.979399], + [119.842549, 39.956007], + [119.872114, 39.960594], + [119.854252, 39.98857], + [119.845629, 40.000949], + [119.845629, 40.000949], + [119.854252, 40.033033], + [119.81668, 40.050443], + [119.81668, 40.050443], + [119.787115, 40.041739], + [119.787115, 40.041739], + [119.783419, 40.046778], + [119.783419, 40.046778], + [119.772332, 40.08113], + [119.736608, 40.104936], + [119.760629, 40.136056], + [119.745847, 40.207851], + [119.716898, 40.195966], + [119.671934, 40.23938], + [119.639289, 40.231613], + [119.639289, 40.231613], + [119.651608, 40.271808], + [119.598021, 40.334335], + [119.586934, 40.375381], + [119.604797, 40.455119], + [119.553674, 40.502007], + [119.572152, 40.523846], + [119.559217, 40.547952], + [119.503783, 40.553864], + [119.477913, 40.533399], + [119.429254, 40.540221], + [119.30237, 40.530215], + [119.256175, 40.543404], + [119.22045, 40.569322], + [119.230921, 40.603863], + [119.177951, 40.609315], + [119.162552, 40.600228], + [119.14469, 40.632482], + [119.184726, 40.680153], + [119.165632, 40.69286], + [119.115125, 40.666536], + [119.054763, 40.664721], + [119.028277, 40.692406], + [119.011031, 40.687414], + [118.96114, 40.72008], + [118.950053, 40.747743], + [118.895234, 40.75409], + [118.907553, 40.775394], + [118.878604, 40.783098], + [118.845959, 40.822057], + [118.873061, 40.847866], + [118.90201, 40.960946], + [118.916792, 40.969984], + [118.977154, 40.959138], + [118.977154, 40.959138], + [119.00056, 40.967273], + [119.013495, 41.007479], + [118.951901, 41.018317], + [118.937118, 41.052625], + [118.964836, 41.079246], + [119.037516, 41.067516], + [119.080632, 41.095936], + [119.081248, 41.131555], + [119.126212, 41.138767], + [119.189038, 41.198234], + [119.169943, 41.222996], + [119.204436, 41.222546], + [119.209364, 41.244599], + [119.2494, 41.279689], + [119.239545, 41.31431], + [119.211827, 41.308016], + [119.197661, 41.282837], + [119.168712, 41.294978], + [119.092951, 41.293629], + [118.980234, 41.305769], + [118.949437, 41.317906], + [118.890923, 41.300823], + [118.844727, 41.342622], + [118.843496, 41.374516], + [118.770199, 41.352956], + [118.741866, 41.324198], + [118.677192, 41.35026], + [118.629765, 41.346666], + [118.528135, 41.355202], + [118.412338, 41.331838], + [118.380309, 41.312062], + [118.348896, 41.342622], + [118.361215, 41.384844], + [118.348896, 41.428384], + [118.327338, 41.450816], + [118.271904, 41.471446], + [118.315636, 41.512688], + [118.302701, 41.55256], + [118.215237, 41.59554], + [118.206614, 41.650566], + [118.159187, 41.67605], + [118.155491, 41.712694], + [118.132702, 41.733241], + [118.140093, 41.784134], + [118.178281, 41.814917], + [118.236179, 41.80778], + [118.247266, 41.773869], + [118.29223, 41.772976], + [118.335346, 41.845241], + [118.340273, 41.87243], + [118.268824, 41.930336], + [118.306396, 41.940131], + [118.313788, 41.98819], + [118.291614, 42.007759], + [118.239875, 42.024655], + [118.286686, 42.033991], + [118.296541, 42.057545], + [118.27252, 42.083312], + [118.239259, 42.092639], + [118.212774, 42.081091], + [118.220165, 42.058434], + [118.194296, 42.031324], + [118.116687, 42.037102], + [118.155491, 42.081091], + [118.097593, 42.105072], + [118.089586, 42.12283], + [118.106216, 42.172082], + [118.033535, 42.199132], + [117.977485, 42.229716], + [117.974405, 42.25054], + [118.047702, 42.280656], + [118.060021, 42.298364], + [118.008898, 42.346595], + [118.024296, 42.385064], + [117.997811, 42.416884], + [117.874007, 42.510038], + [117.856761, 42.539148], + [117.797631, 42.585431], + [117.801326, 42.612744], + [117.779768, 42.61847], + [117.708935, 42.588515], + [117.667051, 42.582347], + [117.60053, 42.603054], + [117.537088, 42.603054], + [117.530313, 42.590278], + [117.475494, 42.602613], + [117.435458, 42.585431], + [117.434226, 42.557224], + [117.387415, 42.517537], + [117.387415, 42.517537], + [117.410205, 42.519743], + [117.413284, 42.471645], + [117.390495, 42.461933], + [117.332596, 42.46105], + [117.332596, 42.46105], + [117.275314, 42.481797], + [117.275314, 42.481797], + [117.188467, 42.468114], + [117.188467, 42.468114], + [117.135496, 42.468996], + [117.09546, 42.484004], + [117.080061, 42.463699], + [117.080061, 42.463699], + [117.01662, 42.456193], + [117.01662, 42.456193], + [117.009228, 42.44957], + [117.009228, 42.44957], + [117.005533, 42.43367], + [117.005533, 42.43367], + [116.99075, 42.425719], + [116.99075, 42.425719], + [116.974736, 42.426603], + [116.974736, 42.426603], + [116.97104, 42.427486], + [116.97104, 42.427486], + [116.944555, 42.415116], + [116.944555, 42.415116], + [116.936547, 42.410256], + [116.936547, 42.410256], + [116.921765, 42.403628], + [116.921765, 42.403628], + [116.910062, 42.395231], + [116.910062, 42.395231], + [116.910678, 42.394789], + [116.910678, 42.394789], + [116.886656, 42.366496], + [116.897743, 42.297479], + [116.918685, 42.229716], + [116.903287, 42.190708], + [116.789338, 42.200462], + [116.825062, 42.155669], + [116.850316, 42.156556], + [116.890352, 42.092639], + [116.879881, 42.018431], + [116.796113, 41.977958], + [116.748686, 41.984186], + [116.727744, 41.951259], + [116.66923, 41.947698], + [116.639049, 41.929891], + [116.597165, 41.935679], + [116.553433, 41.928555], + [116.510933, 41.974399], + [116.4826, 41.975734], + [116.453651, 41.945917], + [116.393289, 41.942802], + [116.414231, 41.982407], + [116.373579, 42.009983], + [116.310137, 41.997086], + [116.298434, 41.96817], + [116.223906, 41.932562], + [116.212819, 41.885352], + [116.194341, 41.861734], + [116.122892, 41.861734], + [116.106877, 41.831419], + [116.129051, 41.805996], + [116.09887, 41.776547], + [116.034196, 41.782795], + [116.007095, 41.79752], + [116.007095, 41.797966], + [116.007095, 41.79752], + [116.007095, 41.797966], + [115.994776, 41.828743], + [115.954124, 41.874213], + [115.916552, 41.945027], + [115.85311, 41.927665], + [115.834632, 41.93835], + [115.811226, 41.912525], + [115.726227, 41.870202], + [115.688038, 41.867528], + [115.654162, 41.829189], + [115.57409, 41.80555], + [115.519887, 41.76762], + [115.488474, 41.760924], + [115.42996, 41.728775], + [115.346808, 41.712247], + [115.319091, 41.691693], + [115.360975, 41.661297], + [115.345576, 41.635807], + [115.377605, 41.603148], + [115.310468, 41.592854], + [115.290142, 41.622835], + [115.26612, 41.616124], + [115.256881, 41.580768], + [115.20391, 41.571367], + [115.195287, 41.602253], + [115.0992, 41.62373], + [115.056085, 41.602253], + [115.016049, 41.615229], + [114.860832, 41.60091], + [114.895325, 41.636255], + [114.902716, 41.695715], + [114.89594, 41.76762], + [114.868839, 41.813579], + [114.922426, 41.825175], + [114.939056, 41.846132], + [114.923658, 41.871093], + [114.915035, 41.960605], + [114.9021, 42.015763], + [114.860832, 42.054879], + [114.86268, 42.097967], + [114.825723, 42.139695], + [114.79431, 42.149457], + [114.789383, 42.130819], + [114.75489, 42.115727], + [114.675434, 42.12061], + [114.647717, 42.109512], + [114.560254, 42.132595], + [114.510978, 42.110844], + [114.502355, 42.06732], + [114.480181, 42.064654], + [114.467863, 42.025989], + [114.511594, 41.981962], + [114.478334, 41.951704], + [114.419203, 41.942356], + [114.352066, 41.953484], + [114.343443, 41.926774], + [114.282465, 41.863517], + [114.200545, 41.789934], + [114.215328, 41.75646], + [114.206704, 41.7386], + [114.237501, 41.698843], + [114.215328, 41.68499], + [114.259059, 41.623282], + [114.226414, 41.616572], + [114.221487, 41.582111], + [114.230726, 41.513584], + [114.101379, 41.537779], + [114.032394, 41.529715], + [113.976959, 41.505966], + [113.953553, 41.483553], + [113.933227, 41.487139], + [113.919677, 41.454404], + [113.877793, 41.431076], + [113.871017, 41.413126], + [113.94493, 41.392477], + [113.92522, 41.325546], + [113.899351, 41.316108], + [113.914749, 41.294529], + [113.95109, 41.282837], + [113.971416, 41.239649], + [113.992357, 41.269794], + [114.016379, 41.231999], + [113.996669, 41.19238], + [113.960945, 41.171211], + [113.920293, 41.172112], + [113.877793, 41.115777], + [113.819279, 41.09774], + [113.868554, 41.06887], + [113.973263, 40.983087], + [113.994821, 40.938798], + [114.057647, 40.925234], + [114.041633, 40.917546], + [114.055183, 40.867782], + [114.073661, 40.857372], + [114.044712, 40.830661], + [114.080437, 40.790348], + [114.104458, 40.797597], + [114.103227, 40.770861], + [114.134639, 40.737314], + [114.162357, 40.71373], + [114.183299, 40.67153], + [114.236269, 40.607043], + [114.283081, 40.590685], + [114.273842, 40.552954], + [114.293552, 40.55159], + [114.282465, 40.494725], + [114.267066, 40.474242], + [114.299711, 40.44009], + [114.286161, 40.425057], + [114.31203, 40.372645], + [114.381015, 40.36307], + [114.390254, 40.351213], + [114.438914, 40.371733], + [114.481413, 40.34802], + [114.530688, 40.345283], + [114.510978, 40.302851], + [114.46971, 40.268155], + [114.406269, 40.246232], + [114.362537, 40.249886], + [114.292936, 40.230242], + [114.255364, 40.236182], + [114.235654, 40.198252], + [114.180219, 40.191395], + [114.135871, 40.175392], + [114.097683, 40.193681], + [114.073046, 40.168533], + [114.073046, 40.168533], + [114.101995, 40.099901], + [114.086596, 40.071513], + [114.045944, 40.056856], + [114.018227, 40.103563], + [113.989278, 40.11226], + [113.959097, 40.033491], + [113.910438, 40.015618], + [114.029314, 39.985819], + [114.028082, 39.959218], + [114.047176, 39.916085], + [114.067502, 39.922511], + [114.17406, 39.897722], + [114.212248, 39.918839], + [114.229494, 39.899558], + [114.204241, 39.885324], + [114.215943, 39.8619], + [114.286776, 39.871087], + [114.285545, 39.858225], + [114.395182, 39.867412], + [114.406885, 39.833413], + [114.390254, 39.819165], + [114.41674, 39.775943], + [114.409964, 39.761683], + [114.408117, 39.652106], + [114.431522, 39.613851], + [114.49558, 39.608318], + [114.51529, 39.564964], + [114.568877, 39.573729], + [114.532536, 39.486027], + [114.501739, 39.476789], + [114.496812, 39.438437], + [114.469095, 39.400989], + [114.466631, 39.329736], + [114.430906, 39.307513], + [114.437066, 39.259337], + [114.416124, 39.242654], + [114.47587, 39.21623], + [114.443841, 39.174023], + [114.388406, 39.176807], + [114.360689, 39.134112], + [114.369928, 39.107648], + [114.345907, 39.075133], + [114.252284, 39.073739], + [114.180835, 39.049111], + [114.157429, 39.061194], + [114.10877, 39.052364], + [114.082901, 39.09325], + [114.082901, 39.09325], + [114.064422, 39.094179], + [114.050872, 39.135969], + [114.006524, 39.122971], + [113.994821, 39.095572], + [113.961561, 39.100681], + [113.930148, 39.063517], + [113.898119, 39.067699], + [113.80696, 38.989595], + [113.776779, 38.986804], + [113.76754, 38.959819], + [113.776163, 38.885788], + [113.795257, 38.860628], + [113.855619, 38.828933], + [113.836525, 38.795824], + [113.839605, 38.7585], + [113.802648, 38.763166], + [113.775547, 38.709949], + [113.720728, 38.713218], + [113.70225, 38.651551], + [113.612939, 38.645942], + [113.603084, 38.587024], + [113.561816, 38.558483], + [113.546417, 38.492936], + [113.583374, 38.459671], + [113.537794, 38.417952], + [113.525475, 38.383245], + [113.557504, 38.343359], + [113.54457, 38.270569], + [113.570439, 38.237202], + [113.598772, 38.22733], + [113.64312, 38.232031], + [113.678844, 38.20523], + [113.711489, 38.213695], + [113.720728, 38.174656], + [113.797105, 38.162894], + [113.831597, 38.16854], + [113.811271, 38.117707], + [113.876561, 38.055059], + [113.872249, 37.990471], + [113.901198, 37.984811], + [113.936307, 37.922993], + [113.959097, 37.906468], + [113.976959, 37.816696], + [114.006524, 37.813386], + [114.044712, 37.761834], + [113.996669, 37.730128], + [113.993589, 37.706932], + [114.068118, 37.721608], + [114.12848, 37.698409], + [114.139567, 37.675676], + [114.115545, 37.619761], + [114.118625, 37.59084], + [114.036705, 37.494037], + [114.014531, 37.42468], + [113.973879, 37.40329], + [113.962792, 37.355734], + [113.90243, 37.310052], + [113.886416, 37.239095], + [113.853155, 37.215269], + [113.832213, 37.167594], + [113.773083, 37.151855], + [113.773699, 37.107004], + [113.758301, 37.075497], + [113.788482, 37.059739], + [113.771851, 37.016745], + [113.791561, 36.98759], + [113.76138, 36.956034], + [113.792793, 36.894796], + [113.773083, 36.85506], + [113.731815, 36.858891], + [113.731815, 36.878521], + [113.696707, 36.882351], + [113.676381, 36.855539], + [113.680692, 36.789907], + [113.600004, 36.752995], + [113.549497, 36.752515], + [113.535946, 36.732373], + [113.499606, 36.740527], + [113.465113, 36.707908], + [113.506997, 36.705029], + [113.476816, 36.655114], + [113.486671, 36.635427], + [113.54457, 36.62342], + [113.539642, 36.594116], + [113.569823, 36.585947], + [113.588917, 36.547974], + [113.559968, 36.528741], + [113.554425, 36.494589], + [113.587069, 36.460904], + [113.635729, 36.451277], + [113.670221, 36.425278], + [113.708409, 36.423352], + [113.731199, 36.363135], + [113.755221, 36.366026], + [113.813119, 36.332285], + [113.856851, 36.329392], + [113.84946, 36.347711], + [113.882104, 36.353977], + [113.911054, 36.314927], + [113.962792, 36.353977], + [113.981887, 36.31782], + [114.002828, 36.334214], + [114.056415, 36.329392], + [114.04348, 36.303353], + [114.080437, 36.269585], + [114.129096, 36.280199], + [114.175907, 36.264759], + [114.170364, 36.245938], + [114.170364, 36.245938], + [114.203009, 36.245456], + [114.2104, 36.272962], + [114.241197, 36.251247], + [114.257827, 36.263794], + [114.299095, 36.245938], + [114.345291, 36.255591], + [114.356378, 36.230492], + [114.408117, 36.224699], + [114.417356, 36.205868], + [114.466015, 36.197658], + [114.480181, 36.177855], + [114.533152, 36.171575], + [114.586739, 36.141133], + [114.588587, 36.118414], + [114.640326, 36.137266], + [114.720398, 36.140166], + [114.734564, 36.15563], + [114.771521, 36.124699], + [114.857752, 36.127599], + [114.858368, 36.144516], + [114.912571, 36.140649], + [114.926737, 36.089403], + [114.914419, 36.052155], + [114.998186, 36.069572], + [115.04623, 36.112613], + [115.048693, 36.161912], + [115.06286, 36.178338], + [115.104744, 36.172058], + [115.12507, 36.209731], + [115.1842, 36.193312], + [115.201446, 36.210214], + [115.201446, 36.210214], + [115.202678, 36.209248], + [115.202678, 36.209248], + [115.202678, 36.208765], + [115.202678, 36.208765], + [115.242098, 36.19138], + [115.279055, 36.13775], + [115.30246, 36.127599], + [115.312931, 36.088436], + [115.365902, 36.099074], + [115.376989, 36.128083], + [115.450902, 36.152248], + [115.465068, 36.170125], + [115.483547, 36.148865], + [115.474923, 36.248352], + [115.466916, 36.258969], + [115.466916, 36.258969], + [115.462605, 36.276339], + [115.417025, 36.292742], + [115.423185, 36.32216], + [115.366518, 36.30914], + [115.368982, 36.342409], + [115.340033, 36.398307], + [115.297533, 36.413239], + [115.317243, 36.454166], + [115.291374, 36.460423], + [115.272895, 36.497476], + [115.33141, 36.550378], + [115.355431, 36.627262], + [115.365902, 36.621979], + [115.420105, 36.686795], + [115.451518, 36.702151], + [115.479851, 36.760187], + [115.524815, 36.763543], + [115.683727, 36.808117], + [115.71206, 36.883308], + [115.75764, 36.902453], + [115.79706, 36.968945], + [115.776734, 36.992848], + [115.85619, 37.060694], + [115.888219, 37.112254], + [115.879596, 37.150901], + [115.91224, 37.177132], + [115.909777, 37.20669], + [115.969523, 37.239572], + [115.975682, 37.337179], + [116.024341, 37.360015], + [116.085935, 37.373809], + [116.106261, 37.368577], + [116.169087, 37.384271], + [116.193109, 37.365723], + [116.236224, 37.361442], + [116.2855, 37.404241], + [116.226369, 37.428007], + [116.243, 37.447965], + [116.224522, 37.479791], + [116.240536, 37.489764], + [116.240536, 37.489764], + [116.27626, 37.466967], + [116.290427, 37.484065], + [116.278724, 37.524895], + [116.295355, 37.554316], + [116.336007, 37.581355], + [116.36742, 37.566177], + [116.379738, 37.522047], + [116.38097, 37.522522], + [116.379738, 37.522047], + [116.38097, 37.522522], + [116.433941, 37.473142], + [116.448108, 37.503059], + [116.4826, 37.521573], + [116.575607, 37.610754], + [116.604556, 37.624975], + [116.66307, 37.686096], + [116.679085, 37.728708], + [116.724664, 37.744327], + [116.753613, 37.77035], + [116.753613, 37.793054], + [116.804736, 37.848837], + [116.837997, 37.835132], + [116.919301, 37.846002], + [117.027091, 37.832296], + [117.074518, 37.848837], + [117.150278, 37.839385], + [117.185387, 37.849783], + [117.271618, 37.839858], + [117.320278, 37.861596], + [117.400966, 37.844584], + [117.438538, 37.854035], + [117.481038, 37.914967], + [117.513067, 37.94329], + [117.524154, 37.989527], + [117.557414, 38.046105], + [117.557414, 38.046105], + [117.586979, 38.071551], + [117.704624, 38.076262], + [117.746508, 38.12524], + [117.771145, 38.134655], + [117.766834, 38.158658], + [117.789007, 38.180772], + [117.808718, 38.22827], + [117.848754, 38.255062], + [117.895565, 38.301572], + [117.948536, 38.346644], + [117.957775, 38.376208], + [117.937449, 38.387936], + [117.84629, 38.368232], + [117.781, 38.373862], + [117.730493, 38.424985], + [117.72495, 38.457328], + [117.678754, 38.477008], + [117.644878, 38.52759], + [117.68553, 38.539293], + [117.638102, 38.54491], + [117.639334, 38.626776], + [117.55803, 38.613683], + [117.47919, 38.616489], + [117.432379, 38.601524], + [117.368937, 38.564566], + [117.25314, 38.556143], + [117.238358, 38.580943], + [117.258684, 38.608072], + [117.258684, 38.608072], + [117.213104, 38.639866], + [117.213104, 38.639866], + [117.183539, 38.61836], + [117.183539, 38.61836], + [117.150894, 38.617892], + [117.109626, 38.584685], + [117.070822, 38.608072], + [117.055424, 38.639398], + [117.068358, 38.680522], + [117.038793, 38.688464], + [116.95133, 38.689398], + [116.948866, 38.689398], + [116.950714, 38.689398], + [116.95133, 38.689398], + [116.950714, 38.689398], + [116.948866, 38.689398], + [116.877417, 38.680522], + [116.858939, 38.741231], + [116.794265, 38.744498], + [116.794265, 38.744498], + [116.746222, 38.754299], + [116.737599, 38.784629], + [116.75115, 38.831264], + [116.723432, 38.852706], + [116.722201, 38.896968], + [116.708034, 38.931892], + [116.72836, 38.975174], + [116.754845, 39.003084], + [116.754229, 39.034701], + [116.754229, 39.034701], + [116.783179, 39.05097], + [116.783179, 39.05097], + [116.812744, 39.05097], + [116.812744, 39.05097], + [116.871874, 39.054688], + [116.912526, 39.110898], + [116.91191, 39.111362], + [116.91191, 39.111362], + [116.912526, 39.110898], + [116.909446, 39.150822], + [116.870026, 39.153607], + [116.855859, 39.215766], + [116.881729, 39.225966], + [116.881729, 39.225966], + [116.87249, 39.291304], + [116.889736, 39.338068], + [116.870642, 39.357506], + [116.829374, 39.338994], + [116.818287, 39.3737], + [116.840461, 39.378326], + [116.839845, 39.413474], + [116.876185, 39.43474], + [116.832454, 39.435664], + [116.785026, 39.465702], + [116.820751, 39.482332], + [116.819519, 39.528507], + [116.78749, 39.554352], + [116.808432, 39.576497], + [116.812128, 39.615695], + [116.79057, 39.595868], + [116.748686, 39.619844], + [116.709266, 39.618], + [116.726512, 39.595407], + [116.726512, 39.595407], + [116.724048, 39.59264], + [116.723432, 39.59264], + [116.724048, 39.59264], + [116.723432, 39.59264], + [116.664918, 39.605552], + [116.620571, 39.601863], + [116.592237, 39.621227], + [116.592237, 39.621227], + [116.524484, 39.596329], + [116.50847, 39.551122], + [116.473361, 39.552968], + [116.478289, 39.535431], + [116.437637, 39.526661], + [116.443796, 39.510041], + [116.401912, 39.528046], + [116.411767, 39.482794], + [116.444412, 39.482332], + [116.454883, 39.453226], + [116.434557, 39.442597], + [116.361876, 39.455074], + [116.361876, 39.455074], + [116.337854, 39.455536], + [116.307057, 39.488337], + [116.257782, 39.500344], + [116.240536, 39.564041], + [116.198652, 39.589412], + [116.151841, 39.583416], + [116.130283, 39.567732], + [116.09887, 39.575113], + [116.036044, 39.571884], + [116.026189, 39.587567], + [115.995392, 39.576958], + [115.978146, 39.595868], + [115.957204, 39.560812], + [115.910393, 39.600479], + [115.910393, 39.600479], + [115.91532, 39.582955], + [115.91532, 39.582955], + [115.867893, 39.546507], + [115.867893, 39.546507], + [115.828473, 39.541431], + [115.821081, 39.522968], + [115.821081, 39.522968], + [115.806299, 39.510041], + [115.806299, 39.510041], + [115.752712, 39.515581], + [115.738545, 39.539585], + [115.738545, 39.540046], + [115.738545, 39.539585], + [115.738545, 39.540046], + [115.724995, 39.5442], + [115.724995, 39.5442], + [115.722531, 39.543738], + [115.721299, 39.543738], + [115.722531, 39.543738], + [115.722531, 39.5442], + [115.721299, 39.543738], + [115.722531, 39.5442], + [115.720683, 39.551122], + [115.720683, 39.551122], + [115.718835, 39.553891], + [115.718835, 39.553891], + [115.716988, 39.56035], + [115.716988, 39.56035], + [115.699125, 39.570039], + [115.699125, 39.570039], + [115.698509, 39.577881], + [115.698509, 39.577881], + [115.667712, 39.615234], + [115.633836, 39.599557], + [115.633836, 39.599557], + [115.587024, 39.589873], + [115.545756, 39.618922], + [115.518039, 39.597252], + [115.522351, 39.640124], + [115.478619, 39.650723], + [115.478619, 39.650723], + [115.491554, 39.670074], + [115.486626, 39.741899], + [115.439815, 39.752022], + [115.443511, 39.785601], + [115.483547, 39.798477], + [115.483547, 39.798477], + [115.50572, 39.784222], + [115.552532, 39.794799], + [115.567314, 39.816407], + [115.514344, 39.837549], + [115.526046, 39.87568], + [115.515575, 39.892212], + [115.515575, 39.892212], + [115.522967, 39.899099], + [115.481083, 39.935819], + [115.426264, 39.950502], + [115.428728, 39.984443], + [115.450286, 39.992697], + [115.454597, 40.029825], + [115.485394, 40.040364], + [115.527278, 40.076092], + [115.59072, 40.096239], + [115.599959, 40.119583], + [115.75456, 40.145663], + [115.75456, 40.145663], + [115.773654, 40.176307], + [115.806299, 40.15344], + [115.847567, 40.147036], + [115.855574, 40.188652], + [115.870356, 40.185909], + [115.89869, 40.234354], + [115.968907, 40.264045], + [115.95166, 40.281852], + [115.917784, 40.354405], + [115.864197, 40.359422], + [115.771806, 40.443734], + [115.781045, 40.49336], + [115.736082, 40.503372], + [115.755176, 40.540221], + [115.784741, 40.55841], + [115.819849, 40.55932], + [115.827857, 40.587504], + [115.885139, 40.595229], + [115.907929, 40.617493], + [115.971986, 40.6025], + [115.982457, 40.578868], + [116.005247, 40.583868], + [116.09887, 40.630665], + [116.133979, 40.666536], + [116.162928, 40.662451], + [116.171551, 40.695582], + [116.204812, 40.740035], + [116.22021, 40.744115], + [116.247311, 40.791707], + [116.273181, 40.762703], + [116.311369, 40.754996], + [116.316912, 40.772221], + [116.453651, 40.765876], + [116.46597, 40.774487], + [116.438253, 40.81934], + [116.334159, 40.90443], + [116.339702, 40.929303], + [116.370499, 40.94377], + [116.398216, 40.90624], + [116.477057, 40.899907], + [116.447492, 40.953715], + [116.455499, 40.980828], + [116.519557, 40.98128], + [116.519557, 40.98128], + [116.5676, 40.992574], + [116.598397, 40.974503], + [116.623034, 41.021026], + [116.615643, 41.053076], + [116.647672, 41.059394], + [116.688324, 41.044501], + [116.698795, 41.021477], + [116.677853, 40.970888], + [116.722201, 40.927495], + [116.713577, 40.909858], + [116.759773, 40.889954], + [116.81336, 40.848319], + [116.848468, 40.839264], + [116.924229, 40.773581], + [116.926692, 40.745022], + [116.964881, 40.709647], + [117.012308, 40.693767], + [117.11209, 40.707379], + [117.117018, 40.70012], + [117.208177, 40.694675], + [117.278394, 40.664267], + [117.319662, 40.657911], + [117.342451, 40.673799], + [117.408973, 40.686961], + [117.493973, 40.675161], + [117.514914, 40.660181], + [117.501364, 40.636569], + [117.467487, 40.649738], + [117.467487, 40.649738] + ] + ], + [ + [ + [117.210024, 40.082045], + [117.204481, 40.069681], + [117.159517, 40.077008], + [117.140423, 40.064185], + [117.105315, 40.074261], + [117.105315, 40.074261], + [117.051728, 40.059605], + [117.025243, 40.030283], + [116.945171, 40.04128], + [116.927924, 40.055024], + [116.867562, 40.041739], + [116.831222, 40.051359], + [116.820135, 40.02845], + [116.781331, 40.034866], + [116.757925, 39.967934], + [116.782563, 39.947749], + [116.78441, 39.891294], + [116.812128, 39.889916], + [116.865714, 39.843982], + [116.907598, 39.832494], + [116.918069, 39.84628], + [116.949482, 39.778703], + [116.902055, 39.763523], + [116.916837, 39.731314], + [116.887272, 39.72533], + [116.889736, 39.687576], + [116.90575, 39.688037], + [116.932236, 39.706456], + [116.932236, 39.706456], + [116.944555, 39.695405], + [116.944555, 39.695405], + [116.948866, 39.680668], + [116.948866, 39.680668], + [116.964265, 39.64335], + [116.983359, 39.638742], + [116.983359, 39.638742], + [117.016004, 39.653949], + [117.10901, 39.625375], + [117.10901, 39.625375], + [117.152742, 39.623532], + [117.177996, 39.645194], + [117.165061, 39.718886], + [117.165061, 39.718886], + [117.161981, 39.748801], + [117.205713, 39.763984], + [117.15767, 39.796638], + [117.156438, 39.817326], + [117.192162, 39.832953], + [117.251908, 39.834332], + [117.247597, 39.860981], + [117.227887, 39.852712], + [117.162597, 39.876598], + [117.162597, 39.876598], + [117.150894, 39.944996], + [117.198322, 39.992697], + [117.192162, 40.066475], + [117.210024, 40.082045] + ] + ], + [ + [ + [117.784696, 39.376938], + [117.765602, 39.400527], + [117.699696, 39.407463], + [117.673211, 39.386652], + [117.668899, 39.412087], + [117.614081, 39.407001], + [117.601146, 39.419485], + [117.570965, 39.404689], + [117.521074, 39.357043], + [117.536472, 39.338068], + [117.594987, 39.349176], + [117.669515, 39.322792], + [117.670747, 39.357969], + [117.74466, 39.354729], + [117.784696, 39.376938] + ] + ], + [ + [ + [118.869365, 39.142932], + [118.82009, 39.108576], + [118.857662, 39.098824], + [118.869365, 39.142932] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 140000, + "name": "山西省", + "center": [112.549248, 37.857014], + "centroid": [112.304436, 37.618179], + "childrenNum": 11, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 3, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [110.379257, 34.600612], + [110.424837, 34.588295], + [110.488279, 34.610956], + [110.533242, 34.583368], + [110.610851, 34.607508], + [110.710017, 34.605045], + [110.749437, 34.65232], + [110.791937, 34.649858], + [110.824582, 34.615881], + [110.883712, 34.64395], + [110.903422, 34.669056], + [110.920052, 34.730068], + [110.976103, 34.706456], + [111.035233, 34.740887], + [111.118385, 34.756623], + [111.148566, 34.807742], + [111.232949, 34.789559], + [111.255123, 34.819535], + [111.29208, 34.806759], + [111.345666, 34.831816], + [111.389398, 34.815113], + [111.439289, 34.838202], + [111.502731, 34.829851], + [111.543999, 34.853428], + [111.570484, 34.843114], + [111.592042, 34.881416], + [111.617911, 34.894671], + [111.646861, 34.938836], + [111.681969, 34.9511], + [111.664107, 34.984449], + [111.740483, 35.00455], + [111.807005, 35.032977], + [111.810084, 35.062374], + [111.933272, 35.083435], + [111.97762, 35.067272], + [112.018888, 35.068742], + [112.039214, 35.045717], + [112.062004, 35.056005], + [112.05646, 35.098615], + [112.066315, 35.153437], + [112.03983, 35.194039], + [112.078634, 35.219467], + [112.058924, 35.280069], + [112.13838, 35.271275], + [112.21722, 35.253195], + [112.242474, 35.234622], + [112.304684, 35.251728], + [112.288053, 35.219956], + [112.36751, 35.219956], + [112.390915, 35.239021], + [112.513487, 35.218489], + [112.637291, 35.225822], + [112.628052, 35.263457], + [112.720443, 35.206265], + [112.772798, 35.207732], + [112.822073, 35.258082], + [112.884283, 35.243909], + [112.934174, 35.262968], + [112.936022, 35.284466], + [112.992072, 35.29619], + [112.985913, 35.33965], + [112.996384, 35.362104], + [113.067217, 35.353806], + [113.126347, 35.332327], + [113.149137, 35.350878], + [113.165151, 35.412845], + [113.185477, 35.409431], + [113.189789, 35.44893], + [113.243375, 35.449418], + [113.304353, 35.426989], + [113.31236, 35.481101], + [113.348085, 35.468429], + [113.391817, 35.506925], + [113.439244, 35.507412], + [113.49899, 35.532254], + [113.513773, 35.57364], + [113.55812, 35.621816], + [113.547649, 35.656835], + [113.578446, 35.633491], + [113.625258, 35.632518], + [113.622794, 35.674825], + [113.592613, 35.691838], + [113.587685, 35.736542], + [113.604932, 35.797727], + [113.582758, 35.818111], + [113.660982, 35.837035], + [113.637576, 35.870019], + [113.654207, 35.931586], + [113.648663, 35.994073], + [113.678844, 35.985841], + [113.694859, 36.026991], + [113.660366, 36.034735], + [113.68562, 36.056026], + [113.671453, 36.115514], + [113.655439, 36.125182], + [113.712721, 36.129533], + [113.705946, 36.148865], + [113.651127, 36.174473], + [113.697939, 36.181719], + [113.681924, 36.216491], + [113.716417, 36.262347], + [113.712105, 36.303353], + [113.736127, 36.324571], + [113.731199, 36.363135], + [113.708409, 36.423352], + [113.670221, 36.425278], + [113.635729, 36.451277], + [113.587069, 36.460904], + [113.554425, 36.494589], + [113.559968, 36.528741], + [113.588917, 36.547974], + [113.569823, 36.585947], + [113.539642, 36.594116], + [113.54457, 36.62342], + [113.486671, 36.635427], + [113.476816, 36.655114], + [113.506997, 36.705029], + [113.465113, 36.707908], + [113.499606, 36.740527], + [113.535946, 36.732373], + [113.549497, 36.752515], + [113.600004, 36.752995], + [113.680692, 36.789907], + [113.676381, 36.855539], + [113.696707, 36.882351], + [113.731815, 36.878521], + [113.731815, 36.858891], + [113.773083, 36.85506], + [113.792793, 36.894796], + [113.76138, 36.956034], + [113.791561, 36.98759], + [113.771851, 37.016745], + [113.788482, 37.059739], + [113.758301, 37.075497], + [113.773699, 37.107004], + [113.773083, 37.151855], + [113.832213, 37.167594], + [113.853155, 37.215269], + [113.886416, 37.239095], + [113.90243, 37.310052], + [113.962792, 37.355734], + [113.973879, 37.40329], + [114.014531, 37.42468], + [114.036705, 37.494037], + [114.118625, 37.59084], + [114.115545, 37.619761], + [114.139567, 37.675676], + [114.12848, 37.698409], + [114.068118, 37.721608], + [113.993589, 37.706932], + [113.996669, 37.730128], + [114.044712, 37.761834], + [114.006524, 37.813386], + [113.976959, 37.816696], + [113.959097, 37.906468], + [113.936307, 37.922993], + [113.901198, 37.984811], + [113.872249, 37.990471], + [113.876561, 38.055059], + [113.811271, 38.117707], + [113.831597, 38.16854], + [113.797105, 38.162894], + [113.720728, 38.174656], + [113.711489, 38.213695], + [113.678844, 38.20523], + [113.64312, 38.232031], + [113.598772, 38.22733], + [113.570439, 38.237202], + [113.54457, 38.270569], + [113.557504, 38.343359], + [113.525475, 38.383245], + [113.537794, 38.417952], + [113.583374, 38.459671], + [113.546417, 38.492936], + [113.561816, 38.558483], + [113.603084, 38.587024], + [113.612939, 38.645942], + [113.70225, 38.651551], + [113.720728, 38.713218], + [113.775547, 38.709949], + [113.802648, 38.763166], + [113.839605, 38.7585], + [113.836525, 38.795824], + [113.855619, 38.828933], + [113.795257, 38.860628], + [113.776163, 38.885788], + [113.76754, 38.959819], + [113.776779, 38.986804], + [113.80696, 38.989595], + [113.898119, 39.067699], + [113.930148, 39.063517], + [113.961561, 39.100681], + [113.994821, 39.095572], + [114.006524, 39.122971], + [114.050872, 39.135969], + [114.064422, 39.094179], + [114.082901, 39.09325], + [114.082901, 39.09325], + [114.10877, 39.052364], + [114.157429, 39.061194], + [114.180835, 39.049111], + [114.252284, 39.073739], + [114.345907, 39.075133], + [114.369928, 39.107648], + [114.360689, 39.134112], + [114.388406, 39.176807], + [114.443841, 39.174023], + [114.47587, 39.21623], + [114.416124, 39.242654], + [114.437066, 39.259337], + [114.430906, 39.307513], + [114.466631, 39.329736], + [114.469095, 39.400989], + [114.496812, 39.438437], + [114.501739, 39.476789], + [114.532536, 39.486027], + [114.568877, 39.573729], + [114.51529, 39.564964], + [114.49558, 39.608318], + [114.431522, 39.613851], + [114.408117, 39.652106], + [114.409964, 39.761683], + [114.41674, 39.775943], + [114.390254, 39.819165], + [114.406885, 39.833413], + [114.395182, 39.867412], + [114.285545, 39.858225], + [114.286776, 39.871087], + [114.215943, 39.8619], + [114.204241, 39.885324], + [114.229494, 39.899558], + [114.212248, 39.918839], + [114.17406, 39.897722], + [114.067502, 39.922511], + [114.047176, 39.916085], + [114.028082, 39.959218], + [114.029314, 39.985819], + [113.910438, 40.015618], + [113.959097, 40.033491], + [113.989278, 40.11226], + [114.018227, 40.103563], + [114.045944, 40.056856], + [114.086596, 40.071513], + [114.101995, 40.099901], + [114.073046, 40.168533], + [114.073046, 40.168533], + [114.097683, 40.193681], + [114.135871, 40.175392], + [114.180219, 40.191395], + [114.235654, 40.198252], + [114.255364, 40.236182], + [114.292936, 40.230242], + [114.362537, 40.249886], + [114.406269, 40.246232], + [114.46971, 40.268155], + [114.510978, 40.302851], + [114.530688, 40.345283], + [114.481413, 40.34802], + [114.438914, 40.371733], + [114.390254, 40.351213], + [114.381015, 40.36307], + [114.31203, 40.372645], + [114.286161, 40.425057], + [114.299711, 40.44009], + [114.267066, 40.474242], + [114.282465, 40.494725], + [114.293552, 40.55159], + [114.273842, 40.552954], + [114.283081, 40.590685], + [114.236269, 40.607043], + [114.183299, 40.67153], + [114.162357, 40.71373], + [114.134639, 40.737314], + [114.084748, 40.729605], + [114.063806, 40.706925], + [114.07243, 40.679246], + [114.041633, 40.608861], + [114.076741, 40.575686], + [114.080437, 40.547952], + [114.061959, 40.52885], + [114.011452, 40.515657], + [113.948626, 40.514747], + [113.890112, 40.466503], + [113.850691, 40.460583], + [113.794641, 40.517932], + [113.763228, 40.473787], + [113.688699, 40.448288], + [113.559968, 40.348476], + [113.500222, 40.334335], + [113.387505, 40.319279], + [113.316672, 40.319736], + [113.27602, 40.388601], + [113.251382, 40.413211], + [113.083231, 40.374925], + [113.03334, 40.368997], + [112.898449, 40.329317], + [112.848558, 40.206937], + [112.744464, 40.167161], + [112.712436, 40.178593], + [112.6299, 40.235725], + [112.511639, 40.269068], + [112.456205, 40.300112], + [112.418017, 40.295091], + [112.349031, 40.257194], + [112.310227, 40.256281], + [112.299756, 40.21105], + [112.232619, 40.169905], + [112.232003, 40.133311], + [112.183344, 40.083877], + [112.182112, 40.061437], + [112.142076, 40.027076], + [112.133453, 40.001866], + [112.07617, 39.919298], + [112.042294, 39.886243], + [112.012729, 39.827438], + [111.970229, 39.796638], + [111.959758, 39.692642], + [111.925265, 39.66731], + [111.9382, 39.623071], + [111.87907, 39.606013], + [111.842729, 39.620305], + [111.783599, 39.58895], + [111.722621, 39.606013], + [111.659179, 39.641507], + [111.625303, 39.633672], + [111.525521, 39.662242], + [111.497187, 39.661781], + [111.445448, 39.640124], + [111.460847, 39.606935], + [111.441137, 39.59679], + [111.422043, 39.539123], + [111.431282, 39.508656], + [111.372152, 39.479099], + [111.358601, 39.432428], + [111.337043, 39.420872], + [111.171971, 39.423183], + [111.143022, 39.407926], + [111.125776, 39.366297], + [111.159037, 39.362596], + [111.155341, 39.338531], + [111.186138, 39.35149], + [111.179363, 39.326959], + [111.202152, 39.305197], + [111.247732, 39.302419], + [111.213239, 39.257021], + [111.219399, 39.244044], + [111.163348, 39.152678], + [111.173819, 39.135041], + [111.147334, 39.100681], + [111.138095, 39.064447], + [111.094363, 39.030053], + [111.038313, 39.020289], + [110.998276, 38.998433], + [110.980414, 38.970056], + [111.009979, 38.932823], + [111.016755, 38.889981], + [110.995813, 38.868084], + [111.009363, 38.847579], + [110.965016, 38.755699], + [110.915125, 38.704345], + [110.916357, 38.673981], + [110.880632, 38.626776], + [110.898494, 38.587024], + [110.920052, 38.581878], + [110.907733, 38.521035], + [110.870777, 38.510265], + [110.874473, 38.453579], + [110.840596, 38.439986], + [110.796864, 38.453579], + [110.77777, 38.440924], + [110.746973, 38.366355], + [110.701394, 38.353215], + [110.661358, 38.308617], + [110.601612, 38.308147], + [110.57759, 38.297345], + [110.565887, 38.215105], + [110.528315, 38.211814], + [110.509221, 38.192061], + [110.519692, 38.130889], + [110.501829, 38.097929], + [110.507989, 38.013107], + [110.528315, 37.990471], + [110.522771, 37.955088], + [110.59422, 37.922049], + [110.680452, 37.790216], + [110.735886, 37.77035], + [110.750669, 37.736281], + [110.716792, 37.728708], + [110.706321, 37.705511], + [110.775306, 37.680886], + [110.793169, 37.650567], + [110.763604, 37.639668], + [110.771611, 37.594634], + [110.795017, 37.558586], + [110.770995, 37.538184], + [110.759292, 37.474567], + [110.740198, 37.44939], + [110.644111, 37.435135], + [110.630561, 37.372858], + [110.641648, 37.360015], + [110.695234, 37.34955], + [110.678604, 37.317668], + [110.690307, 37.287201], + [110.661974, 37.281963], + [110.651503, 37.256722], + [110.590525, 37.187145], + [110.53509, 37.138021], + [110.535706, 37.115118], + [110.49567, 37.086956], + [110.460561, 37.044932], + [110.417446, 37.027257], + [110.426685, 37.008621], + [110.382953, 37.022001], + [110.381721, 37.002408], + [110.424221, 36.963685], + [110.408823, 36.892403], + [110.376178, 36.882351], + [110.424221, 36.855539], + [110.406975, 36.824886], + [110.423605, 36.818179], + [110.407591, 36.776007], + [110.447011, 36.737649], + [110.438388, 36.685835], + [110.402663, 36.697352], + [110.394656, 36.676716], + [110.426685, 36.657514], + [110.447627, 36.621018], + [110.496902, 36.582102], + [110.488895, 36.556628], + [110.503677, 36.488335], + [110.47288, 36.453203], + [110.489511, 36.430094], + [110.487047, 36.393972], + [110.459946, 36.327946], + [110.474112, 36.306729], + [110.474112, 36.248352], + [110.45625, 36.22663], + [110.447011, 36.164328], + [110.467953, 36.074893], + [110.491974, 36.034735], + [110.49259, 35.994073], + [110.516612, 35.971796], + [110.502445, 35.947575], + [110.516612, 35.918501], + [110.511684, 35.879718], + [110.549257, 35.877778], + [110.550489, 35.838005], + [110.571431, 35.800639], + [110.57759, 35.701559], + [110.609619, 35.632031], + [110.589293, 35.602355], + [110.567735, 35.539559], + [110.531394, 35.511309], + [110.477808, 35.413821], + [110.45009, 35.327933], + [110.374946, 35.251728], + [110.378642, 35.210666], + [110.364475, 35.197952], + [110.373714, 35.134351], + [110.320743, 35.00504], + [110.262229, 34.944233], + [110.230816, 34.880925], + [110.246831, 34.789068], + [110.243135, 34.725641], + [110.229584, 34.692679], + [110.269004, 34.629671], + [110.29549, 34.610956], + [110.379257, 34.600612] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 150000, + "name": "内蒙古自治区", + "center": [111.670801, 40.818311], + "centroid": [114.077429, 44.331087], + "childrenNum": 12, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 4, + "acroutes": [100000] + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [97.172903, 42.795257], + [97.371235, 42.457076], + [97.500582, 42.243894], + [97.653335, 41.986856], + [97.84674, 41.656379], + [97.613915, 41.477276], + [97.629314, 41.440498], + [97.903407, 41.168057], + [97.971776, 41.09774], + [98.142391, 41.001607], + [98.184891, 40.988056], + [98.25018, 40.93925], + [98.333332, 40.918903], + [98.344419, 40.568413], + [98.627751, 40.677884], + [98.569853, 40.746836], + [98.668403, 40.773128], + [98.689345, 40.691952], + [98.72199, 40.657911], + [98.762642, 40.639748], + [98.802678, 40.607043], + [98.80699, 40.660181], + [98.790975, 40.705564], + [98.984996, 40.782644], + [99.041662, 40.693767], + [99.102025, 40.676522], + [99.12543, 40.715091], + [99.172858, 40.747289], + [99.174705, 40.858278], + [99.565827, 40.846961], + [99.673, 40.93292], + [99.985897, 40.909858], + [100.057346, 40.908049], + [100.107853, 40.875475], + [100.224882, 40.727337], + [100.237201, 40.716905], + [100.242744, 40.618855], + [100.169447, 40.541131], + [100.169447, 40.277743], + [100.007455, 40.20008], + [99.955716, 40.150695], + [99.927383, 40.063727], + [99.841152, 40.013326], + [99.751225, 40.006909], + [99.714268, 39.972061], + [99.533182, 39.891753], + [99.491298, 39.884406], + [99.459885, 39.898181], + [99.440791, 39.885783], + [99.469124, 39.875221], + [99.672384, 39.888079], + [99.822058, 39.860063], + [99.904593, 39.785601], + [99.958796, 39.769504], + [100.040716, 39.757083], + [100.128179, 39.702312], + [100.250135, 39.685274], + [100.314193, 39.606935], + [100.301258, 39.572345], + [100.326512, 39.509118], + [100.44354, 39.485565], + [100.500823, 39.481408], + [100.498975, 39.400527], + [100.606764, 39.387577], + [100.707778, 39.404689], + [100.842053, 39.405614], + [100.842669, 39.199999], + [100.864227, 39.106719], + [100.829118, 39.075133], + [100.835278, 39.025869], + [100.875314, 39.002619], + [100.901799, 39.030053], + [100.961545, 39.005874], + [100.969553, 38.946788], + [101.117378, 38.975174], + [101.228863, 39.020754], + [101.198682, 38.943064], + [101.237486, 38.907214], + [101.24303, 38.860628], + [101.33542, 38.847113], + [101.34158, 38.822406], + [101.307087, 38.80282], + [101.331109, 38.777164], + [101.412413, 38.764099], + [101.562702, 38.713218], + [101.601506, 38.65529], + [101.672955, 38.6908], + [101.777049, 38.66043], + [101.873751, 38.733761], + [101.941505, 38.808883], + [102.075164, 38.891378], + [102.045599, 38.904885], + [101.955055, 38.985874], + [101.926106, 39.000758], + [101.833715, 39.08907], + [101.902701, 39.111827], + [102.012338, 39.127149], + [102.050526, 39.141075], + [102.276576, 39.188868], + [102.3548, 39.231993], + [102.45335, 39.255167], + [102.579002, 39.183301], + [102.616574, 39.171703], + [102.883892, 39.120649], + [103.007696, 39.099753], + [103.133347, 39.192579], + [103.188166, 39.215302], + [103.259615, 39.263971], + [103.344615, 39.331588], + [103.428998, 39.353341], + [103.595302, 39.386652], + [103.728961, 39.430117], + [103.85338, 39.461543], + [103.955626, 39.456923], + [104.089901, 39.419947], + [104.073271, 39.351953], + [104.047401, 39.297788], + [104.171205, 39.160567], + [104.207546, 39.083495], + [104.190915, 39.042139], + [104.196459, 38.9882], + [104.173053, 38.94446], + [104.044322, 38.895105], + [104.011677, 38.85923], + [103.85954, 38.64454], + [103.416063, 38.404821], + [103.465339, 38.353215], + [103.507838, 38.280905], + [103.53494, 38.156776], + [103.368636, 38.08898], + [103.362477, 38.037621], + [103.40744, 37.860651], + [103.627947, 37.797783], + [103.683381, 37.777919], + [103.841062, 37.64725], + [103.874938, 37.604117], + [103.935916, 37.572818], + [104.089285, 37.465067], + [104.183524, 37.406618], + [104.237727, 37.411847], + [104.287002, 37.428007], + [104.322726, 37.44844], + [104.407726, 37.464592], + [104.419429, 37.511604], + [104.433595, 37.515402], + [104.623305, 37.522522], + [104.805007, 37.539133], + [104.866601, 37.566651], + [105.027977, 37.580881], + [105.111128, 37.633981], + [105.187505, 37.657674], + [105.221998, 37.677097], + [105.315004, 37.702197], + [105.4037, 37.710246], + [105.467141, 37.695094], + [105.598952, 37.699356], + [105.616199, 37.722555], + [105.622358, 37.777919], + [105.677177, 37.771769], + [105.760944, 37.799674], + [105.80406, 37.862068], + [105.799749, 37.939986], + [105.840401, 38.004147], + [105.780655, 38.084741], + [105.76772, 38.121474], + [105.775111, 38.186887], + [105.802828, 38.220277], + [105.842248, 38.240962], + [105.86627, 38.296406], + [105.821307, 38.366824], + [105.835473, 38.387467], + [105.827466, 38.432486], + [105.850872, 38.443736], + [105.836705, 38.476071], + [105.863806, 38.53508], + [105.856415, 38.569714], + [105.874277, 38.593105], + [105.852719, 38.641735], + [105.894603, 38.696405], + [105.88598, 38.716953], + [105.908154, 38.737496], + [105.909386, 38.791159], + [105.992538, 38.857366], + [105.97098, 38.909077], + [106.021487, 38.953769], + [106.060907, 38.96866], + [106.087392, 39.006339], + [106.078153, 39.026333], + [106.096631, 39.084889], + [106.145907, 39.153142], + [106.170544, 39.163352], + [106.192718, 39.142932], + [106.251232, 39.131327], + [106.285109, 39.146181], + [106.29558, 39.167992], + [106.280181, 39.262118], + [106.402753, 39.291767], + [106.511774, 39.272311], + [106.525325, 39.308439], + [106.556122, 39.322329], + [106.602318, 39.37555], + [106.643586, 39.357969], + [106.683622, 39.357506], + [106.751375, 39.381564], + [106.781556, 39.371849], + [106.806809, 39.318625], + [106.806193, 39.277407], + [106.790795, 39.241263], + [106.795723, 39.214375], + [106.825288, 39.19397], + [106.859164, 39.107648], + [106.878874, 39.091392], + [106.933693, 39.076527], + [106.96757, 39.054688], + [106.971881, 39.026333], + [106.954019, 38.941202], + [106.837606, 38.847579], + [106.756302, 38.748699], + [106.709491, 38.718821], + [106.66268, 38.601524], + [106.647897, 38.470917], + [106.599854, 38.389812], + [106.482209, 38.319417], + [106.555506, 38.263521], + [106.627571, 38.232501], + [106.654672, 38.22921], + [106.737824, 38.197706], + [106.779092, 38.171833], + [106.858548, 38.156306], + [106.942316, 38.132302], + [107.010069, 38.120532], + [107.051337, 38.122886], + [107.071047, 38.138892], + [107.119091, 38.134185], + [107.138801, 38.161011], + [107.19054, 38.153953], + [107.240431, 38.111586], + [107.33159, 38.086625], + [107.3938, 38.014993], + [107.440611, 37.995659], + [107.411662, 37.948009], + [107.448618, 37.933378], + [107.49235, 37.944706], + [107.560719, 37.893717], + [107.65003, 37.86443], + [107.684523, 37.888522], + [107.732566, 37.84931], + [107.842819, 37.828987], + [107.884703, 37.808186], + [107.982022, 37.787378], + [107.993109, 37.735335], + [108.025753, 37.696041], + [108.012819, 37.66857], + [108.025137, 37.649619], + [108.055318, 37.652462], + [108.134159, 37.622131], + [108.193905, 37.638246], + [108.205608, 37.655779], + [108.24626, 37.665728], + [108.293071, 37.656726], + [108.301078, 37.640616], + [108.422418, 37.648672], + [108.485244, 37.678044], + [108.532671, 37.690832], + [108.628142, 37.651988], + [108.699591, 37.669518], + [108.720533, 37.683728], + [108.777815, 37.683728], + [108.791982, 37.700303], + [108.784591, 37.764673], + [108.799989, 37.784068], + [108.791982, 37.872934], + [108.798141, 37.93385], + [108.82709, 37.989056], + [108.797525, 38.04799], + [108.830786, 38.049875], + [108.883141, 38.01405], + [108.893612, 37.978207], + [108.93488, 37.922521], + [108.9743, 37.931962], + [108.982923, 37.964053], + [109.018648, 37.971602], + [109.037742, 38.021593], + [109.06977, 38.023008], + [109.050676, 38.055059], + [109.069155, 38.091336], + [108.964445, 38.154894], + [108.938575, 38.207582], + [108.976148, 38.245192], + [108.961981, 38.26493], + [109.007561, 38.359316], + [109.051292, 38.385122], + [109.054372, 38.433892], + [109.128901, 38.480288], + [109.175712, 38.518694], + [109.196654, 38.552867], + [109.276726, 38.623035], + [109.331545, 38.597783], + [109.367269, 38.627711], + [109.329081, 38.66043], + [109.338936, 38.701542], + [109.404226, 38.720689], + [109.444262, 38.782763], + [109.511399, 38.833595], + [109.549587, 38.805618], + [109.624116, 38.85457], + [109.672159, 38.928167], + [109.685094, 38.968195], + [109.665384, 38.981687], + [109.72513, 39.018429], + [109.762086, 39.057476], + [109.793499, 39.074204], + [109.851397, 39.122971], + [109.890818, 39.103932], + [109.92223, 39.107183], + [109.893897, 39.141075], + [109.961035, 39.191651], + [109.871723, 39.243581], + [109.90252, 39.271848], + [109.962267, 39.212056], + [110.041107, 39.21623], + [110.109476, 39.249606], + [110.217881, 39.281113], + [110.184005, 39.355192], + [110.161831, 39.387115], + [110.136577, 39.39174], + [110.12549, 39.432891], + [110.152592, 39.45415], + [110.243751, 39.423645], + [110.257917, 39.407001], + [110.385417, 39.310291], + [110.429764, 39.341308], + [110.434692, 39.381101], + [110.482735, 39.360745], + [110.524003, 39.382952], + [110.559728, 39.351027], + [110.566503, 39.320014], + [110.596684, 39.282966], + [110.626249, 39.266751], + [110.702626, 39.273701], + [110.731575, 39.30705], + [110.73835, 39.348713], + [110.782698, 39.38804], + [110.869545, 39.494341], + [110.891103, 39.509118], + [110.958856, 39.519275], + [111.017371, 39.552045], + [111.101138, 39.559428], + [111.136863, 39.587106], + [111.154725, 39.569116], + [111.148566, 39.531277], + [111.10545, 39.497573], + [111.10545, 39.472631], + [111.058639, 39.447681], + [111.064182, 39.400989], + [111.098059, 39.401914], + [111.087588, 39.376013], + [111.125776, 39.366297], + [111.143022, 39.407926], + [111.171971, 39.423183], + [111.337043, 39.420872], + [111.358601, 39.432428], + [111.372152, 39.479099], + [111.431282, 39.508656], + [111.422043, 39.539123], + [111.441137, 39.59679], + [111.460847, 39.606935], + [111.445448, 39.640124], + [111.497187, 39.661781], + [111.525521, 39.662242], + [111.625303, 39.633672], + [111.659179, 39.641507], + [111.722621, 39.606013], + [111.783599, 39.58895], + [111.842729, 39.620305], + [111.87907, 39.606013], + [111.9382, 39.623071], + [111.925265, 39.66731], + [111.959758, 39.692642], + [111.970229, 39.796638], + [112.012729, 39.827438], + [112.042294, 39.886243], + [112.07617, 39.919298], + [112.133453, 40.001866], + [112.142076, 40.027076], + [112.182112, 40.061437], + [112.183344, 40.083877], + [112.232003, 40.133311], + [112.232619, 40.169905], + [112.299756, 40.21105], + [112.310227, 40.256281], + [112.349031, 40.257194], + [112.418017, 40.295091], + [112.456205, 40.300112], + [112.511639, 40.269068], + [112.6299, 40.235725], + [112.712436, 40.178593], + [112.744464, 40.167161], + [112.848558, 40.206937], + [112.898449, 40.329317], + [113.03334, 40.368997], + [113.083231, 40.374925], + [113.251382, 40.413211], + [113.27602, 40.388601], + [113.316672, 40.319736], + [113.387505, 40.319279], + [113.500222, 40.334335], + [113.559968, 40.348476], + [113.688699, 40.448288], + [113.763228, 40.473787], + [113.794641, 40.517932], + [113.850691, 40.460583], + [113.890112, 40.466503], + [113.948626, 40.514747], + [114.011452, 40.515657], + [114.061959, 40.52885], + [114.080437, 40.547952], + [114.076741, 40.575686], + [114.041633, 40.608861], + [114.07243, 40.679246], + [114.063806, 40.706925], + [114.084748, 40.729605], + [114.134639, 40.737314], + [114.103227, 40.770861], + [114.104458, 40.797597], + [114.080437, 40.790348], + [114.044712, 40.830661], + [114.073661, 40.857372], + [114.055183, 40.867782], + [114.041633, 40.917546], + [114.057647, 40.925234], + [113.994821, 40.938798], + [113.973263, 40.983087], + [113.868554, 41.06887], + [113.819279, 41.09774], + [113.877793, 41.115777], + [113.920293, 41.172112], + [113.960945, 41.171211], + [113.996669, 41.19238], + [114.016379, 41.231999], + [113.992357, 41.269794], + [113.971416, 41.239649], + [113.95109, 41.282837], + [113.914749, 41.294529], + [113.899351, 41.316108], + [113.92522, 41.325546], + [113.94493, 41.392477], + [113.871017, 41.413126], + [113.877793, 41.431076], + [113.919677, 41.454404], + [113.933227, 41.487139], + [113.953553, 41.483553], + [113.976959, 41.505966], + [114.032394, 41.529715], + [114.101379, 41.537779], + [114.230726, 41.513584], + [114.221487, 41.582111], + [114.226414, 41.616572], + [114.259059, 41.623282], + [114.215328, 41.68499], + [114.237501, 41.698843], + [114.206704, 41.7386], + [114.215328, 41.75646], + [114.200545, 41.789934], + [114.282465, 41.863517], + [114.343443, 41.926774], + [114.352066, 41.953484], + [114.419203, 41.942356], + [114.478334, 41.951704], + [114.511594, 41.981962], + [114.467863, 42.025989], + [114.480181, 42.064654], + [114.502355, 42.06732], + [114.510978, 42.110844], + [114.560254, 42.132595], + [114.647717, 42.109512], + [114.675434, 42.12061], + [114.75489, 42.115727], + [114.789383, 42.130819], + [114.79431, 42.149457], + [114.825723, 42.139695], + [114.86268, 42.097967], + [114.860832, 42.054879], + [114.9021, 42.015763], + [114.915035, 41.960605], + [114.923658, 41.871093], + [114.939056, 41.846132], + [114.922426, 41.825175], + [114.868839, 41.813579], + [114.89594, 41.76762], + [114.902716, 41.695715], + [114.895325, 41.636255], + [114.860832, 41.60091], + [115.016049, 41.615229], + [115.056085, 41.602253], + [115.0992, 41.62373], + [115.195287, 41.602253], + [115.20391, 41.571367], + [115.256881, 41.580768], + [115.26612, 41.616124], + [115.290142, 41.622835], + [115.310468, 41.592854], + [115.377605, 41.603148], + [115.345576, 41.635807], + [115.360975, 41.661297], + [115.319091, 41.691693], + [115.346808, 41.712247], + [115.42996, 41.728775], + [115.488474, 41.760924], + [115.519887, 41.76762], + [115.57409, 41.80555], + [115.654162, 41.829189], + [115.688038, 41.867528], + [115.726227, 41.870202], + [115.811226, 41.912525], + [115.834632, 41.93835], + [115.85311, 41.927665], + [115.916552, 41.945027], + [115.954124, 41.874213], + [115.994776, 41.828743], + [116.007095, 41.797966], + [116.007095, 41.79752], + [116.034196, 41.782795], + [116.09887, 41.776547], + [116.129051, 41.805996], + [116.106877, 41.831419], + [116.122892, 41.861734], + [116.194341, 41.861734], + [116.212819, 41.885352], + [116.223906, 41.932562], + [116.298434, 41.96817], + [116.310137, 41.997086], + [116.373579, 42.009983], + [116.414231, 41.982407], + [116.393289, 41.942802], + [116.453651, 41.945917], + [116.4826, 41.975734], + [116.510933, 41.974399], + [116.553433, 41.928555], + [116.597165, 41.935679], + [116.639049, 41.929891], + [116.66923, 41.947698], + [116.727744, 41.951259], + [116.748686, 41.984186], + [116.796113, 41.977958], + [116.879881, 42.018431], + [116.890352, 42.092639], + [116.850316, 42.156556], + [116.825062, 42.155669], + [116.789338, 42.200462], + [116.903287, 42.190708], + [116.918685, 42.229716], + [116.897743, 42.297479], + [116.886656, 42.366496], + [116.910678, 42.394789], + [116.910062, 42.395231], + [116.921765, 42.403628], + [116.936547, 42.410256], + [116.944555, 42.415116], + [116.97104, 42.427486], + [116.974736, 42.426603], + [116.99075, 42.425719], + [117.005533, 42.43367], + [117.009228, 42.44957], + [117.01662, 42.456193], + [117.080061, 42.463699], + [117.09546, 42.484004], + [117.135496, 42.468996], + [117.188467, 42.468114], + [117.275314, 42.481797], + [117.332596, 42.46105], + [117.390495, 42.461933], + [117.413284, 42.471645], + [117.410205, 42.519743], + [117.387415, 42.517537], + [117.434226, 42.557224], + [117.435458, 42.585431], + [117.475494, 42.602613], + [117.530313, 42.590278], + [117.537088, 42.603054], + [117.60053, 42.603054], + [117.667051, 42.582347], + [117.708935, 42.588515], + [117.779768, 42.61847], + [117.801326, 42.612744], + [117.797631, 42.585431], + [117.856761, 42.539148], + [117.874007, 42.510038], + [117.997811, 42.416884], + [118.024296, 42.385064], + [118.008898, 42.346595], + [118.060021, 42.298364], + [118.047702, 42.280656], + [117.974405, 42.25054], + [117.977485, 42.229716], + [118.033535, 42.199132], + [118.106216, 42.172082], + [118.089586, 42.12283], + [118.097593, 42.105072], + [118.155491, 42.081091], + [118.116687, 42.037102], + [118.194296, 42.031324], + [118.220165, 42.058434], + [118.212774, 42.081091], + [118.239259, 42.092639], + [118.27252, 42.083312], + [118.296541, 42.057545], + [118.286686, 42.033991], + [118.239875, 42.024655], + [118.291614, 42.007759], + [118.313788, 41.98819], + [118.306396, 41.940131], + [118.268824, 41.930336], + [118.340273, 41.87243], + [118.335346, 41.845241], + [118.29223, 41.772976], + [118.247266, 41.773869], + [118.236179, 41.80778], + [118.178281, 41.814917], + [118.140093, 41.784134], + [118.132702, 41.733241], + [118.155491, 41.712694], + [118.159187, 41.67605], + [118.206614, 41.650566], + [118.215237, 41.59554], + [118.302701, 41.55256], + [118.315636, 41.512688], + [118.271904, 41.471446], + [118.327338, 41.450816], + [118.348896, 41.428384], + [118.361215, 41.384844], + [118.348896, 41.342622], + [118.380309, 41.312062], + [118.412338, 41.331838], + [118.528135, 41.355202], + [118.629765, 41.346666], + [118.677192, 41.35026], + [118.741866, 41.324198], + [118.770199, 41.352956], + [118.843496, 41.374516], + [118.844727, 41.342622], + [118.890923, 41.300823], + [118.949437, 41.317906], + [118.980234, 41.305769], + [119.092951, 41.293629], + [119.168712, 41.294978], + [119.197661, 41.282837], + [119.211827, 41.308016], + [119.239545, 41.31431], + [119.296211, 41.325097], + [119.330704, 41.385293], + [119.309762, 41.405944], + [119.376283, 41.422102], + [119.378131, 41.459787], + [119.401537, 41.472343], + [119.406464, 41.503276], + [119.361501, 41.545841], + [119.362116, 41.566442], + [119.420015, 41.567785], + [119.415703, 41.590169], + [119.342406, 41.617914], + [119.307914, 41.657273], + [119.299907, 41.705545], + [119.319001, 41.727435], + [119.317769, 41.764049], + [119.292515, 41.790827], + [119.312841, 41.80555], + [119.334399, 41.871539], + [119.323312, 41.889807], + [119.340559, 41.926774], + [119.323928, 41.937014], + [119.324544, 41.969505], + [119.375667, 42.023322], + [119.384906, 42.08953], + [119.352261, 42.118391], + [119.314689, 42.119723], + [119.30853, 42.147239], + [119.286972, 42.154781], + [119.277733, 42.185387], + [119.237697, 42.200905], + [119.274037, 42.239021], + [119.280197, 42.260728], + [119.34795, 42.300578], + [119.432949, 42.317396], + [119.482841, 42.347037], + [119.502551, 42.388159], + [119.540123, 42.363401], + [119.572152, 42.359421], + [119.571536, 42.335536], + [119.539507, 42.297922], + [119.557985, 42.289068], + [119.609108, 42.276671], + [119.617115, 42.252755], + [119.679941, 42.240793], + [119.744615, 42.211545], + [119.841933, 42.215534], + [119.854868, 42.170308], + [119.837622, 42.135257], + [119.845629, 42.097079], + [119.87581, 42.077982], + [119.897368, 42.030879], + [119.921389, 42.014429], + [119.924469, 41.98908], + [119.950954, 41.974399], + [119.954034, 41.923212], + [119.989759, 41.899163], + [120.023019, 41.816701], + [120.041498, 41.818932], + [120.050737, 41.776101], + [120.024867, 41.737707], + [120.035954, 41.708226], + [120.096316, 41.697056], + [120.1382, 41.729221], + [120.127113, 41.77253], + [120.183164, 41.826513], + [120.188707, 41.848361], + [120.215808, 41.853265], + [120.251533, 41.884016], + [120.286641, 41.880005], + [120.290337, 41.897381], + [120.260156, 41.904062], + [120.271859, 41.925439], + [120.318054, 41.93746], + [120.309431, 41.951704], + [120.373489, 41.994862], + [120.399358, 41.984631], + [120.456641, 42.016208], + [120.450481, 42.057101], + [120.493597, 42.073539], + [120.466496, 42.105516], + [120.56751, 42.152119], + [120.58414, 42.167203], + [120.624792, 42.154338], + [120.72211, 42.203565], + [120.745516, 42.223512], + [120.79048, 42.218636], + [120.820661, 42.227943], + [120.8299, 42.252755], + [120.883487, 42.242565], + [120.883487, 42.269585], + [120.933994, 42.27977], + [120.992508, 42.264714], + [121.028848, 42.242565], + [121.070732, 42.254083], + [121.087978, 42.278885], + [121.120623, 42.280656], + [121.133558, 42.300135], + [121.184681, 42.333324], + [121.218558, 42.371802], + [121.285079, 42.387717], + [121.314644, 42.42837], + [121.304789, 42.435879], + [121.386093, 42.474294], + [121.434752, 42.475176], + [121.4791, 42.49636], + [121.506201, 42.482239], + [121.570875, 42.487093], + [121.607831, 42.516214], + [121.604136, 42.495037], + [121.66573, 42.437204], + [121.69899, 42.438529], + [121.747649, 42.484887], + [121.803084, 42.514891], + [121.817867, 42.504303], + [121.831417, 42.533856], + [121.844352, 42.522389], + [121.889931, 42.556784], + [121.921344, 42.605697], + [121.915801, 42.656332], + [121.94167, 42.666014], + [121.939207, 42.688453], + [122.018663, 42.69901], + [122.062394, 42.723635], + [122.072865, 42.710444], + [122.160945, 42.684934], + [122.204676, 42.685374], + [122.204676, 42.732867], + [122.261343, 42.695931], + [122.324785, 42.684934], + [122.338951, 42.669975], + [122.396234, 42.684054], + [122.396234, 42.707366], + [122.460907, 42.755282], + [122.439349, 42.770221], + [122.371596, 42.776371], + [122.35127, 42.830378], + [122.436886, 42.843105], + [122.556378, 42.827745], + [122.576088, 42.819405], + [122.580399, 42.789987], + [122.624747, 42.773296], + [122.653696, 42.78252], + [122.733152, 42.786034], + [122.73808, 42.77066], + [122.786123, 42.757479], + [122.848949, 42.712203], + [122.883442, 42.751766], + [122.887137, 42.770221], + [122.925941, 42.772417], + [122.945651, 42.753524], + [122.980144, 42.777689], + [123.058368, 42.768903], + [123.118114, 42.801405], + [123.227752, 42.831695], + [123.169853, 42.859777], + [123.188947, 42.895739], + [123.18402, 42.925983], + [123.259165, 42.993431], + [123.323222, 43.000872], + [123.434707, 43.027565], + [123.474743, 43.042438], + [123.536337, 43.007], + [123.572678, 43.003498], + [123.580685, 43.036314], + [123.631192, 43.088346], + [123.636119, 43.141644], + [123.666916, 43.179623], + [123.645974, 43.208855], + [123.676771, 43.223684], + [123.664453, 43.264663], + [123.698329, 43.272071], + [123.703873, 43.37047], + [123.608402, 43.366119], + [123.54496, 43.415262], + [123.519707, 43.402219], + [123.486446, 43.44525], + [123.442098, 43.437863], + [123.419925, 43.410046], + [123.382968, 43.469143], + [123.36449, 43.483475], + [123.315831, 43.492159], + [123.329998, 43.519071], + [123.304744, 43.550742], + [123.360179, 43.567223], + [123.452569, 43.545971], + [123.461193, 43.568523], + [123.434091, 43.575461], + [123.421157, 43.598435], + [123.5117, 43.592801], + [123.510468, 43.624867], + [123.536953, 43.633964], + [123.518475, 43.682024], + [123.520323, 43.708419], + [123.48275, 43.737396], + [123.498149, 43.771114], + [123.461809, 43.822518], + [123.467968, 43.853599], + [123.397135, 43.954929], + [123.37065, 43.970006], + [123.400831, 43.979481], + [123.365722, 44.013922], + [123.331229, 44.028984], + [123.32815, 44.084035], + [123.350939, 44.092633], + [123.362642, 44.133452], + [123.386664, 44.161794], + [123.323838, 44.179823], + [123.286882, 44.211574], + [123.277027, 44.25274], + [123.196955, 44.34483], + [123.128585, 44.367081], + [123.114419, 44.40258], + [123.142136, 44.428228], + [123.125506, 44.455147], + [123.137209, 44.486322], + [123.12489, 44.5098], + [123.06576, 44.505959], + [123.025108, 44.493153], + [122.85634, 44.398304], + [122.76087, 44.369648], + [122.702971, 44.319145], + [122.675254, 44.285738], + [122.641993, 44.283595], + [122.515726, 44.251025], + [122.483081, 44.236877], + [122.319241, 44.233018], + [122.271198, 44.255741], + [122.291524, 44.310152], + [122.294604, 44.41113], + [122.28598, 44.477783], + [122.228082, 44.480345], + [122.224386, 44.526016], + [122.196053, 44.559712], + [122.13138, 44.577619], + [122.113517, 44.615546], + [122.103046, 44.67388], + [122.117213, 44.701961], + [122.161561, 44.728328], + [122.152322, 44.744057], + [122.10243, 44.736406], + [122.110438, 44.767856], + [122.142467, 44.753833], + [122.168952, 44.770405], + [122.099967, 44.7823], + [122.098119, 44.81882], + [122.04946, 44.912985], + [122.079025, 44.914256], + [122.087032, 44.95281], + [122.074713, 45.006573], + [122.098735, 45.02138], + [122.119677, 45.068739], + [122.109822, 45.142236], + [122.143082, 45.183167], + [122.192358, 45.180636], + [122.22993, 45.206784], + [122.239169, 45.276313], + [122.147394, 45.295682], + [122.146778, 45.374352], + [122.180039, 45.409655], + [122.168336, 45.439897], + [122.064242, 45.472641], + [122.002648, 45.507882], + [121.993409, 45.552741], + [121.966308, 45.596308], + [121.995873, 45.59882], + [122.003264, 45.623102], + [121.970004, 45.692956], + [121.934279, 45.71051], + [121.867142, 45.719703], + [121.812323, 45.704659], + [121.811091, 45.687103], + [121.713773, 45.701734], + [121.666345, 45.727641], + [121.644172, 45.752284], + [121.657106, 45.770238], + [121.697142, 45.76314], + [121.754425, 45.794862], + [121.766744, 45.830318], + [121.769823, 45.84366], + [121.817251, 45.875336], + [121.805548, 45.900746], + [121.821562, 45.918235], + [121.809243, 45.961102], + [121.761816, 45.998947], + [121.819098, 46.023054], + [121.843736, 46.024301], + [121.864062, 46.002272], + [121.923808, 46.004767], + [121.92812, 45.988552], + [122.040221, 45.959022], + [122.085184, 45.912406], + [122.091344, 45.882002], + [122.200981, 45.857], + [122.236705, 45.831569], + [122.253952, 45.7982], + [122.301379, 45.813218], + [122.337719, 45.859917], + [122.372828, 45.856166], + [122.362357, 45.917403], + [122.446125, 45.916986], + [122.496016, 45.85825], + [122.504639, 45.786933], + [122.522501, 45.786933], + [122.556378, 45.82156], + [122.603189, 45.778169], + [122.640761, 45.771072], + [122.650001, 45.731401], + [122.671558, 45.70048], + [122.741775, 45.705077], + [122.751015, 45.735996], + [122.792283, 45.766063], + [122.752246, 45.834905], + [122.772572, 45.856583], + [122.80029, 45.856583], + [122.828623, 45.912406], + [122.792898, 46.073313], + [123.04605, 46.099878], + [123.070071, 46.123527], + [123.112571, 46.130163], + [123.102716, 46.172037], + [123.127354, 46.174523], + [123.128585, 46.210565], + [123.178476, 46.248239], + [123.142136, 46.298293], + [123.089781, 46.347888], + [123.011557, 46.434984], + [123.010325, 46.524823], + [123.002318, 46.574624], + [123.052825, 46.579972], + [123.04605, 46.617803], + [123.077462, 46.622324], + [123.098404, 46.603002], + [123.18094, 46.614103], + [123.228368, 46.588198], + [123.279491, 46.616981], + [123.276411, 46.660947], + [123.318295, 46.662179], + [123.366338, 46.677784], + [123.474743, 46.686817], + [123.603475, 46.68928], + [123.631808, 46.728675], + [123.629344, 46.813524], + [123.580069, 46.827447], + [123.625648, 46.847508], + [123.599163, 46.868378], + [123.605322, 46.891286], + [123.576989, 46.891286], + [123.575757, 46.845461], + [123.562823, 46.82581], + [123.506772, 46.827038], + [123.483366, 46.84587], + [123.52833, 46.944836], + [123.487678, 46.959951], + [123.42362, 46.934212], + [123.337389, 46.988943], + [123.301664, 46.999965], + [123.304128, 46.964852], + [123.360179, 46.970978], + [123.404526, 46.935438], + [123.40699, 46.906416], + [123.374345, 46.837683], + [123.341084, 46.826628], + [123.295505, 46.865105], + [123.221592, 46.850373], + [123.22344, 46.821305], + [123.198802, 46.803283], + [123.163694, 46.74016], + [123.103332, 46.734828], + [123.076846, 46.745082], + [123.026339, 46.718829], + [123.00355, 46.730726], + [122.996774, 46.761483], + [122.906847, 46.80738], + [122.893913, 46.895376], + [122.895144, 46.960359], + [122.83971, 46.937072], + [122.791051, 46.941567], + [122.798442, 46.9575], + [122.77442, 46.973837], + [122.778116, 47.002822], + [122.845869, 47.046881], + [122.852645, 47.072158], + [122.821232, 47.065636], + [122.710363, 47.093349], + [122.679566, 47.094164], + [122.615508, 47.124306], + [122.582863, 47.158092], + [122.531124, 47.198771], + [122.498479, 47.255262], + [122.462755, 47.27841], + [122.441197, 47.310476], + [122.418407, 47.350632], + [122.507103, 47.401291], + [122.543443, 47.495589], + [122.59395, 47.54732], + [122.765181, 47.614333], + [122.848949, 47.67441], + [122.926557, 47.697777], + [123.041122, 47.746492], + [123.161846, 47.781892], + [123.214201, 47.824502], + [123.256085, 47.876711], + [123.300432, 47.953723], + [123.537569, 48.021816], + [123.579453, 48.045427], + [123.705105, 48.152142], + [123.746373, 48.197638], + [123.862785, 48.271782], + [124.019234, 48.39313], + [124.07898, 48.43603], + [124.136878, 48.463023], + [124.25945, 48.536385], + [124.314269, 48.503881], + [124.302566, 48.456673], + [124.330283, 48.435633], + [124.309957, 48.413393], + [124.331515, 48.380015], + [124.317964, 48.35099], + [124.353689, 48.315978], + [124.365392, 48.283731], + [124.422058, 48.245884], + [124.412819, 48.219175], + [124.418978, 48.181679], + [124.475029, 48.173698], + [124.471333, 48.133373], + [124.430065, 48.12099], + [124.415899, 48.08782], + [124.46579, 48.098213], + [124.478108, 48.123387], + [124.505826, 48.124985], + [124.529847, 48.146951], + [124.512601, 48.164518], + [124.547094, 48.200829], + [124.579122, 48.262221], + [124.558796, 48.268197], + [124.579738, 48.297269], + [124.540934, 48.335476], + [124.547094, 48.35775], + [124.51876, 48.378027], + [124.52492, 48.426897], + [124.507674, 48.445558], + [124.555717, 48.467784], + [124.533543, 48.515379], + [124.548941, 48.535593], + [124.520608, 48.556195], + [124.579122, 48.596582], + [124.601912, 48.632587], + [124.624702, 48.701755], + [124.612383, 48.747945], + [124.656115, 48.783842], + [124.644412, 48.80789], + [124.654267, 48.83429], + [124.697383, 48.841775], + [124.715861, 48.885475], + [124.709086, 48.920487], + [124.744194, 48.920487], + [124.756513, 48.967262], + [124.808252, 49.020666], + [124.828578, 49.077933], + [124.809484, 49.115943], + [124.847672, 49.129651], + [124.860607, 49.166448], + [124.906802, 49.184054], + [124.983179, 49.162535], + [125.039845, 49.17623], + [125.034302, 49.157056], + [125.117453, 49.126127], + [125.158721, 49.144921], + [125.187671, 49.186792], + [125.219699, 49.189139], + [125.227707, 49.248947], + [125.214772, 49.277066], + [125.261583, 49.322336], + [125.256656, 49.359769], + [125.277598, 49.379644], + [125.25604, 49.395227], + [125.256656, 49.437275], + [125.270822, 49.454395], + [125.228323, 49.487063], + [125.211076, 49.539908], + [125.233866, 49.536801], + [125.23017, 49.595411], + [125.205533, 49.593859], + [125.16796, 49.629923], + [125.15441, 49.616741], + [125.127308, 49.655113], + [125.132236, 49.672157], + [125.164881, 49.669446], + [125.189518, 49.652401], + [125.185207, 49.634574], + [125.219699, 49.669058], + [125.225243, 49.726349], + [125.204301, 49.734086], + [125.221547, 49.754969], + [125.222779, 49.799026], + [125.177815, 49.829533], + [125.239409, 49.844587], + [125.225243, 49.867351], + [125.245569, 49.87198], + [125.212924, 49.907452], + [125.225859, 49.922481], + [125.199373, 49.935194], + [125.190134, 49.959841], + [125.231402, 49.957531], + [125.241873, 49.987938], + [125.278214, 49.996402], + [125.297924, 50.014481], + [125.283757, 50.036012], + [125.25296, 50.041393], + [125.289916, 50.057917], + [125.315786, 50.04562], + [125.328105, 50.065985], + [125.283757, 50.070211], + [125.287453, 50.093636], + [125.258504, 50.103618], + [125.27883, 50.127411], + [125.311474, 50.140453], + [125.376148, 50.137385], + [125.335496, 50.161161], + [125.382923, 50.172278], + [125.39093, 50.199868], + [125.417416, 50.195654], + [125.448829, 50.216338], + [125.442053, 50.260357], + [125.466075, 50.266861], + [125.463611, 50.295925], + [125.530749, 50.331085], + [125.520278, 50.3498], + [125.546763, 50.358965], + [125.522126, 50.404759], + [125.536292, 50.420014], + [125.567089, 50.402852], + [125.583104, 50.409717], + [125.562162, 50.438314], + [125.580024, 50.449366], + [125.627451, 50.443268], + [125.654553, 50.471082], + [125.699516, 50.487078], + [125.740784, 50.523237], + [125.754335, 50.506874], + [125.770349, 50.531227], + [125.794987, 50.532748], + [125.829479, 50.56165], + [125.807921, 50.60383], + [125.814697, 50.62092], + [125.793139, 50.643316], + [125.804226, 50.658874], + [125.789443, 50.679735], + [125.825784, 50.70362], + [125.78082, 50.725598], + [125.795603, 50.738856], + [125.758646, 50.746809], + [125.804226, 50.773309], + [125.828863, 50.756654], + [125.846726, 50.769524], + [125.836255, 50.793363], + [125.890457, 50.805845], + [125.878138, 50.816812], + [125.913247, 50.825885], + [125.939732, 50.85423], + [125.961906, 50.901054], + [125.997631, 50.872738], + [125.996399, 50.906715], + [126.02042, 50.927466], + [126.042594, 50.92558], + [126.068464, 50.967434], + [126.041978, 50.981753], + [126.033971, 51.011132], + [126.059225, 51.043503], + [125.976073, 51.084498], + [125.993935, 51.119072], + [125.970529, 51.123955], + [125.946508, 51.108176], + [125.909551, 51.138977], + [125.864588, 51.146487], + [125.850421, 51.21364], + [125.819008, 51.227134], + [125.761726, 51.226385], + [125.76111, 51.261976], + [125.740784, 51.27583], + [125.700132, 51.327465], + [125.626219, 51.380163], + [125.623756, 51.387633], + [125.62314, 51.398089], + [125.600966, 51.410409], + [125.60035, 51.413396], + [125.595422, 51.416755], + [125.559082, 51.461521], + [125.528285, 51.488359], + [125.424807, 51.562827], + [125.38046, 51.585516], + [125.35151, 51.623801], + [125.316402, 51.610052], + [125.289301, 51.633831], + [125.228938, 51.640517], + [125.214772, 51.627888], + [125.175968, 51.639403], + [125.130388, 51.635317], + [125.12854, 51.659083], + [125.098975, 51.658341], + [125.060171, 51.59667], + [125.073106, 51.553526], + [125.047236, 51.529704], + [125.004737, 51.529332], + [124.983795, 51.508478], + [124.928976, 51.498419], + [124.917889, 51.474196], + [124.942527, 51.447349], + [124.885244, 51.40817], + [124.864302, 51.37979], + [124.783614, 51.392115], + [124.76452, 51.38726], + [124.752817, 51.35812], + [124.693687, 51.3327], + [124.62655, 51.327465], + [124.58713, 51.363725], + [124.555717, 51.375307], + [124.490427, 51.380537], + [124.478108, 51.36223], + [124.443616, 51.35812], + [124.426985, 51.331953], + [124.430065, 51.301281], + [124.406659, 51.272086], + [124.339522, 51.293422], + [124.297638, 51.298661], + [124.271769, 51.308389], + [124.239124, 51.344664], + [124.192313, 51.33943], + [124.128255, 51.347281], + [124.090067, 51.3413], + [124.071588, 51.320734], + [123.994596, 51.322604], + [123.939777, 51.313253], + [123.926227, 51.300532], + [123.887423, 51.320734], + [123.842459, 51.367462], + [123.794416, 51.361109], + [123.711264, 51.398089], + [123.660141, 51.342795], + [123.661989, 51.319237], + [123.582533, 51.306893], + [123.582533, 51.294545], + [123.46304, 51.286686], + [123.440251, 51.270963], + [123.414381, 51.278825], + [123.376809, 51.266844], + [123.339853, 51.27246], + [123.294273, 51.254111], + [123.231447, 51.268716], + [123.231447, 51.279199], + [123.127969, 51.297913], + [123.069455, 51.321108], + [123.002934, 51.31213], + [122.965977, 51.345786], + [122.965977, 51.386886], + [122.946267, 51.405183], + [122.903768, 51.415262], + [122.900072, 51.445112], + [122.871123, 51.455181], + [122.854492, 51.477551], + [122.880362, 51.511085], + [122.858804, 51.524864], + [122.880362, 51.537894], + [122.874202, 51.561339], + [122.832935, 51.581797], + [122.85634, 51.606707], + [122.820616, 51.633088], + [122.816304, 51.655371], + [122.778732, 51.698048], + [122.749167, 51.746613], + [122.771957, 51.779579], + [122.732536, 51.832495], + [122.725761, 51.87833], + [122.706051, 51.890151], + [122.729457, 51.919321], + [122.726377, 51.978709], + [122.683877, 51.974654], + [122.664783, 51.99861], + [122.650616, 52.058997], + [122.625363, 52.067459], + [122.643841, 52.111585], + [122.629059, 52.13657], + [122.690653, 52.140243], + [122.73808, 52.153464], + [122.769493, 52.179893], + [122.766413, 52.232705], + [122.787355, 52.252494], + [122.76087, 52.26678], + [122.710979, 52.256157], + [122.67895, 52.276667], + [122.585943, 52.266413], + [122.560689, 52.282526], + [122.478153, 52.29607], + [122.484313, 52.341432], + [122.447356, 52.394052], + [122.419023, 52.375057], + [122.378987, 52.395512], + [122.367284, 52.413768], + [122.342031, 52.414133], + [122.326016, 52.459374], + [122.310618, 52.475416], + [122.207756, 52.469218], + [122.178191, 52.48963], + [122.168952, 52.513674], + [122.140003, 52.510032], + [122.142467, 52.495096], + [122.107358, 52.452445], + [122.080873, 52.440407], + [122.091344, 52.427272], + [122.040837, 52.413038], + [122.035909, 52.377615], + [121.976779, 52.343626], + [121.94783, 52.298266], + [121.901018, 52.280695], + [121.841272, 52.282526], + [121.769207, 52.308147], + [121.714389, 52.318025], + [121.715621, 52.342894], + [121.658338, 52.3904], + [121.678664, 52.419973], + [121.63986, 52.44442], + [121.590585, 52.443326], + [121.565331, 52.460468], + [121.519136, 52.456821], + [121.495114, 52.484892], + [121.474172, 52.482706], + [121.416274, 52.499468], + [121.411963, 52.52205], + [121.353448, 52.534793], + [121.323883, 52.573727], + [121.280151, 52.586819], + [121.225333, 52.577364], + [121.182217, 52.59918], + [121.237036, 52.619167], + [121.29247, 52.651855], + [121.309717, 52.676173], + [121.373158, 52.683067], + [121.455078, 52.73528], + [121.476636, 52.772225], + [121.511129, 52.779104], + [121.537614, 52.801542], + [121.591201, 52.824693], + [121.620766, 52.853251], + [121.604136, 52.872401], + [121.610295, 52.892264], + [121.66265, 52.912478], + [121.677432, 52.948192], + [121.715621, 52.997926], + [121.785838, 53.018451], + [121.817867, 53.061631], + [121.775367, 53.089674], + [121.784606, 53.104408], + [121.753193, 53.147501], + [121.722396, 53.145706], + [121.665114, 53.170467], + [121.660186, 53.195213], + [121.67928, 53.199515], + [121.679896, 53.240722], + [121.642324, 53.262564], + [121.615222, 53.258984], + [121.575802, 53.29155], + [121.504969, 53.323018], + [121.499426, 53.337314], + [121.416274, 53.319443], + [121.336818, 53.325877], + [121.308485, 53.301565], + [121.227797, 53.280459], + [121.155732, 53.285468], + [121.129246, 53.277238], + [121.098449, 53.306929], + [121.055334, 53.29155], + [120.950624, 53.29763], + [120.936457, 53.28833], + [120.882871, 53.294411], + [120.867472, 53.278669], + [120.820661, 53.269007], + [120.838523, 53.239648], + [120.821893, 53.241797], + [120.736277, 53.204892], + [120.690698, 53.174771], + [120.687002, 53.142476], + [120.659901, 53.137091], + [120.643886, 53.106923], + [120.562582, 53.082845], + [120.529321, 53.045803], + [120.452945, 53.01017], + [120.411061, 52.957927], + [120.363018, 52.94134], + [120.350699, 52.906343], + [120.295265, 52.891542], + [120.297112, 52.869872], + [120.222584, 52.84277], + [120.181316, 52.806969], + [120.14128, 52.813119], + [120.101244, 52.788877], + [120.031642, 52.773674], + [120.071063, 52.70628], + [120.035338, 52.646409], + [120.049505, 52.598453], + [120.07599, 52.586092], + [120.125265, 52.586819], + [120.194866, 52.578819], + [120.289721, 52.623527], + [120.396895, 52.616261], + [120.462184, 52.64532], + [120.483742, 52.630066], + [120.56135, 52.595544], + [120.605082, 52.589364], + [120.62664, 52.570818], + [120.658669, 52.56718], + [120.690698, 52.547532], + [120.734429, 52.536977], + [120.687002, 52.511489], + [120.706712, 52.492909], + [120.68269, 52.464479], + [120.688234, 52.427637], + [120.64943, 52.3904], + [120.653741, 52.371038], + [120.62356, 52.361172], + [120.627256, 52.323878], + [120.653741, 52.302658], + [120.695625, 52.290214], + [120.715951, 52.261286], + [120.755371, 52.258355], + [120.745516, 52.20594], + [120.786784, 52.15787], + [120.760299, 52.136937], + [120.76769, 52.10938], + [120.753523, 52.085483], + [120.717183, 52.072978], + [120.690698, 52.047221], + [120.691929, 52.026973], + [120.717799, 52.015556], + [120.704864, 51.983501], + [120.66298, 51.958061], + [120.656821, 51.926333], + [120.548416, 51.907877], + [120.549032, 51.882394], + [120.481278, 51.885719], + [120.480046, 51.855049], + [120.40059, 51.833605], + [120.40675, 51.81659], + [120.363634, 51.789945], + [120.317438, 51.785873], + [120.294649, 51.752171], + [120.226279, 51.717703], + [120.172693, 51.679868], + [120.087077, 51.678013], + [120.100628, 51.649058], + [120.05936, 51.634203], + [120.035954, 51.583657], + [120.052584, 51.560967], + [120.017476, 51.52114], + [119.985447, 51.505125], + [119.982367, 51.482396], + [120.002693, 51.459283], + [119.982983, 51.445112], + [119.97128, 51.40033], + [119.910918, 51.390994], + [119.914614, 51.374187], + [119.946643, 51.360736], + [119.883817, 51.336813], + [119.885049, 51.302777], + [119.811136, 51.281071], + [119.828383, 51.263099], + [119.797586, 51.243622], + [119.821607, 51.21439], + [119.784035, 51.22601], + [119.760629, 51.212516], + [119.788346, 51.174636], + [119.771716, 51.124331], + [119.752622, 51.117193], + [119.764325, 51.092017], + [119.719361, 51.075099], + [119.726753, 51.051028], + [119.678093, 51.016404], + [119.630666, 51.00925], + [119.598637, 50.984767], + [119.569688, 50.933879], + [119.491464, 50.87878], + [119.498855, 50.827776], + [119.515485, 50.814165], + [119.496391, 50.771795], + [119.506862, 50.763846], + [119.450196, 50.695281], + [119.430486, 50.684286], + [119.385522, 50.682769], + [119.394145, 50.667219], + [119.361501, 50.632689], + [119.298059, 50.616743], + [119.281428, 50.601551], + [119.295595, 50.573814], + [119.264182, 50.536933], + [119.262334, 50.490124], + [119.250631, 50.448604], + [119.22353, 50.441363], + [119.217371, 50.414675], + [119.165016, 50.422683], + [119.125596, 50.389118], + [119.176719, 50.378814], + [119.155777, 50.364691], + [119.188422, 50.347509], + [119.232153, 50.365455], + [119.259871, 50.345218], + [119.277117, 50.366218], + [119.322696, 50.352474], + [119.358421, 50.358965], + [119.381827, 50.324208], + [119.35103, 50.303953], + [119.339943, 50.244668], + [119.319001, 50.220933], + [119.358421, 50.197953], + [119.339327, 50.192206], + [119.350414, 50.166145], + [119.309762, 50.161161], + [119.290052, 50.121655], + [119.236465, 50.075204], + [119.190269, 50.087877], + [119.193965, 50.069826], + [119.163168, 50.027554], + [119.12498, 50.019095], + [119.090487, 49.985629], + [118.982082, 49.979087], + [118.964836, 49.988708], + [118.791757, 49.955606], + [118.761576, 49.959456], + [118.739402, 49.946364], + [118.672264, 49.955991], + [118.605127, 49.926719], + [118.574946, 49.931342], + [118.531214, 49.887791], + [118.485019, 49.866194], + [118.483787, 49.830691], + [118.443751, 49.835709], + [118.385853, 49.827217], + [118.398787, 49.802502], + [118.384005, 49.783958], + [118.315636, 49.766953], + [118.284223, 49.743755], + [118.220781, 49.729831], + [118.211542, 49.690744], + [118.156723, 49.660149], + [118.129622, 49.669446], + [118.082811, 49.616741], + [118.011362, 49.614803], + [117.995963, 49.623332], + [117.950999, 49.596187], + [117.866, 49.591532], + [117.849369, 49.551557], + [117.809333, 49.521263], + [117.638102, 49.574847], + [117.485349, 49.633024], + [117.278394, 49.636512], + [117.068974, 49.695389], + [116.736367, 49.847674], + [116.717889, 49.847288], + [116.428397, 49.430659], + [116.048363, 48.873274], + [116.077928, 48.822471], + [116.069305, 48.811437], + [115.83032, 48.560156], + [115.799523, 48.514982], + [115.822929, 48.259432], + [115.81061, 48.257042], + [115.529126, 48.155336], + [115.545141, 48.134971], + [115.539597, 48.104607], + [115.580249, 47.921649], + [115.939342, 47.683275], + [115.968291, 47.689721], + [116.111189, 47.811642], + [116.130283, 47.823296], + [116.26579, 47.876711], + [116.453035, 47.837358], + [116.669846, 47.890758], + [116.791186, 47.89758], + [116.879265, 47.893968], + [117.094844, 47.8241], + [117.384335, 47.641356], + [117.493357, 47.758563], + [117.519226, 47.761782], + [117.529081, 47.782697], + [117.813645, 48.016212], + [117.886942, 48.025418], + [117.96147, 48.011007], + [118.052014, 48.01421], + [118.107448, 48.031021], + [118.124694, 48.047427], + [118.150564, 48.036224], + [118.238643, 48.041826], + [118.238027, 48.031422], + [118.284839, 48.011007], + [118.351976, 48.006203], + [118.37415, 48.016612], + [118.422193, 48.01461], + [118.441903, 47.995791], + [118.568171, 47.992187], + [118.773278, 47.771034], + [119.134219, 47.664335], + [119.152081, 47.540453], + [119.205052, 47.520249], + [119.365812, 47.47739], + [119.32208, 47.42721], + [119.365812, 47.423161], + [119.386138, 47.397645], + [119.437877, 47.378602], + [119.450812, 47.353065], + [119.559217, 47.303172], + [119.56784, 47.248357], + [119.627586, 47.247544], + [119.716282, 47.195518], + [119.763093, 47.13082], + [119.806825, 47.055037], + [119.79081, 47.04525], + [119.795122, 47.013024], + [119.845013, 46.964852], + [119.859795, 46.917046], + [119.926933, 46.903963], + [119.920157, 46.853238], + [119.936172, 46.790173], + [119.917078, 46.758203], + [119.93494, 46.712674], + [119.911534, 46.669572], + [119.859179, 46.669572], + [119.804361, 46.68189], + [119.8136, 46.66834], + [119.783419, 46.626023], + [119.739687, 46.615336], + [119.677477, 46.584908], + [119.682405, 46.605058], + [119.656535, 46.625612], + [119.598637, 46.618214], + [119.557985, 46.633832], + [119.491464, 46.629311], + [119.431718, 46.638763], + [119.374435, 46.603414], + [119.357805, 46.619447], + [119.325776, 46.608759], + [119.26295, 46.649034], + [119.20074, 46.648213], + [119.152081, 46.658072], + [119.123132, 46.642872], + [119.073857, 46.676552], + [119.011647, 46.745902], + [118.951285, 46.722111], + [118.912481, 46.733188], + [118.914329, 46.77501], + [118.845343, 46.771731], + [118.788061, 46.717598], + [118.788061, 46.687227], + [118.677192, 46.6979], + [118.639004, 46.721291], + [118.586033, 46.692975], + [118.446831, 46.704467], + [118.41049, 46.728265], + [118.316252, 46.73934], + [118.274984, 46.715957], + [118.238643, 46.709392], + [118.192448, 46.682711], + [118.124078, 46.678195], + [118.04647, 46.631366], + [117.992883, 46.631366], + [117.982412, 46.614925], + [117.914659, 46.607936], + [117.868464, 46.575447], + [117.870927, 46.549935], + [117.813645, 46.530588], + [117.769913, 46.537586], + [117.748355, 46.521941], + [117.704008, 46.516587], + [117.641182, 46.558166], + [117.622704, 46.596012], + [117.596218, 46.603414], + [117.49582, 46.600535], + [117.42006, 46.582029], + [117.447777, 46.528117], + [117.392343, 46.463023], + [117.375712, 46.416421], + [117.383719, 46.394962], + [117.372017, 46.36028], + [117.247597, 46.366888], + [117.097308, 46.356976], + [116.876801, 46.375559], + [116.834302, 46.384229], + [116.81336, 46.355737], + [116.745606, 46.327642], + [116.673541, 46.325163], + [116.585462, 46.292504], + [116.573143, 46.258998], + [116.536187, 46.23251], + [116.439484, 46.137628], + [116.414231, 46.133896], + [116.271949, 45.966926], + [116.243, 45.876169], + [116.288579, 45.839074], + [116.278108, 45.831152], + [116.286731, 45.775247], + [116.260862, 45.776082], + [116.22329, 45.747273], + [116.217746, 45.72221], + [116.17463, 45.688775], + [116.1155, 45.679577], + [116.035428, 45.685013], + [116.026805, 45.661177], + [115.936878, 45.632727], + [115.864197, 45.572853], + [115.699741, 45.45963], + [115.586408, 45.440317], + [115.36467, 45.392427], + [115.178041, 45.396209], + [114.983404, 45.379397], + [114.920578, 45.386122], + [114.745035, 45.438217], + [114.600906, 45.403773], + [114.551014, 45.387383], + [114.539928, 45.325985], + [114.519602, 45.283893], + [114.459855, 45.21353], + [114.409348, 45.179371], + [114.347139, 45.119436], + [114.313262, 45.107189], + [114.19069, 45.036607], + [114.158045, 44.994301], + [114.116777, 44.957045], + [114.065038, 44.931206], + [113.907358, 44.915104], + [113.861778, 44.863377], + [113.798953, 44.849377], + [113.712105, 44.788247], + [113.631417, 44.745333], + [113.540874, 44.759358], + [113.503918, 44.777628], + [113.11526, 44.799714], + [113.037652, 44.822641], + [112.937869, 44.840042], + [112.850406, 44.840466], + [112.712436, 44.879494], + [112.599719, 44.930783], + [112.540589, 45.001072], + [112.438959, 45.071697], + [112.396459, 45.064512], + [112.113743, 45.072965], + [112.071243, 45.096206], + [112.002874, 45.090713], + [111.903707, 45.052252], + [111.764505, 44.969325], + [111.69244, 44.859983], + [111.624687, 44.778477], + [111.585267, 44.705789], + [111.560629, 44.647062], + [111.569868, 44.57634], + [111.530448, 44.55033], + [111.514434, 44.507666], + [111.478709, 44.488884], + [111.427586, 44.394455], + [111.415883, 44.35724], + [111.428818, 44.319573], + [111.507042, 44.294305], + [111.534144, 44.26217], + [111.541535, 44.206855], + [111.559397, 44.171238], + [111.662875, 44.061247], + [111.702295, 44.034147], + [111.773128, 44.010479], + [111.870447, 43.940279], + [111.959758, 43.823382], + [111.970845, 43.748205], + [111.951135, 43.693275], + [111.891388, 43.6738], + [111.79407, 43.672068], + [111.606209, 43.513863], + [111.564325, 43.490422], + [111.456535, 43.494329], + [111.400485, 43.472618], + [111.354289, 43.436125], + [111.183674, 43.396132], + [111.151029, 43.38004], + [111.069725, 43.357852], + [111.02045, 43.329998], + [110.82027, 43.149067], + [110.769763, 43.099272], + [110.736502, 43.089657], + [110.687227, 43.036314], + [110.689691, 43.02144], + [110.631177, 42.936061], + [110.469801, 42.839156], + [110.437156, 42.781203], + [110.34846, 42.742098], + [110.139657, 42.674815], + [110.108244, 42.642687], + [109.906216, 42.635643], + [109.733753, 42.579262], + [109.683862, 42.558988], + [109.544044, 42.472528], + [109.486761, 42.458842], + [109.291509, 42.435879], + [109.026039, 42.458401], + [108.983539, 42.449128], + [108.845569, 42.395673], + [108.798757, 42.415116], + [108.705134, 42.413349], + [108.532671, 42.442945], + [108.298614, 42.438529], + [108.238252, 42.460167], + [108.089195, 42.436321], + [108.022058, 42.433229], + [107.986949, 42.413349], + [107.939522, 42.403628], + [107.736262, 42.415116], + [107.57427, 42.412907], + [107.501589, 42.456635], + [107.46648, 42.458842], + [107.303872, 42.412465], + [107.271844, 42.364285], + [107.051337, 42.319166], + [106.785867, 42.291281], + [106.612789, 42.241679], + [106.372572, 42.161436], + [106.344855, 42.149457], + [106.01348, 42.032213], + [105.74185, 41.949033], + [105.589713, 41.888471], + [105.385221, 41.797073], + [105.291599, 41.749763], + [105.230621, 41.751103], + [105.009498, 41.583007], + [104.923267, 41.654143], + [104.803775, 41.652355], + [104.68921, 41.6452], + [104.524138, 41.661745], + [104.530298, 41.875104], + [104.418813, 41.860397], + [104.30856, 41.840782], + [104.080046, 41.805104], + [103.868779, 41.802427], + [103.454868, 41.877332], + [103.418527, 41.882233], + [103.20726, 41.96283], + [103.021862, 42.028212], + [102.712045, 42.153007], + [102.621502, 42.154338], + [102.540814, 42.162323], + [102.449039, 42.144133], + [102.093642, 42.223512], + [102.070236, 42.232374], + [101.877447, 42.432345], + [101.803534, 42.503861], + [101.770274, 42.509597], + [101.557775, 42.529887], + [101.291689, 42.586312], + [100.862995, 42.671295], + [100.826655, 42.675255], + [100.32528, 42.690213], + [100.272309, 42.636523], + [100.004376, 42.648849], + [99.969267, 42.647969], + [99.51224, 42.568244], + [98.962822, 42.607018], + [98.546447, 42.638284], + [98.195362, 42.653251], + [97.831958, 42.706047], + [97.28254, 42.782081], + [97.172903, 42.795257] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 210000, + "name": "辽宁省", + "center": [123.429096, 41.796767], + "centroid": [122.604994, 41.299712], + "childrenNum": 14, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 5, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [123.534489, 39.788361], + [123.546808, 39.756163], + [123.579453, 39.781002], + [123.612714, 39.775023], + [123.642279, 39.796178], + [123.645358, 39.823761], + [123.674924, 39.826979], + [123.687858, 39.808132], + [123.795032, 39.822842], + [123.812278, 39.831115], + [123.95148, 39.817786], + [124.002603, 39.800316], + [124.103001, 39.823302], + [124.099306, 39.777323], + [124.151045, 39.74558], + [124.173218, 39.841225], + [124.214486, 39.865116], + [124.215102, 39.883487], + [124.21695, 39.894049], + [124.218182, 39.895885], + [124.219414, 39.899099], + [124.241588, 39.928477], + [124.286551, 39.931689], + [124.288399, 39.962888], + [124.349377, 39.989029], + [124.372167, 40.021576], + [124.336442, 40.049985], + [124.346913, 40.079756], + [124.428217, 40.144291], + [124.457782, 40.177679], + [124.490427, 40.18408], + [124.513833, 40.218362], + [124.515065, 40.22019], + [124.62655, 40.291896], + [124.722636, 40.321561], + [124.739267, 40.371733], + [124.834121, 40.423235], + [124.913578, 40.481981], + [124.945606, 40.45603], + [124.985642, 40.475153], + [125.044157, 40.466503], + [125.042925, 40.483802], + [125.004737, 40.496091], + [125.015823, 40.533853], + [125.076801, 40.562048], + [125.113758, 40.569322], + [125.181511, 40.611132], + [125.262815, 40.620218], + [125.279445, 40.655187], + [125.305315, 40.661089], + [125.329337, 40.643835], + [125.375532, 40.658365], + [125.422343, 40.635661], + [125.418648, 40.673345], + [125.453756, 40.676522], + [125.459916, 40.707379], + [125.49564, 40.728697], + [125.544915, 40.729605], + [125.551075, 40.761796], + [125.585567, 40.788535], + [125.61698, 40.763609], + [125.685349, 40.769048], + [125.67611, 40.788082], + [125.641002, 40.798503], + [125.648393, 40.826133], + [125.707523, 40.866877], + [125.687813, 40.897645], + [125.652089, 40.91619], + [125.584335, 40.891764], + [125.589263, 40.931112], + [125.635458, 40.94151], + [125.650241, 40.970888], + [125.674879, 40.974503], + [125.684118, 41.021929], + [125.726617, 41.055332], + [125.739552, 41.08917], + [125.712451, 41.095485], + [125.734009, 41.125695], + [125.759878, 41.132908], + [125.791291, 41.167607], + [125.73832, 41.178418], + [125.758646, 41.232449], + [125.749407, 41.245499], + [125.695205, 41.244599], + [125.685349, 41.273842], + [125.646545, 41.264396], + [125.642234, 41.296327], + [125.62006, 41.318355], + [125.637306, 41.34442], + [125.610205, 41.365084], + [125.589879, 41.359245], + [125.581256, 41.396517], + [125.547995, 41.401006], + [125.534444, 41.428833], + [125.533212, 41.479069], + [125.493176, 41.509103], + [125.507343, 41.534195], + [125.479626, 41.544946], + [125.450061, 41.597777], + [125.461148, 41.642516], + [125.446981, 41.67605], + [125.412488, 41.691246], + [125.344119, 41.672474], + [125.317018, 41.676944], + [125.332416, 41.711354], + [125.336112, 41.768067], + [125.336112, 41.768067], + [125.323177, 41.771191], + [125.323177, 41.771191], + [125.319482, 41.776993], + [125.319482, 41.776993], + [125.294844, 41.822945], + [125.307779, 41.924548], + [125.35151, 41.92811], + [125.291764, 41.958825], + [125.29854, 41.974399], + [125.369989, 42.002868], + [125.363213, 42.017097], + [125.416184, 42.063766], + [125.414336, 42.101964], + [125.446365, 42.098411], + [125.490097, 42.136145], + [125.458068, 42.160105], + [125.458068, 42.160105], + [125.41372, 42.156112], + [125.368141, 42.182726], + [125.357054, 42.145464], + [125.305931, 42.146351], + [125.312706, 42.197359], + [125.280677, 42.175187], + [125.312706, 42.219966], + [125.27575, 42.231045], + [125.27575, 42.266928], + [125.299156, 42.289953], + [125.264047, 42.312528], + [125.224011, 42.30102], + [125.175352, 42.308102], + [125.167345, 42.351903], + [125.203685, 42.366938], + [125.185823, 42.38197], + [125.186439, 42.427928], + [125.140243, 42.44692], + [125.150098, 42.458842], + [125.105135, 42.490624], + [125.068794, 42.499449], + [125.090968, 42.515773], + [125.066946, 42.534738], + [125.089736, 42.567803], + [125.082961, 42.591159], + [125.097127, 42.622433], + [125.038613, 42.615387], + [125.010896, 42.63212], + [125.014592, 42.666014], + [124.99057, 42.677455], + [124.968396, 42.722756], + [124.996729, 42.745174], + [124.975171, 42.802722], + [124.92836, 42.819844], + [124.897563, 42.787791], + [124.874157, 42.789987], + [124.856911, 42.824234], + [124.84952, 42.882585], + [124.87231, 42.962344], + [124.869846, 42.988178], + [124.840897, 43.032377], + [124.88894, 43.074796], + [124.882781, 43.13422], + [124.785462, 43.117185], + [124.755281, 43.074359], + [124.719557, 43.069987], + [124.686912, 43.051185], + [124.677673, 43.002185], + [124.658579, 42.972854], + [124.635173, 42.972854], + [124.632093, 42.949642], + [124.607456, 42.937376], + [124.586514, 42.905384], + [124.466406, 42.847054], + [124.435609, 42.880831], + [124.371551, 42.880831], + [124.38079, 42.912835], + [124.431913, 42.930803], + [124.442384, 42.958841], + [124.42329, 42.975482], + [124.369703, 42.972854], + [124.333363, 42.997371], + [124.425754, 43.076107], + [124.366007, 43.121554], + [124.273617, 43.17875], + [124.287167, 43.207983], + [124.27608, 43.233278], + [124.228653, 43.235022], + [124.215102, 43.255947], + [124.168291, 43.244177], + [124.114088, 43.247229], + [124.117168, 43.2773], + [124.099306, 43.292983], + [124.032784, 43.280786], + [123.964415, 43.34088], + [123.896046, 43.361333], + [123.881263, 43.392218], + [123.881263, 43.392218], + [123.852314, 43.406133], + [123.857858, 43.459153], + [123.857858, 43.459153], + [123.79688, 43.489988], + [123.747604, 43.472184], + [123.749452, 43.439167], + [123.710032, 43.417001], + [123.703873, 43.37047], + [123.698329, 43.272071], + [123.664453, 43.264663], + [123.676771, 43.223684], + [123.645974, 43.208855], + [123.666916, 43.179623], + [123.636119, 43.141644], + [123.631192, 43.088346], + [123.580685, 43.036314], + [123.572678, 43.003498], + [123.536337, 43.007], + [123.474743, 43.042438], + [123.434707, 43.027565], + [123.323222, 43.000872], + [123.259165, 42.993431], + [123.18402, 42.925983], + [123.188947, 42.895739], + [123.169853, 42.859777], + [123.227752, 42.831695], + [123.118114, 42.801405], + [123.058368, 42.768903], + [122.980144, 42.777689], + [122.945651, 42.753524], + [122.925941, 42.772417], + [122.887137, 42.770221], + [122.883442, 42.751766], + [122.883442, 42.751766], + [122.848949, 42.712203], + [122.848949, 42.712203], + [122.786123, 42.757479], + [122.73808, 42.77066], + [122.733152, 42.786034], + [122.653696, 42.78252], + [122.624747, 42.773296], + [122.580399, 42.789987], + [122.576088, 42.819405], + [122.556378, 42.827745], + [122.436886, 42.843105], + [122.35127, 42.830378], + [122.371596, 42.776371], + [122.439349, 42.770221], + [122.460907, 42.755282], + [122.396234, 42.707366], + [122.396234, 42.684054], + [122.338951, 42.669975], + [122.324785, 42.684934], + [122.261343, 42.695931], + [122.204676, 42.732867], + [122.204676, 42.685374], + [122.160945, 42.684934], + [122.072865, 42.710444], + [122.062394, 42.723635], + [122.018663, 42.69901], + [121.939207, 42.688453], + [121.94167, 42.666014], + [121.915801, 42.656332], + [121.921344, 42.605697], + [121.889931, 42.556784], + [121.844352, 42.522389], + [121.831417, 42.533856], + [121.817867, 42.504303], + [121.803084, 42.514891], + [121.747649, 42.484887], + [121.69899, 42.438529], + [121.66573, 42.437204], + [121.604136, 42.495037], + [121.607831, 42.516214], + [121.570875, 42.487093], + [121.506201, 42.482239], + [121.4791, 42.49636], + [121.434752, 42.475176], + [121.386093, 42.474294], + [121.304789, 42.435879], + [121.314644, 42.42837], + [121.285079, 42.387717], + [121.218558, 42.371802], + [121.184681, 42.333324], + [121.133558, 42.300135], + [121.120623, 42.280656], + [121.087978, 42.278885], + [121.070732, 42.254083], + [121.028848, 42.242565], + [120.992508, 42.264714], + [120.933994, 42.27977], + [120.883487, 42.269585], + [120.883487, 42.269585], + [120.883487, 42.242565], + [120.8299, 42.252755], + [120.820661, 42.227943], + [120.79048, 42.218636], + [120.745516, 42.223512], + [120.72211, 42.203565], + [120.624792, 42.154338], + [120.58414, 42.167203], + [120.56751, 42.152119], + [120.466496, 42.105516], + [120.493597, 42.073539], + [120.450481, 42.057101], + [120.456641, 42.016208], + [120.399358, 41.984631], + [120.373489, 41.994862], + [120.309431, 41.951704], + [120.318054, 41.93746], + [120.271859, 41.925439], + [120.260156, 41.904062], + [120.290337, 41.897381], + [120.286641, 41.880005], + [120.251533, 41.884016], + [120.215808, 41.853265], + [120.188707, 41.848361], + [120.183164, 41.826513], + [120.127113, 41.77253], + [120.1382, 41.729221], + [120.096316, 41.697056], + [120.035954, 41.708226], + [120.024867, 41.737707], + [120.050737, 41.776101], + [120.041498, 41.818932], + [120.023019, 41.816701], + [119.989759, 41.899163], + [119.954034, 41.923212], + [119.950954, 41.974399], + [119.924469, 41.98908], + [119.921389, 42.014429], + [119.897368, 42.030879], + [119.87581, 42.077982], + [119.845629, 42.097079], + [119.837622, 42.135257], + [119.854868, 42.170308], + [119.841933, 42.215534], + [119.744615, 42.211545], + [119.679941, 42.240793], + [119.617115, 42.252755], + [119.609108, 42.276671], + [119.557985, 42.289068], + [119.557985, 42.289068], + [119.539507, 42.297922], + [119.571536, 42.335536], + [119.572152, 42.359421], + [119.540123, 42.363401], + [119.502551, 42.388159], + [119.482841, 42.347037], + [119.432949, 42.317396], + [119.34795, 42.300578], + [119.280197, 42.260728], + [119.274037, 42.239021], + [119.237697, 42.200905], + [119.277733, 42.185387], + [119.286972, 42.154781], + [119.30853, 42.147239], + [119.314689, 42.119723], + [119.352261, 42.118391], + [119.384906, 42.08953], + [119.375667, 42.023322], + [119.324544, 41.969505], + [119.323928, 41.937014], + [119.340559, 41.926774], + [119.323312, 41.889807], + [119.334399, 41.871539], + [119.312841, 41.80555], + [119.292515, 41.790827], + [119.317769, 41.764049], + [119.319001, 41.727435], + [119.299907, 41.705545], + [119.307914, 41.657273], + [119.342406, 41.617914], + [119.415703, 41.590169], + [119.420015, 41.567785], + [119.362116, 41.566442], + [119.361501, 41.545841], + [119.406464, 41.503276], + [119.401537, 41.472343], + [119.378131, 41.459787], + [119.376283, 41.422102], + [119.309762, 41.405944], + [119.330704, 41.385293], + [119.296211, 41.325097], + [119.239545, 41.31431], + [119.2494, 41.279689], + [119.209364, 41.244599], + [119.204436, 41.222546], + [119.169943, 41.222996], + [119.189038, 41.198234], + [119.126212, 41.138767], + [119.081248, 41.131555], + [119.080632, 41.095936], + [119.037516, 41.067516], + [118.964836, 41.079246], + [118.937118, 41.052625], + [118.951901, 41.018317], + [119.013495, 41.007479], + [119.00056, 40.967273], + [118.977154, 40.959138], + [118.977154, 40.959138], + [118.916792, 40.969984], + [118.90201, 40.960946], + [118.873061, 40.847866], + [118.845959, 40.822057], + [118.878604, 40.783098], + [118.907553, 40.775394], + [118.895234, 40.75409], + [118.950053, 40.747743], + [118.96114, 40.72008], + [119.011031, 40.687414], + [119.028277, 40.692406], + [119.054763, 40.664721], + [119.115125, 40.666536], + [119.165632, 40.69286], + [119.184726, 40.680153], + [119.14469, 40.632482], + [119.162552, 40.600228], + [119.177951, 40.609315], + [119.230921, 40.603863], + [119.22045, 40.569322], + [119.256175, 40.543404], + [119.30237, 40.530215], + [119.429254, 40.540221], + [119.477913, 40.533399], + [119.503783, 40.553864], + [119.559217, 40.547952], + [119.572152, 40.523846], + [119.553674, 40.502007], + [119.604797, 40.455119], + [119.586934, 40.375381], + [119.598021, 40.334335], + [119.651608, 40.271808], + [119.639289, 40.231613], + [119.639289, 40.231613], + [119.671934, 40.23938], + [119.716898, 40.195966], + [119.745847, 40.207851], + [119.760629, 40.136056], + [119.736608, 40.104936], + [119.772332, 40.08113], + [119.783419, 40.046778], + [119.783419, 40.046778], + [119.787115, 40.041739], + [119.787115, 40.041739], + [119.81668, 40.050443], + [119.81668, 40.050443], + [119.854252, 40.033033], + [119.845629, 40.000949], + [119.845629, 40.000949], + [119.854252, 39.98857], + [119.91831, 39.989946], + [119.941715, 40.009659], + [119.947259, 40.040364], + [120.092005, 40.077466], + [120.134504, 40.074719], + [120.161606, 40.096239], + [120.273091, 40.127362], + [120.371641, 40.174478], + [120.451097, 40.177679], + [120.491749, 40.20008], + [120.523778, 40.256737], + [120.52193, 40.304676], + [120.537329, 40.325211], + [120.602618, 40.36079], + [120.596459, 40.399084], + [120.617401, 40.41959], + [120.616169, 40.444645], + [120.619249, 40.460128], + [120.666676, 40.467413], + [120.693777, 40.505647], + [120.72211, 40.515657], + [120.72827, 40.539311], + [120.822509, 40.59432], + [120.837291, 40.644289], + [120.8299, 40.671076], + [120.861313, 40.684692], + [120.939537, 40.686507], + [120.983269, 40.712822], + [121.032544, 40.709193], + [121.028848, 40.746382], + [120.991276, 40.744115], + [120.980189, 40.766329], + [120.994356, 40.790801], + [120.971566, 40.805751], + [121.00729, 40.807563], + [121.010986, 40.784457], + [121.086747, 40.79805], + [121.076892, 40.815716], + [121.096602, 40.839717], + [121.126167, 40.86914], + [121.177906, 40.873665], + [121.23642, 40.851035], + [121.290622, 40.851488], + [121.439064, 40.830208], + [121.440296, 40.88181], + [121.499426, 40.880001], + [121.526527, 40.85194], + [121.55486, 40.849677], + [121.553013, 40.817528], + [121.576418, 40.837906], + [121.626309, 40.844244], + [121.682976, 40.829755], + [121.732251, 40.846961], + [121.735331, 40.862351], + [121.778446, 40.886787], + [121.816019, 40.894931], + [121.84312, 40.831567], + [121.883772, 40.802127], + [121.934279, 40.79805], + [121.936127, 40.711462], + [121.951525, 40.680607], + [122.025438, 40.674253], + [122.06609, 40.64883], + [122.122141, 40.657457], + [122.148626, 40.671983], + [122.133843, 40.614313], + [122.150474, 40.588413], + [122.245944, 40.519752], + [122.231162, 40.505192], + [122.265038, 40.48016], + [122.221923, 40.481071], + [122.240401, 40.461039], + [122.250872, 40.445555], + [122.229314, 40.424146], + [122.186814, 40.422779], + [122.198517, 40.382219], + [122.152322, 40.357597], + [122.135691, 40.374925], + [122.111054, 40.348932], + [122.138155, 40.338897], + [122.110438, 40.315629], + [122.079641, 40.332967], + [122.040221, 40.322017], + [122.039605, 40.260391], + [122.02667, 40.244862], + [121.940438, 40.242121], + [121.950293, 40.204194], + [121.98109, 40.173106], + [122.003264, 40.172191], + [121.995257, 40.128277], + [121.956453, 40.133311], + [121.910257, 40.072887], + [121.824642, 40.025701], + [121.796309, 39.999116], + [121.779062, 39.942702], + [121.76428, 39.933525], + [121.699606, 39.937196], + [121.626925, 39.882569], + [121.572107, 39.865116], + [121.541926, 39.874302], + [121.530223, 39.851334], + [121.472325, 39.802155], + [121.487107, 39.760303], + [121.45939, 39.747881], + [121.502506, 39.703233], + [121.482796, 39.659478], + [121.451999, 39.658095], + [121.450151, 39.624914], + [121.325731, 39.601402], + [121.299246, 39.606013], + [121.263521, 39.589873], + [121.226565, 39.554814], + [121.224717, 39.519275], + [121.268449, 39.482794], + [121.286927, 39.507271], + [121.301709, 39.476327], + [121.245659, 39.456923], + [121.270296, 39.434277], + [121.246891, 39.421334], + [121.245659, 39.389427], + [121.270296, 39.374162], + [121.307869, 39.391277], + [121.324499, 39.371386], + [121.35468, 39.377863], + [121.432904, 39.357506], + [121.435984, 39.329736], + [121.466781, 39.320014], + [121.474788, 39.296398], + [121.508665, 39.29223], + [121.51544, 39.286672], + [121.562252, 39.322792], + [121.621382, 39.326033], + [121.72486, 39.364447], + [121.711925, 39.33992], + [121.7187, 39.320477], + [121.667577, 39.310754], + [121.672505, 39.275554], + [121.623846, 39.285745], + [121.589353, 39.263044], + [121.631237, 39.22643], + [121.591201, 39.228748], + [121.586889, 39.193506], + [121.604136, 39.166136], + [121.639244, 39.166136], + [121.68236, 39.117863], + [121.631853, 39.077921], + [121.605983, 39.080708], + [121.642324, 39.11972], + [121.590585, 39.154999], + [121.562252, 39.127149], + [121.599208, 39.098824], + [121.581962, 39.075598], + [121.508049, 39.034237], + [121.431057, 39.027263], + [121.370695, 39.060264], + [121.317108, 39.012384], + [121.341129, 38.980757], + [121.275224, 38.971917], + [121.204391, 38.941202], + [121.180369, 38.959819], + [121.128014, 38.958888], + [121.08921, 38.922115], + [121.094138, 38.894173], + [121.129862, 38.879266], + [121.110768, 38.862026], + [121.12863, 38.799089], + [121.112, 38.776231], + [121.13787, 38.723023], + [121.198848, 38.721623], + [121.259825, 38.786495], + [121.280767, 38.786961], + [121.288775, 38.78976], + [121.315876, 38.793958], + [121.359608, 38.822406], + [121.399028, 38.812613], + [121.509897, 38.817743], + [121.564715, 38.874607], + [121.618302, 38.862492], + [121.675585, 38.86156], + [121.708845, 38.872744], + [121.719316, 38.920252], + [121.655874, 38.946788], + [121.618918, 38.950046], + [121.66265, 38.966333], + [121.671273, 39.010059], + [121.73841, 38.998898], + [121.756889, 39.025869], + [121.790149, 39.022614], + [121.804932, 38.970986], + [121.863446, 38.942598], + [121.920728, 38.969591], + [121.905946, 38.997503], + [121.852975, 39.035631], + [121.8887, 39.027263], + [121.929352, 39.024939], + [121.907178, 39.055617], + [121.923192, 39.053758], + [121.963228, 39.030053], + [122.013735, 39.073275], + [122.061778, 39.060264], + [122.071634, 39.074204], + [122.048228, 39.101146], + [122.088264, 39.112291], + [122.127684, 39.144788], + [122.167104, 39.158711], + [122.123988, 39.172631], + [122.117213, 39.213911], + [122.160329, 39.238019], + [122.242865, 39.267678], + [122.274893, 39.322329], + [122.30877, 39.346399], + [122.366053, 39.370461], + [122.412864, 39.411625], + [122.455364, 39.408388], + [122.467682, 39.403301], + [122.51203, 39.413474], + [122.532972, 39.419947], + [122.581631, 39.464316], + [122.637066, 39.488799], + [122.649385, 39.516505], + [122.682645, 39.514658], + [122.808913, 39.559889], + [122.847101, 39.581571], + [122.860652, 39.604629], + [122.941956, 39.604629], + [122.972753, 39.594946], + [122.978912, 39.616156], + [123.021412, 39.64335], + [123.010941, 39.655331], + [123.103332, 39.676983], + [123.146448, 39.647037], + [123.166774, 39.674219], + [123.212969, 39.665928], + [123.215433, 39.696786], + [123.253005, 39.689879], + [123.286882, 39.704154], + [123.270251, 39.714743], + [123.274563, 39.753862], + [123.350939, 39.750641], + [123.388512, 39.74742], + [123.392823, 39.723949], + [123.477823, 39.74696], + [123.521555, 39.772724], + [123.534489, 39.788361] + ] + ], + [ + [ + [122.63953, 39.286209], + [122.593334, 39.278334], + [122.539131, 39.308439], + [122.50895, 39.290377], + [122.57732, 39.269994], + [122.67895, 39.268605], + [122.673406, 39.269531], + [122.662935, 39.273701], + [122.655544, 39.277407], + [122.640761, 39.288061], + [122.63953, 39.286209] + ] + ], + [ + [ + [122.318625, 39.170775], + [122.345111, 39.144788], + [122.366053, 39.174951], + [122.398697, 39.16196], + [122.383299, 39.190723], + [122.393154, 39.213448], + [122.343263, 39.203246], + [122.322321, 39.177271], + [122.322937, 39.174487], + [122.319241, 39.172167], + [122.318625, 39.170775] + ] + ], + [ + [ + [122.691884, 39.23292], + [122.696812, 39.206492], + [122.751631, 39.229675], + [122.740544, 39.248679], + [122.635834, 39.241727], + [122.628443, 39.231993], + [122.690037, 39.234774], + [122.691268, 39.23431], + [122.691884, 39.23292] + ] + ], + [ + [ + [122.738696, 39.034701], + [122.704819, 39.044463], + [122.733152, 39.014244], + [122.75779, 39.009594], + [122.739312, 39.036561], + [122.738696, 39.034701] + ] + ], + [ + [ + [123.022644, 39.546507], + [122.96105, 39.551122], + [122.945035, 39.520198], + [122.995542, 39.495264], + [123.036194, 39.533123], + [123.022644, 39.546507] + ] + ], + [ + [ + [122.503407, 39.241263], + [122.502175, 39.224112], + [122.547755, 39.229211], + [122.503407, 39.241263] + ] + ], + [ + [ + [120.786784, 40.473787], + [120.83298, 40.491995], + [120.8299, 40.516112], + [120.805262, 40.525666], + [120.774465, 40.48016], + [120.786784, 40.473787] + ] + ], + [ + [ + [123.086702, 39.426881], + [123.090397, 39.450915], + [123.054057, 39.457847], + [123.086702, 39.426881] + ] + ], + [ + [ + [123.160614, 39.025404], + [123.205578, 39.057011], + [123.20065, 39.077921], + [123.145832, 39.091857], + [123.143984, 39.038885], + [123.160614, 39.025404] + ] + ], + [ + [ + [123.716807, 39.74512], + [123.756843, 39.754322], + [123.719887, 39.763063], + [123.716807, 39.74512] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 220000, + "name": "吉林省", + "center": [125.3245, 43.886841], + "centroid": [126.171208, 43.703954], + "childrenNum": 9, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 6, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [129.601492, 42.415116], + [129.601492, 42.422627], + [129.591021, 42.447803], + [129.627361, 42.462816], + [129.651999, 42.426603], + [129.704354, 42.427045], + [129.748701, 42.471204], + [129.738846, 42.500332], + [129.749933, 42.546644], + [129.746237, 42.58455], + [129.786889, 42.615387], + [129.754245, 42.645768], + [129.796744, 42.681854], + [129.767179, 42.707806], + [129.78381, 42.762752], + [129.810911, 42.795257], + [129.816454, 42.851003], + [129.835549, 42.866796], + [129.846636, 42.918533], + [129.874969, 42.923792], + [129.856491, 42.951833], + [129.868193, 42.97373], + [129.903918, 42.968475], + [129.897143, 43.001748], + [129.954425, 43.010938], + [129.963664, 42.978547], + [130.002468, 42.981174], + [130.027106, 42.9676], + [130.072685, 42.971541], + [130.10841, 42.989929], + [130.144134, 42.976357], + [130.120729, 42.954461], + [130.127504, 42.932556], + [130.10225, 42.922916], + [130.136127, 42.90363], + [130.17062, 42.912397], + [130.21004, 42.902315], + [130.258083, 42.90626], + [130.277793, 42.892232], + [130.258083, 42.860655], + [130.245148, 42.799209], + [130.242069, 42.738582], + [130.257467, 42.710884], + [130.290112, 42.702968], + [130.333228, 42.64973], + [130.373264, 42.630799], + [130.388046, 42.603054], + [130.420691, 42.617148], + [130.44656, 42.607459], + [130.423771, 42.574855], + [130.435474, 42.553257], + [130.476125, 42.570007], + [130.459495, 42.588075], + [130.482285, 42.626837], + [130.522937, 42.622433], + [130.520473, 42.593362], + [130.558661, 42.495919], + [130.585763, 42.485328], + [130.581451, 42.435437], + [130.645509, 42.426603], + [130.600545, 42.450453], + [130.599929, 42.486211], + [130.565437, 42.506509], + [130.570364, 42.557224], + [130.622719, 42.573092], + [130.633806, 42.603494], + [130.592538, 42.671295], + [130.521089, 42.702089], + [130.464423, 42.688453], + [130.425003, 42.706926], + [130.40714, 42.731548], + [130.46627, 42.772417], + [130.532792, 42.787352], + [130.562357, 42.815015], + [130.603625, 42.819405], + [130.665835, 42.847932], + [130.708335, 42.846615], + [130.719422, 42.831695], + [130.75453, 42.845738], + [130.784095, 42.842227], + [130.801957, 42.879515], + [130.845073, 42.881269], + [130.890653, 42.852758], + [130.912826, 42.870744], + [130.949783, 42.876884], + [130.981812, 42.857145], + [131.043406, 42.862848], + [131.017536, 42.915027], + [131.034167, 42.929051], + [131.114855, 42.915027], + [131.145652, 42.9365], + [131.151195, 42.968475], + [131.115471, 42.975482], + [131.11855, 43.007875], + [131.102536, 43.021002], + [131.120398, 43.068238], + [131.171521, 43.06955], + [131.173985, 43.111506], + [131.207861, 43.1316], + [131.218948, 43.191405], + [131.201086, 43.203185], + [131.206014, 43.237202], + [131.255289, 43.265099], + [131.269455, 43.297775], + [131.275615, 43.369165], + [131.314419, 43.392653], + [131.295941, 43.441774], + [131.314419, 43.461325], + [131.31873, 43.499539], + [131.304564, 43.502144], + [131.294093, 43.470012], + [131.234963, 43.475224], + [131.201086, 43.442209], + [131.175217, 43.444816], + [131.142572, 43.425695], + [131.026775, 43.508655], + [130.959638, 43.48608], + [130.907283, 43.434387], + [130.864167, 43.437863], + [130.841378, 43.454374], + [130.822899, 43.503446], + [130.776704, 43.52341], + [130.727429, 43.560284], + [130.671378, 43.565054], + [130.665835, 43.583698], + [130.623335, 43.589767], + [130.630726, 43.622268], + [130.57098, 43.626167], + [130.57098, 43.626167], + [130.501995, 43.636563], + [130.488444, 43.65605], + [130.437937, 43.646091], + [130.412684, 43.652586], + [130.394206, 43.703227], + [130.423155, 43.745179], + [130.382503, 43.777164], + [130.381887, 43.817768], + [130.362793, 43.844967], + [130.386198, 43.85403], + [130.368336, 43.894151], + [130.381887, 43.910106], + [130.338155, 43.963975], + [130.364025, 43.992399], + [130.365256, 44.044042], + [130.319061, 44.03974], + [130.307358, 44.002731], + [130.27225, 43.981634], + [130.262395, 43.949328], + [130.208192, 43.948466], + [130.153373, 43.915711], + [130.143518, 43.878624], + [130.116417, 43.878192], + [130.110873, 43.852735], + [130.079461, 43.835039], + [130.027722, 43.851872], + [130.009243, 43.889407], + [130.022794, 43.917866], + [130.017867, 43.961821], + [129.979062, 44.015644], + [129.951345, 44.027263], + [129.907614, 44.023821], + [129.881128, 44.000148], + [129.868193, 44.012631], + [129.802904, 43.964837], + [129.780114, 43.892857], + [129.739462, 43.895876], + [129.743158, 43.876035], + [129.699426, 43.8838], + [129.650767, 43.873016], + [129.529427, 43.870427], + [129.467833, 43.874741], + [129.449971, 43.850578], + [129.417942, 43.843672], + [129.406855, 43.819496], + [129.348341, 43.798333], + [129.30892, 43.812155], + [129.289826, 43.797038], + [129.254718, 43.819496], + [129.211602, 43.784509], + [129.232544, 43.709284], + [129.214066, 43.695006], + [129.217146, 43.648689], + [129.232544, 43.635263], + [129.23008, 43.593234], + [129.169102, 43.561585], + [129.145081, 43.570258], + [129.093958, 43.547706], + [129.037907, 43.540332], + [129.013886, 43.522976], + [128.962763, 43.53903], + [128.949828, 43.553779], + [128.878379, 43.539898], + [128.834647, 43.587599], + [128.821097, 43.637429], + [128.78722, 43.686784], + [128.768126, 43.732207], + [128.729322, 43.736964], + [128.760119, 43.755554], + [128.739177, 43.806972], + [128.719467, 43.816905], + [128.760734, 43.857482], + [128.729938, 43.889838], + [128.696061, 43.903207], + [128.636315, 43.891132], + [128.64001, 43.948035], + [128.610445, 43.960529], + [128.584576, 43.990246], + [128.574721, 44.047914], + [128.529141, 44.112401], + [128.471859, 44.157501], + [128.450301, 44.203423], + [128.471859, 44.247596], + [128.453997, 44.257884], + [128.472475, 44.320001], + [128.446605, 44.339694], + [128.475555, 44.346114], + [128.481714, 44.375637], + [128.457076, 44.409848], + [128.463236, 44.431647], + [128.427511, 44.473512], + [128.397946, 44.483761], + [128.372693, 44.514495], + [128.295084, 44.480772], + [128.293237, 44.467961], + [128.228563, 44.445748], + [128.211317, 44.431647], + [128.172512, 44.34697], + [128.137404, 44.357668], + [128.094904, 44.354673], + [128.074578, 44.370075], + [128.049941, 44.349965], + [128.065339, 44.307155], + [128.101679, 44.293449], + [128.064107, 44.251454], + [128.104143, 44.230017], + [128.09244, 44.181539], + [128.060411, 44.168663], + [128.088129, 44.158359], + [128.091208, 44.133022], + [128.042549, 44.103807], + [127.950158, 44.088334], + [127.912586, 44.064687], + [127.862695, 44.062967], + [127.846065, 44.081886], + [127.808492, 44.086615], + [127.783239, 44.071997], + [127.729036, 44.09908], + [127.735811, 44.11412], + [127.712406, 44.199133], + [127.681609, 44.166946], + [127.641573, 44.193555], + [127.626174, 44.187977], + [127.59045, 44.227872], + [127.623711, 44.278025], + [127.579363, 44.310581], + [127.486356, 44.410275], + [127.50853, 44.437202], + [127.463566, 44.484615], + [127.465414, 44.516628], + [127.485124, 44.528576], + [127.536247, 44.522176], + [127.570124, 44.55033], + [127.557189, 44.575488], + [127.392733, 44.632158], + [127.275705, 44.640249], + [127.261538, 44.61299], + [127.214111, 44.624917], + [127.228893, 44.642804], + [127.182082, 44.644507], + [127.138966, 44.607451], + [127.094619, 44.615972], + [127.089691, 44.593816], + [127.049655, 44.566961], + [127.041648, 44.591258], + [127.044112, 44.653874], + [127.030561, 44.673454], + [127.041032, 44.712169], + [126.9973, 44.764882], + [126.984366, 44.823914], + [126.999764, 44.87398], + [127.021938, 44.898997], + [127.073061, 44.907051], + [127.092771, 44.94688], + [127.050271, 45.004034], + [127.018242, 45.024341], + [126.984981, 45.067893], + [126.970815, 45.070852], + [126.96404, 45.132104], + [126.85625, 45.145613], + [126.792808, 45.135481], + [126.787265, 45.159118], + [126.732446, 45.187385], + [126.685635, 45.187807], + [126.640055, 45.214373], + [126.644983, 45.225334], + [126.569222, 45.252725], + [126.540273, 45.23882], + [126.519331, 45.248091], + [126.402919, 45.222805], + [126.356107, 45.185698], + [126.293282, 45.180214], + [126.285274, 45.162494], + [126.235383, 45.140125], + [126.225528, 45.154054], + [126.166398, 45.13337], + [126.142992, 45.147723], + [126.091869, 45.149411], + [126.047522, 45.170933], + [125.998247, 45.162072], + [125.992703, 45.192447], + [125.957595, 45.201303], + [125.915095, 45.196664], + [125.849805, 45.23882], + [125.823936, 45.237978], + [125.815929, 45.264942], + [125.761726, 45.291472], + [125.726001, 45.336503], + [125.695205, 45.352066], + [125.712451, 45.389485], + [125.711835, 45.477677], + [125.687813, 45.514173], + [125.660096, 45.507043], + [125.61698, 45.517947], + [125.583104, 45.491942], + [125.497488, 45.469283], + [125.480242, 45.486488], + [125.424807, 45.485649], + [125.434662, 45.462988], + [125.398322, 45.416797], + [125.361981, 45.392847], + [125.319482, 45.422678], + [125.301619, 45.402092], + [125.248649, 45.417637], + [125.189518, 45.39915], + [125.137779, 45.409655], + [125.097127, 45.38276], + [125.06633, 45.39915], + [125.08912, 45.420998], + [125.0497, 45.428558], + [125.025678, 45.493201], + [124.961005, 45.495299], + [124.936983, 45.53388], + [124.911114, 45.535976], + [124.884628, 45.495299], + [124.886476, 45.442836], + [124.839665, 45.455852], + [124.792853, 45.436958], + [124.776223, 45.468024], + [124.729412, 45.444096], + [124.690607, 45.452493], + [124.625318, 45.437377], + [124.575427, 45.451234], + [124.579738, 45.424358], + [124.544014, 45.411756], + [124.507058, 45.424778], + [124.480572, 45.456271], + [124.398652, 45.440737], + [124.374015, 45.45795], + [124.352457, 45.496557], + [124.369087, 45.512915], + [124.348761, 45.546874], + [124.287783, 45.539329], + [124.264377, 45.555256], + [124.273001, 45.584163], + [124.238508, 45.591702], + [124.226805, 45.633564], + [124.162132, 45.616404], + [124.128255, 45.641933], + [124.147349, 45.665359], + [124.122096, 45.669123], + [124.13503, 45.690448], + [124.10177, 45.700898], + [124.098074, 45.722628], + [124.054342, 45.751449], + [124.014922, 45.749779], + [124.001987, 45.770655], + [124.064197, 45.802372], + [124.03648, 45.83824], + [124.067277, 45.840325], + [124.061118, 45.886168], + [123.996444, 45.906993], + [123.968727, 45.936551], + [123.973654, 45.973997], + [124.011842, 45.981899], + [123.989053, 46.011833], + [124.040176, 46.01973], + [124.034016, 46.045074], + [124.009995, 46.057534], + [124.015538, 46.088257], + [123.99398, 46.101123], + [124.01677, 46.118549], + [123.991516, 46.143019], + [124.001987, 46.166649], + [123.971806, 46.170379], + [123.956408, 46.206009], + [123.979814, 46.228784], + [123.952096, 46.256516], + [123.960103, 46.288369], + [123.936082, 46.286715], + [123.917604, 46.25693], + [123.896046, 46.303668], + [123.84985, 46.302428], + [123.775938, 46.263136], + [123.726047, 46.255688], + [123.673692, 46.258585], + [123.604706, 46.251964], + [123.569598, 46.223816], + [123.569598, 46.223816], + [123.499381, 46.259826], + [123.452569, 46.233338], + [123.430396, 46.243687], + [123.357099, 46.232096], + [123.357099, 46.232096], + [123.320758, 46.254447], + [123.286266, 46.250308], + [123.248078, 46.273065], + [123.178476, 46.248239], + [123.128585, 46.210565], + [123.127354, 46.174523], + [123.102716, 46.172037], + [123.112571, 46.130163], + [123.070071, 46.123527], + [123.04605, 46.099878], + [122.792898, 46.073313], + [122.828623, 45.912406], + [122.80029, 45.856583], + [122.772572, 45.856583], + [122.752246, 45.834905], + [122.792283, 45.766063], + [122.751015, 45.735996], + [122.741775, 45.705077], + [122.671558, 45.70048], + [122.650001, 45.731401], + [122.640761, 45.771072], + [122.603189, 45.778169], + [122.556378, 45.82156], + [122.522501, 45.786933], + [122.504639, 45.786933], + [122.496016, 45.85825], + [122.446125, 45.916986], + [122.362357, 45.917403], + [122.372828, 45.856166], + [122.337719, 45.859917], + [122.301379, 45.813218], + [122.253952, 45.7982], + [122.236705, 45.831569], + [122.200981, 45.857], + [122.091344, 45.882002], + [122.085184, 45.912406], + [122.040221, 45.959022], + [121.92812, 45.988552], + [121.923808, 46.004767], + [121.864062, 46.002272], + [121.843736, 46.024301], + [121.819098, 46.023054], + [121.761816, 45.998947], + [121.809243, 45.961102], + [121.821562, 45.918235], + [121.805548, 45.900746], + [121.817251, 45.875336], + [121.769823, 45.84366], + [121.766744, 45.830318], + [121.766744, 45.830318], + [121.754425, 45.794862], + [121.697142, 45.76314], + [121.657106, 45.770238], + [121.644172, 45.752284], + [121.666345, 45.727641], + [121.713773, 45.701734], + [121.811091, 45.687103], + [121.812323, 45.704659], + [121.867142, 45.719703], + [121.934279, 45.71051], + [121.970004, 45.692956], + [122.003264, 45.623102], + [121.995873, 45.59882], + [121.966308, 45.596308], + [121.993409, 45.552741], + [122.002648, 45.507882], + [122.064242, 45.472641], + [122.168336, 45.439897], + [122.180039, 45.409655], + [122.146778, 45.374352], + [122.147394, 45.295682], + [122.239169, 45.276313], + [122.22993, 45.206784], + [122.192358, 45.180636], + [122.143082, 45.183167], + [122.109822, 45.142236], + [122.119677, 45.068739], + [122.098735, 45.02138], + [122.074713, 45.006573], + [122.087032, 44.95281], + [122.079025, 44.914256], + [122.04946, 44.912985], + [122.098119, 44.81882], + [122.099967, 44.7823], + [122.168952, 44.770405], + [122.142467, 44.753833], + [122.110438, 44.767856], + [122.10243, 44.736406], + [122.152322, 44.744057], + [122.161561, 44.728328], + [122.117213, 44.701961], + [122.103046, 44.67388], + [122.113517, 44.615546], + [122.13138, 44.577619], + [122.196053, 44.559712], + [122.224386, 44.526016], + [122.228082, 44.480345], + [122.28598, 44.477783], + [122.294604, 44.41113], + [122.291524, 44.310152], + [122.271198, 44.255741], + [122.319241, 44.233018], + [122.483081, 44.236877], + [122.515726, 44.251025], + [122.641993, 44.283595], + [122.675254, 44.285738], + [122.702971, 44.319145], + [122.76087, 44.369648], + [122.85634, 44.398304], + [123.025108, 44.493153], + [123.06576, 44.505959], + [123.12489, 44.5098], + [123.137209, 44.486322], + [123.125506, 44.455147], + [123.142136, 44.428228], + [123.114419, 44.40258], + [123.128585, 44.367081], + [123.196955, 44.34483], + [123.277027, 44.25274], + [123.286882, 44.211574], + [123.323838, 44.179823], + [123.386664, 44.161794], + [123.362642, 44.133452], + [123.350939, 44.092633], + [123.32815, 44.084035], + [123.331229, 44.028984], + [123.365722, 44.013922], + [123.400831, 43.979481], + [123.37065, 43.970006], + [123.397135, 43.954929], + [123.467968, 43.853599], + [123.461809, 43.822518], + [123.498149, 43.771114], + [123.48275, 43.737396], + [123.520323, 43.708419], + [123.518475, 43.682024], + [123.536953, 43.633964], + [123.510468, 43.624867], + [123.5117, 43.592801], + [123.421157, 43.598435], + [123.434091, 43.575461], + [123.461193, 43.568523], + [123.452569, 43.545971], + [123.452569, 43.545971], + [123.360179, 43.567223], + [123.304744, 43.550742], + [123.329998, 43.519071], + [123.315831, 43.492159], + [123.36449, 43.483475], + [123.382968, 43.469143], + [123.419925, 43.410046], + [123.442098, 43.437863], + [123.486446, 43.44525], + [123.519707, 43.402219], + [123.54496, 43.415262], + [123.608402, 43.366119], + [123.703873, 43.37047], + [123.710032, 43.417001], + [123.749452, 43.439167], + [123.747604, 43.472184], + [123.79688, 43.489988], + [123.857858, 43.459153], + [123.857858, 43.459153], + [123.852314, 43.406133], + [123.881263, 43.392218], + [123.881263, 43.392218], + [123.896046, 43.361333], + [123.964415, 43.34088], + [124.032784, 43.280786], + [124.099306, 43.292983], + [124.117168, 43.2773], + [124.114088, 43.247229], + [124.168291, 43.244177], + [124.215102, 43.255947], + [124.228653, 43.235022], + [124.27608, 43.233278], + [124.287167, 43.207983], + [124.273617, 43.17875], + [124.366007, 43.121554], + [124.425754, 43.076107], + [124.333363, 42.997371], + [124.369703, 42.972854], + [124.42329, 42.975482], + [124.442384, 42.958841], + [124.431913, 42.930803], + [124.38079, 42.912835], + [124.371551, 42.880831], + [124.435609, 42.880831], + [124.466406, 42.847054], + [124.586514, 42.905384], + [124.607456, 42.937376], + [124.632093, 42.949642], + [124.635173, 42.972854], + [124.658579, 42.972854], + [124.677673, 43.002185], + [124.686912, 43.051185], + [124.719557, 43.069987], + [124.755281, 43.074359], + [124.785462, 43.117185], + [124.882781, 43.13422], + [124.88894, 43.074796], + [124.840897, 43.032377], + [124.869846, 42.988178], + [124.87231, 42.962344], + [124.84952, 42.882585], + [124.856911, 42.824234], + [124.874157, 42.789987], + [124.897563, 42.787791], + [124.92836, 42.819844], + [124.975171, 42.802722], + [124.996729, 42.745174], + [124.968396, 42.722756], + [124.99057, 42.677455], + [125.014592, 42.666014], + [125.010896, 42.63212], + [125.038613, 42.615387], + [125.097127, 42.622433], + [125.082961, 42.591159], + [125.089736, 42.567803], + [125.066946, 42.534738], + [125.090968, 42.515773], + [125.068794, 42.499449], + [125.105135, 42.490624], + [125.150098, 42.458842], + [125.140243, 42.44692], + [125.186439, 42.427928], + [125.185823, 42.38197], + [125.203685, 42.366938], + [125.167345, 42.351903], + [125.175352, 42.308102], + [125.224011, 42.30102], + [125.264047, 42.312528], + [125.299156, 42.289953], + [125.27575, 42.266928], + [125.27575, 42.231045], + [125.312706, 42.219966], + [125.280677, 42.175187], + [125.312706, 42.197359], + [125.305931, 42.146351], + [125.357054, 42.145464], + [125.368141, 42.182726], + [125.41372, 42.156112], + [125.458068, 42.160105], + [125.458068, 42.160105], + [125.490097, 42.136145], + [125.446365, 42.098411], + [125.414336, 42.101964], + [125.416184, 42.063766], + [125.363213, 42.017097], + [125.369989, 42.002868], + [125.29854, 41.974399], + [125.291764, 41.958825], + [125.35151, 41.92811], + [125.307779, 41.924548], + [125.294844, 41.822945], + [125.319482, 41.776993], + [125.319482, 41.776993], + [125.323177, 41.771191], + [125.323177, 41.771191], + [125.336112, 41.768067], + [125.336112, 41.768067], + [125.332416, 41.711354], + [125.317018, 41.676944], + [125.344119, 41.672474], + [125.412488, 41.691246], + [125.446981, 41.67605], + [125.461148, 41.642516], + [125.450061, 41.597777], + [125.479626, 41.544946], + [125.507343, 41.534195], + [125.493176, 41.509103], + [125.533212, 41.479069], + [125.534444, 41.428833], + [125.547995, 41.401006], + [125.581256, 41.396517], + [125.589879, 41.359245], + [125.610205, 41.365084], + [125.637306, 41.34442], + [125.62006, 41.318355], + [125.642234, 41.296327], + [125.646545, 41.264396], + [125.685349, 41.273842], + [125.695205, 41.244599], + [125.749407, 41.245499], + [125.758646, 41.232449], + [125.73832, 41.178418], + [125.791291, 41.167607], + [125.759878, 41.132908], + [125.734009, 41.125695], + [125.712451, 41.095485], + [125.739552, 41.08917], + [125.726617, 41.055332], + [125.684118, 41.021929], + [125.674879, 40.974503], + [125.650241, 40.970888], + [125.635458, 40.94151], + [125.589263, 40.931112], + [125.584335, 40.891764], + [125.652089, 40.91619], + [125.687813, 40.897645], + [125.707523, 40.866877], + [125.778356, 40.897645], + [125.817161, 40.866877], + [125.860892, 40.888597], + [125.875059, 40.908501], + [125.921254, 40.882715], + [125.959442, 40.88181], + [126.008102, 40.936537], + [126.041362, 40.928851], + [126.051833, 40.96185], + [126.08263, 40.976762], + [126.066, 40.997542], + [126.1085, 41.011995], + [126.099877, 41.036376], + [126.133753, 41.063906], + [126.124514, 41.092327], + [126.16763, 41.094583], + [126.187956, 41.113072], + [126.188572, 41.114875], + [126.295129, 41.171661], + [126.332086, 41.236949], + [126.35426, 41.244599], + [126.373354, 41.289133], + [126.437411, 41.353405], + [126.497158, 41.374965], + [126.524259, 41.349362], + [126.539041, 41.366881], + [126.497158, 41.406842], + [126.559983, 41.548081], + [126.582773, 41.563307], + [126.564295, 41.608965], + [126.592628, 41.624624], + [126.608027, 41.669345], + [126.644983, 41.661297], + [126.688099, 41.674262], + [126.724439, 41.710907], + [126.690562, 41.728328], + [126.694874, 41.751103], + [126.723207, 41.753335], + [126.8002, 41.702865], + [126.809439, 41.749317], + [126.848243, 41.734134], + [126.85625, 41.760031], + [126.887047, 41.791719], + [126.931395, 41.812687], + [126.952953, 41.804212], + [126.940018, 41.773423], + [126.979438, 41.776993], + [127.005923, 41.749317], + [127.050887, 41.744852], + [127.057662, 41.703758], + [127.037952, 41.676944], + [127.103242, 41.647883], + [127.093387, 41.629993], + [127.127263, 41.622388], + [127.135887, 41.600463], + [127.178386, 41.600015], + [127.125416, 41.566442], + [127.11864, 41.540018], + [127.164836, 41.542706], + [127.188241, 41.527475], + [127.241212, 41.520754], + [127.28864, 41.501932], + [127.253531, 41.486691], + [127.296031, 41.486243], + [127.360704, 41.466065], + [127.360088, 41.479518], + [127.405668, 41.478621], + [127.419835, 41.460235], + [127.459255, 41.461581], + [127.465414, 41.479069], + [127.526392, 41.467859], + [127.547334, 41.477276], + [127.563964, 41.432871], + [127.618783, 41.432871], + [127.636645, 41.413575], + [127.684073, 41.422999], + [127.780159, 41.427038], + [127.854688, 41.420755], + [127.86947, 41.4037], + [127.882405, 41.448124], + [127.909506, 41.42973], + [127.93168, 41.444984], + [127.970484, 41.438704], + [127.991426, 41.421204], + [128.000049, 41.442741], + [128.040085, 41.393375], + [128.110919, 41.393375], + [128.090593, 41.374516], + [128.114614, 41.364186], + [128.169433, 41.404149], + [128.203925, 41.410882], + [128.243345, 41.477276], + [128.238418, 41.497898], + [128.301244, 41.540018], + [128.317874, 41.575844], + [128.30186, 41.627756], + [128.248889, 41.681414], + [128.208853, 41.688565], + [128.163889, 41.721628], + [128.147875, 41.78101], + [128.112766, 41.793504], + [128.104143, 41.843457], + [128.115846, 41.896935], + [128.106607, 41.949923], + [128.033926, 42.000199], + [128.090593, 42.022877], + [128.294468, 42.026434], + [128.405338, 42.018876], + [128.466316, 42.020654], + [128.49896, 42.000644], + [128.598127, 42.007315], + [128.60675, 42.02999], + [128.637547, 42.035324], + [128.658489, 42.018876], + [128.70222, 42.02021], + [128.737945, 42.050435], + [128.779213, 42.033546], + [128.795227, 42.042436], + [128.898089, 42.016653], + [128.952908, 42.025545], + [128.954755, 42.083756], + [128.971386, 42.097079], + [129.008958, 42.09175], + [129.039139, 42.107736], + [129.048378, 42.137476], + [129.113668, 42.140583], + [129.166639, 42.188047], + [129.215914, 42.208442], + [129.209138, 42.237692], + [129.181421, 42.242122], + [129.183269, 42.262056], + [129.215914, 42.265157], + [129.231312, 42.283755], + [129.208522, 42.293052], + [129.260261, 42.335536], + [129.231312, 42.356325], + [129.240551, 42.376223], + [129.326167, 42.389927], + [129.30892, 42.403628], + [129.331094, 42.429695], + [129.356348, 42.427045], + [129.342181, 42.441179], + [129.368051, 42.459284], + [129.366203, 42.428811], + [129.392688, 42.42837], + [129.400695, 42.449128], + [129.452434, 42.441179], + [129.49863, 42.412023], + [129.546057, 42.361632], + [129.578086, 42.380202], + [129.569463, 42.399208], + [129.601492, 42.415116] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 230000, + "name": "黑龙江省", + "center": [126.642464, 45.756967], + "centroid": [127.693027, 48.040465], + "childrenNum": 13, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 7, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [123.569598, 46.223816], + [123.604706, 46.251964], + [123.673692, 46.258585], + [123.726047, 46.255688], + [123.775938, 46.263136], + [123.84985, 46.302428], + [123.896046, 46.303668], + [123.917604, 46.25693], + [123.936082, 46.286715], + [123.960103, 46.288369], + [123.952096, 46.256516], + [123.979814, 46.228784], + [123.956408, 46.206009], + [123.971806, 46.170379], + [124.001987, 46.166649], + [123.991516, 46.143019], + [124.01677, 46.118549], + [123.99398, 46.101123], + [124.015538, 46.088257], + [124.009995, 46.057534], + [124.034016, 46.045074], + [124.040176, 46.01973], + [123.989053, 46.011833], + [124.011842, 45.981899], + [123.973654, 45.973997], + [123.968727, 45.936551], + [123.996444, 45.906993], + [124.061118, 45.886168], + [124.067277, 45.840325], + [124.03648, 45.83824], + [124.064197, 45.802372], + [124.001987, 45.770655], + [124.014922, 45.749779], + [124.054342, 45.751449], + [124.098074, 45.722628], + [124.10177, 45.700898], + [124.13503, 45.690448], + [124.122096, 45.669123], + [124.147349, 45.665359], + [124.128255, 45.641933], + [124.162132, 45.616404], + [124.226805, 45.633564], + [124.238508, 45.591702], + [124.273001, 45.584163], + [124.264377, 45.555256], + [124.287783, 45.539329], + [124.348761, 45.546874], + [124.369087, 45.512915], + [124.352457, 45.496557], + [124.374015, 45.45795], + [124.398652, 45.440737], + [124.480572, 45.456271], + [124.507058, 45.424778], + [124.544014, 45.411756], + [124.579738, 45.424358], + [124.575427, 45.451234], + [124.625318, 45.437377], + [124.690607, 45.452493], + [124.729412, 45.444096], + [124.776223, 45.468024], + [124.792853, 45.436958], + [124.839665, 45.455852], + [124.886476, 45.442836], + [124.884628, 45.495299], + [124.911114, 45.535976], + [124.936983, 45.53388], + [124.961005, 45.495299], + [125.025678, 45.493201], + [125.0497, 45.428558], + [125.08912, 45.420998], + [125.06633, 45.39915], + [125.097127, 45.38276], + [125.137779, 45.409655], + [125.189518, 45.39915], + [125.248649, 45.417637], + [125.301619, 45.402092], + [125.319482, 45.422678], + [125.361981, 45.392847], + [125.398322, 45.416797], + [125.434662, 45.462988], + [125.424807, 45.485649], + [125.480242, 45.486488], + [125.497488, 45.469283], + [125.583104, 45.491942], + [125.61698, 45.517947], + [125.660096, 45.507043], + [125.687813, 45.514173], + [125.711835, 45.477677], + [125.712451, 45.389485], + [125.695205, 45.352066], + [125.726001, 45.336503], + [125.761726, 45.291472], + [125.815929, 45.264942], + [125.823936, 45.237978], + [125.849805, 45.23882], + [125.915095, 45.196664], + [125.957595, 45.201303], + [125.992703, 45.192447], + [125.998247, 45.162072], + [126.047522, 45.170933], + [126.091869, 45.149411], + [126.142992, 45.147723], + [126.166398, 45.13337], + [126.225528, 45.154054], + [126.235383, 45.140125], + [126.285274, 45.162494], + [126.293282, 45.180214], + [126.356107, 45.185698], + [126.402919, 45.222805], + [126.519331, 45.248091], + [126.540273, 45.23882], + [126.569222, 45.252725], + [126.644983, 45.225334], + [126.640055, 45.214373], + [126.685635, 45.187807], + [126.732446, 45.187385], + [126.787265, 45.159118], + [126.792808, 45.135481], + [126.85625, 45.145613], + [126.96404, 45.132104], + [126.970815, 45.070852], + [126.984981, 45.067893], + [127.018242, 45.024341], + [127.050271, 45.004034], + [127.092771, 44.94688], + [127.073061, 44.907051], + [127.021938, 44.898997], + [126.999764, 44.87398], + [126.984366, 44.823914], + [126.9973, 44.764882], + [127.041032, 44.712169], + [127.030561, 44.673454], + [127.044112, 44.653874], + [127.041648, 44.591258], + [127.049655, 44.566961], + [127.089691, 44.593816], + [127.094619, 44.615972], + [127.138966, 44.607451], + [127.182082, 44.644507], + [127.228893, 44.642804], + [127.214111, 44.624917], + [127.261538, 44.61299], + [127.275705, 44.640249], + [127.392733, 44.632158], + [127.557189, 44.575488], + [127.570124, 44.55033], + [127.536247, 44.522176], + [127.485124, 44.528576], + [127.465414, 44.516628], + [127.463566, 44.484615], + [127.50853, 44.437202], + [127.486356, 44.410275], + [127.579363, 44.310581], + [127.623711, 44.278025], + [127.59045, 44.227872], + [127.626174, 44.187977], + [127.641573, 44.193555], + [127.681609, 44.166946], + [127.712406, 44.199133], + [127.735811, 44.11412], + [127.729036, 44.09908], + [127.783239, 44.071997], + [127.808492, 44.086615], + [127.846065, 44.081886], + [127.862695, 44.062967], + [127.912586, 44.064687], + [127.950158, 44.088334], + [128.042549, 44.103807], + [128.091208, 44.133022], + [128.088129, 44.158359], + [128.060411, 44.168663], + [128.09244, 44.181539], + [128.104143, 44.230017], + [128.064107, 44.251454], + [128.101679, 44.293449], + [128.065339, 44.307155], + [128.049941, 44.349965], + [128.074578, 44.370075], + [128.094904, 44.354673], + [128.137404, 44.357668], + [128.172512, 44.34697], + [128.211317, 44.431647], + [128.228563, 44.445748], + [128.293237, 44.467961], + [128.295084, 44.480772], + [128.372693, 44.514495], + [128.397946, 44.483761], + [128.427511, 44.473512], + [128.463236, 44.431647], + [128.457076, 44.409848], + [128.481714, 44.375637], + [128.475555, 44.346114], + [128.446605, 44.339694], + [128.472475, 44.320001], + [128.453997, 44.257884], + [128.471859, 44.247596], + [128.450301, 44.203423], + [128.471859, 44.157501], + [128.529141, 44.112401], + [128.574721, 44.047914], + [128.584576, 43.990246], + [128.610445, 43.960529], + [128.64001, 43.948035], + [128.636315, 43.891132], + [128.696061, 43.903207], + [128.729938, 43.889838], + [128.760734, 43.857482], + [128.719467, 43.816905], + [128.739177, 43.806972], + [128.760119, 43.755554], + [128.729322, 43.736964], + [128.768126, 43.732207], + [128.78722, 43.686784], + [128.821097, 43.637429], + [128.834647, 43.587599], + [128.878379, 43.539898], + [128.949828, 43.553779], + [128.962763, 43.53903], + [129.013886, 43.522976], + [129.037907, 43.540332], + [129.093958, 43.547706], + [129.145081, 43.570258], + [129.169102, 43.561585], + [129.23008, 43.593234], + [129.232544, 43.635263], + [129.217146, 43.648689], + [129.214066, 43.695006], + [129.232544, 43.709284], + [129.211602, 43.784509], + [129.254718, 43.819496], + [129.289826, 43.797038], + [129.30892, 43.812155], + [129.348341, 43.798333], + [129.406855, 43.819496], + [129.417942, 43.843672], + [129.449971, 43.850578], + [129.467833, 43.874741], + [129.529427, 43.870427], + [129.650767, 43.873016], + [129.699426, 43.8838], + [129.743158, 43.876035], + [129.739462, 43.895876], + [129.780114, 43.892857], + [129.802904, 43.964837], + [129.868193, 44.012631], + [129.881128, 44.000148], + [129.907614, 44.023821], + [129.951345, 44.027263], + [129.979062, 44.015644], + [130.017867, 43.961821], + [130.022794, 43.917866], + [130.009243, 43.889407], + [130.027722, 43.851872], + [130.079461, 43.835039], + [130.110873, 43.852735], + [130.116417, 43.878192], + [130.143518, 43.878624], + [130.153373, 43.915711], + [130.208192, 43.948466], + [130.262395, 43.949328], + [130.27225, 43.981634], + [130.307358, 44.002731], + [130.319061, 44.03974], + [130.365256, 44.044042], + [130.364025, 43.992399], + [130.338155, 43.963975], + [130.381887, 43.910106], + [130.368336, 43.894151], + [130.386198, 43.85403], + [130.362793, 43.844967], + [130.381887, 43.817768], + [130.382503, 43.777164], + [130.423155, 43.745179], + [130.394206, 43.703227], + [130.412684, 43.652586], + [130.437937, 43.646091], + [130.488444, 43.65605], + [130.501995, 43.636563], + [130.57098, 43.626167], + [130.57098, 43.626167], + [130.630726, 43.622268], + [130.623335, 43.589767], + [130.665835, 43.583698], + [130.671378, 43.565054], + [130.727429, 43.560284], + [130.776704, 43.52341], + [130.822899, 43.503446], + [130.841378, 43.454374], + [130.864167, 43.437863], + [130.907283, 43.434387], + [130.959638, 43.48608], + [131.026775, 43.508655], + [131.142572, 43.425695], + [131.175217, 43.444816], + [131.201086, 43.442209], + [131.234963, 43.475224], + [131.294093, 43.470012], + [131.304564, 43.502144], + [131.276847, 43.495632], + [131.20047, 43.532089], + [131.222028, 43.593234], + [131.216485, 43.613169], + [131.239274, 43.670337], + [131.221412, 43.682024], + [131.215869, 43.72745], + [131.232499, 43.742585], + [131.213405, 43.801357], + [131.2171, 43.836334], + [131.254057, 43.893289], + [131.26268, 43.948897], + [131.245434, 43.95579], + [131.26576, 44.034578], + [131.28239, 44.035868], + [131.287318, 44.03802], + [131.293477, 44.043182], + [131.310723, 44.046623], + [131.111775, 44.710042], + [131.090833, 44.717272], + [131.093297, 44.746183], + [131.069275, 44.759783], + [131.064348, 44.786973], + [131.016304, 44.789521], + [131.015688, 44.814999], + [130.972573, 44.820094], + [130.965181, 44.85065], + [131.07913, 44.881614], + [131.10192, 44.898997], + [131.090217, 44.924427], + [131.16105, 44.948151], + [131.20355, 44.932901], + [131.207861, 44.913833], + [131.263296, 44.929935], + [131.274999, 44.919766], + [131.313803, 44.950692], + [131.313803, 44.965938], + [131.355071, 44.990068], + [131.380324, 44.978216], + [131.409889, 44.985836], + [131.464708, 44.963397], + [131.501664, 44.977793], + [131.484418, 44.99557], + [131.529382, 45.012073], + [131.566338, 45.045487], + [131.63286, 45.075078], + [131.695685, 45.132104], + [131.687678, 45.1511], + [131.650722, 45.159962], + [131.681519, 45.215217], + [131.721555, 45.234606], + [131.759127, 45.213952], + [131.79362, 45.211844], + [131.788692, 45.245984], + [131.825649, 45.291472], + [131.82996, 45.311677], + [131.887858, 45.342393], + [131.917423, 45.339448], + [131.93159, 45.287683], + [131.976554, 45.277156], + [132.003655, 45.25441], + [132.17427, 45.216903], + [132.394161, 45.16376], + [132.76434, 45.081417], + [132.867202, 45.061976], + [132.916477, 45.031109], + [132.954049, 45.023072], + [132.98731, 45.043373], + [133.035969, 45.054366], + [133.070462, 45.097051], + [133.089556, 45.097473], + [133.107418, 45.124504], + [133.139447, 45.127459], + [133.129592, 45.211422], + [133.095715, 45.246827], + [133.110498, 45.266627], + [133.097563, 45.284735], + [133.128976, 45.336924], + [133.119121, 45.352908], + [133.144991, 45.367205], + [133.143759, 45.430658], + [133.164701, 45.437377], + [133.170244, 45.465506], + [133.203505, 45.516689], + [133.246005, 45.517528], + [133.333468, 45.562379], + [133.342707, 45.554836], + [133.393214, 45.580393], + [133.423395, 45.584163], + [133.412924, 45.618079], + [133.471438, 45.631053], + [133.448649, 45.647372], + [133.485605, 45.658667], + [133.484989, 45.691702], + [133.445569, 45.705077], + [133.454192, 45.731819], + [133.486837, 45.740173], + [133.469591, 45.777751], + [133.505315, 45.785681], + [133.469591, 45.799451], + [133.467743, 45.834905], + [133.494228, 45.840325], + [133.491764, 45.867002], + [133.51209, 45.887001], + [133.55459, 45.893249], + [133.583539, 45.868669], + [133.618032, 45.903662], + [133.614952, 45.942794], + [133.676546, 45.94321], + [133.681474, 45.986473], + [133.740604, 46.048812], + [133.745531, 46.075389], + [133.690713, 46.133896], + [133.706111, 46.163333], + [133.764626, 46.17328], + [133.794807, 46.193583], + [133.814517, 46.230854], + [133.849625, 46.203939], + [133.87919, 46.233752], + [133.867487, 46.250722], + [133.909987, 46.254447], + [133.91861, 46.280924], + [133.908139, 46.308216], + [133.922922, 46.330948], + [133.869335, 46.338386], + [133.876726, 46.362345], + [133.940784, 46.38134], + [133.948791, 46.401153], + [133.902596, 46.446119], + [133.852089, 46.450242], + [133.849625, 46.475389], + [133.890893, 46.525235], + [133.919842, 46.596012], + [134.011001, 46.637941], + [134.030711, 46.708981], + [134.033175, 46.759023], + [134.052885, 46.779928], + [134.025168, 46.810657], + [134.041182, 46.848326], + [134.042414, 46.886787], + [134.076291, 46.938298], + [134.063972, 46.979962], + [134.10216, 47.005678], + [134.118175, 47.061968], + [134.142812, 47.093349], + [134.222268, 47.105164], + [134.232739, 47.134892], + [134.230276, 47.182097], + [134.210566, 47.210155], + [134.156979, 47.248357], + [134.177305, 47.326299], + [134.203174, 47.347389], + [134.263536, 47.371307], + [134.266616, 47.391974], + [134.307268, 47.428829], + [134.339297, 47.439759], + [134.490202, 47.446235], + [134.522847, 47.468086], + [134.568426, 47.478199], + [134.576434, 47.519036], + [134.627556, 47.546512], + [134.678064, 47.588507], + [134.689766, 47.63813], + [134.779694, 47.7159], + [134.772918, 47.763391], + [134.678679, 47.819278], + [134.670056, 47.864667], + [134.677448, 47.884738], + [134.658969, 47.901191], + [134.607846, 47.909214], + [134.599839, 47.947711], + [134.55426, 47.982173], + [134.551796, 48.032622], + [134.632484, 48.099412], + [134.67252, 48.170505], + [134.679295, 48.256245], + [134.77107, 48.288908], + [134.864077, 48.332293], + [135.009439, 48.365703], + [135.090743, 48.403461], + [135.09567, 48.437618], + [135.068569, 48.459451], + [135.035924, 48.440795], + [134.996504, 48.439603], + [134.927519, 48.451513], + [134.886867, 48.437618], + [134.848679, 48.393925], + [134.820961, 48.37604], + [134.764295, 48.370076], + [134.704549, 48.405448], + [134.640491, 48.409818], + [134.578281, 48.405448], + [134.501905, 48.418954], + [134.438463, 48.405448], + [134.369478, 48.382797], + [134.20379, 48.3824], + [134.150819, 48.346217], + [134.116327, 48.333089], + [134.0689, 48.338659], + [134.029479, 48.327519], + [133.995603, 48.303639], + [133.940784, 48.302047], + [133.876111, 48.282536], + [133.824372, 48.277359], + [133.791111, 48.261026], + [133.740604, 48.254651], + [133.693177, 48.186866], + [133.667307, 48.183275], + [133.59709, 48.194846], + [133.573068, 48.182078], + [133.545967, 48.121389], + [133.451728, 48.112999], + [133.407997, 48.124585], + [133.302055, 48.103009], + [133.239845, 48.126583], + [133.182563, 48.135769], + [133.130208, 48.134971], + [133.053216, 48.110202], + [133.02673, 48.085421], + [133.016259, 48.054228], + [132.992238, 48.035424], + [132.883216, 48.002599], + [132.819159, 47.936887], + [132.769268, 47.93849], + [132.723072, 47.962941], + [132.691043, 47.962941], + [132.661478, 47.944905], + [132.662094, 47.922451], + [132.687348, 47.88514], + [132.662094, 47.854227], + [132.621442, 47.82852], + [132.599268, 47.792347], + [132.6005, 47.740858], + [132.558, 47.718316], + [132.469305, 47.726368], + [132.371987, 47.765402], + [132.325175, 47.762184], + [132.288835, 47.742065], + [132.272205, 47.718718], + [132.242639, 47.70986], + [132.19706, 47.714289], + [132.157024, 47.70543], + [132.086191, 47.703013], + [132.000575, 47.712276], + [131.976554, 47.673201], + [131.900793, 47.685692], + [131.825649, 47.677231], + [131.741881, 47.706638], + [131.690142, 47.707041], + [131.641483, 47.663932], + [131.59036, 47.660707], + [131.568186, 47.682469], + [131.559563, 47.724757], + [131.543548, 47.736028], + [131.456085, 47.747297], + [131.359998, 47.730796], + [131.273767, 47.738846], + [131.236811, 47.733211], + [131.183224, 47.702611], + [131.115471, 47.689721], + [131.029855, 47.694555], + [130.983659, 47.713081], + [130.966413, 47.733211], + [130.961486, 47.828118], + [130.891269, 47.927263], + [130.870943, 47.943301], + [130.770544, 47.998194], + [130.737284, 48.034223], + [130.699711, 48.044227], + [130.666451, 48.105007], + [130.673842, 48.12818], + [130.765617, 48.18926], + [130.769313, 48.231136], + [130.787791, 48.256643], + [130.817972, 48.265409], + [130.845073, 48.296473], + [130.81982, 48.341444], + [130.785327, 48.357353], + [130.747755, 48.404256], + [130.745907, 48.449131], + [130.776704, 48.480084], + [130.767465, 48.507846], + [130.711414, 48.511414], + [130.647357, 48.484844], + [130.620871, 48.49595], + [130.615944, 48.575601], + [130.605473, 48.594207], + [130.538335, 48.612016], + [130.538951, 48.635751], + [130.576524, 48.688719], + [130.622103, 48.783842], + [130.689856, 48.849651], + [130.680617, 48.881146], + [130.609168, 48.881146], + [130.559277, 48.861071], + [130.501995, 48.865795], + [130.471198, 48.905541], + [130.412068, 48.905148], + [130.279641, 48.866976], + [130.237757, 48.868551], + [130.219895, 48.893739], + [130.113337, 48.956653], + [130.059135, 48.979047], + [130.020946, 49.021058], + [129.937179, 49.040285], + [129.9187, 49.060681], + [129.934715, 49.078717], + [129.913157, 49.1085], + [129.866962, 49.113985], + [129.855259, 49.133567], + [129.864498, 49.158621], + [129.847867, 49.181316], + [129.784426, 49.184054], + [129.753629, 49.208692], + [129.761636, 49.25754], + [129.730223, 49.288387], + [129.696962, 49.298535], + [129.604571, 49.279018], + [129.562687, 49.299706], + [129.546057, 49.395227], + [129.51834, 49.423652], + [129.448739, 49.441167], + [129.390224, 49.432605], + [129.374826, 49.414309], + [129.379138, 49.367175], + [129.358196, 49.355871], + [129.320623, 49.3586], + [129.266421, 49.396006], + [129.215298, 49.399122], + [129.180805, 49.386657], + [129.143849, 49.357431], + [129.084719, 49.359769], + [129.061929, 49.374189], + [129.013886, 49.457119], + [128.932582, 49.46801], + [128.871604, 49.492506], + [128.792147, 49.473065], + [128.76135, 49.482009], + [128.763198, 49.515824], + [128.813089, 49.558157], + [128.802618, 49.58222], + [128.744104, 49.595023], + [128.715155, 49.564756], + [128.656025, 49.577564], + [128.619684, 49.593471], + [128.537764, 49.604332], + [128.500192, 49.593859], + [128.389939, 49.58998], + [128.343128, 49.544956], + [128.287077, 49.566309], + [128.243345, 49.563203], + [128.185447, 49.53952], + [128.122005, 49.55311], + [128.070882, 49.556604], + [128.001281, 49.592307], + [127.949542, 49.596187], + [127.897804, 49.579116], + [127.815268, 49.593859], + [127.782007, 49.630698], + [127.705015, 49.665185], + [127.677913, 49.697712], + [127.674833, 49.764247], + [127.653892, 49.780094], + [127.583059, 49.786277], + [127.531936, 49.826059], + [127.529472, 49.864265], + [127.547334, 49.928645], + [127.543638, 49.944438], + [127.495595, 49.994479], + [127.501755, 50.056764], + [127.58737, 50.137768], + [127.60708, 50.178794], + [127.603385, 50.239309], + [127.44632, 50.270686], + [127.371791, 50.29669], + [127.332371, 50.340634], + [127.369944, 50.403996], + [127.3644, 50.438314], + [127.30527, 50.45432], + [127.293567, 50.46575], + [127.323132, 50.52552], + [127.36132, 50.547582], + [127.370559, 50.581415], + [127.294799, 50.663426], + [127.28864, 50.699451], + [127.305886, 50.733932], + [127.295415, 50.755139], + [127.236285, 50.781256], + [127.143894, 50.910111], + [127.113713, 50.93765], + [127.052119, 50.962911], + [126.985597, 51.029202], + [126.922772, 51.061937], + [126.917844, 51.138977], + [126.899982, 51.200518], + [126.926467, 51.246244], + [126.976358, 51.291551], + [126.98375, 51.318863], + [126.970815, 51.332327], + [126.887047, 51.321856], + [126.877808, 51.300906], + [126.908605, 51.283691], + [126.92154, 51.259729], + [126.908605, 51.246619], + [126.863025, 51.248492], + [126.820526, 51.281071], + [126.813134, 51.311756], + [126.837156, 51.345038], + [126.904293, 51.340552], + [126.930163, 51.359241], + [126.908605, 51.407423], + [126.835308, 51.413769], + [126.791577, 51.432428], + [126.784185, 51.448095], + [126.812518, 51.493948], + [126.843931, 51.521885], + [126.837156, 51.536033], + [126.69549, 51.57845], + [126.67886, 51.602246], + [126.741069, 51.642374], + [126.723823, 51.679126], + [126.734294, 51.711399], + [126.724439, 51.7266], + [126.6727, 51.73179], + [126.658534, 51.762544], + [126.622809, 51.777357], + [126.580925, 51.824728], + [126.555056, 51.874266], + [126.510092, 51.922274], + [126.462665, 51.948471], + [126.468208, 51.982395], + [126.447882, 52.009294], + [126.450962, 52.027709], + [126.487918, 52.041699], + [126.514404, 52.037282], + [126.563679, 52.119302], + [126.556288, 52.136203], + [126.499005, 52.16044], + [126.457121, 52.165212], + [126.403535, 52.185031], + [126.34502, 52.192002], + [126.306832, 52.205574], + [126.312992, 52.235271], + [126.357955, 52.264216], + [126.401071, 52.279597], + [126.436795, 52.277034], + [126.4331, 52.298632], + [126.327774, 52.310342], + [126.320999, 52.342163], + [126.348716, 52.357882], + [126.353644, 52.389304], + [126.326542, 52.424353], + [126.268644, 52.475051], + [126.205202, 52.466302], + [126.192883, 52.492181], + [126.213209, 52.525327], + [126.147304, 52.573], + [126.066616, 52.603905], + [126.055529, 52.582455], + [126.030891, 52.576273], + [125.989008, 52.603178], + [125.968682, 52.630429], + [125.971145, 52.654033], + [125.995783, 52.675085], + [126.061688, 52.673271], + [126.072775, 52.691048], + [126.044442, 52.739628], + [126.112195, 52.757016], + [126.116507, 52.768243], + [126.052449, 52.800095], + [126.02042, 52.795753], + [125.985312, 52.758465], + [125.966834, 52.759914], + [125.937269, 52.786705], + [125.923718, 52.815651], + [125.855349, 52.866259], + [125.854117, 52.891542], + [125.827631, 52.899123], + [125.772197, 52.89804], + [125.751255, 52.88143], + [125.722306, 52.880347], + [125.678574, 52.86084], + [125.666871, 52.869872], + [125.665023, 52.913561], + [125.737088, 52.943504], + [125.742632, 52.993964], + [125.684118, 53.00801], + [125.643466, 53.039686], + [125.640386, 53.06199], + [125.613901, 53.083564], + [125.588647, 53.081047], + [125.530749, 53.0512], + [125.504263, 53.061271], + [125.503647, 53.095424], + [125.452524, 53.107641], + [125.343503, 53.14463], + [125.315786, 53.144989], + [125.252344, 53.18051], + [125.195062, 53.198439], + [125.142091, 53.204175], + [125.038613, 53.202741], + [124.970244, 53.194137], + [124.887708, 53.164368], + [124.909266, 53.118059], + [124.87231, 53.099018], + [124.832889, 53.145347], + [124.787926, 53.140681], + [124.734339, 53.146783], + [124.712165, 53.162574], + [124.720789, 53.192344], + [124.678905, 53.207043], + [124.590209, 53.208476], + [124.563108, 53.201666], + [124.496587, 53.207759], + [124.487348, 53.217436], + [124.435609, 53.223886], + [124.412203, 53.248601], + [124.375863, 53.258984], + [124.327819, 53.331954], + [124.239124, 53.379817], + [124.19416, 53.37339], + [124.125791, 53.348033], + [124.058038, 53.404085], + [124.01369, 53.403371], + [123.985973, 53.434401], + [123.865249, 53.489627], + [123.797495, 53.489983], + [123.746373, 53.500308], + [123.698329, 53.498528], + [123.668764, 53.533756], + [123.620721, 53.550115], + [123.58746, 53.546915], + [123.569598, 53.505291], + [123.53141, 53.507071], + [123.557895, 53.531978], + [123.546808, 53.551537], + [123.517243, 53.558292], + [123.490758, 53.542648], + [123.510468, 53.509206], + [123.499381, 53.497816], + [123.47228, 53.509206], + [123.454417, 53.536602], + [123.394055, 53.538024], + [123.309672, 53.56078], + [123.274563, 53.563269], + [123.231447, 53.549404], + [123.179092, 53.509918], + [123.137209, 53.498172], + [123.093477, 53.508138], + [123.052209, 53.506715], + [122.943804, 53.483929], + [122.894528, 53.462914], + [122.826775, 53.457213], + [122.763949, 53.463626], + [122.673406, 53.459351], + [122.608117, 53.465408], + [122.5379, 53.453293], + [122.496016, 53.458638], + [122.435038, 53.444739], + [122.37406, 53.47467], + [122.350038, 53.505647], + [122.266886, 53.470039], + [122.227466, 53.461845], + [122.161561, 53.468614], + [122.111054, 53.426913], + [122.077177, 53.422277], + [122.026054, 53.428339], + [121.875765, 53.426556], + [121.816019, 53.41336], + [121.754425, 53.389454], + [121.697758, 53.392666], + [121.589969, 53.350891], + [121.499426, 53.337314], + [121.504969, 53.323018], + [121.575802, 53.29155], + [121.615222, 53.258984], + [121.642324, 53.262564], + [121.679896, 53.240722], + [121.67928, 53.199515], + [121.660186, 53.195213], + [121.665114, 53.170467], + [121.722396, 53.145706], + [121.753193, 53.147501], + [121.784606, 53.104408], + [121.775367, 53.089674], + [121.817867, 53.061631], + [121.785838, 53.018451], + [121.715621, 52.997926], + [121.677432, 52.948192], + [121.66265, 52.912478], + [121.610295, 52.892264], + [121.604136, 52.872401], + [121.620766, 52.853251], + [121.591201, 52.824693], + [121.537614, 52.801542], + [121.511129, 52.779104], + [121.476636, 52.772225], + [121.455078, 52.73528], + [121.373158, 52.683067], + [121.309717, 52.676173], + [121.29247, 52.651855], + [121.237036, 52.619167], + [121.182217, 52.59918], + [121.225333, 52.577364], + [121.280151, 52.586819], + [121.323883, 52.573727], + [121.353448, 52.534793], + [121.411963, 52.52205], + [121.416274, 52.499468], + [121.474172, 52.482706], + [121.495114, 52.484892], + [121.519136, 52.456821], + [121.565331, 52.460468], + [121.590585, 52.443326], + [121.63986, 52.44442], + [121.678664, 52.419973], + [121.658338, 52.3904], + [121.715621, 52.342894], + [121.714389, 52.318025], + [121.769207, 52.308147], + [121.841272, 52.282526], + [121.901018, 52.280695], + [121.94783, 52.298266], + [121.976779, 52.343626], + [122.035909, 52.377615], + [122.040837, 52.413038], + [122.091344, 52.427272], + [122.080873, 52.440407], + [122.107358, 52.452445], + [122.142467, 52.495096], + [122.140003, 52.510032], + [122.168952, 52.513674], + [122.178191, 52.48963], + [122.207756, 52.469218], + [122.310618, 52.475416], + [122.326016, 52.459374], + [122.342031, 52.414133], + [122.367284, 52.413768], + [122.378987, 52.395512], + [122.419023, 52.375057], + [122.447356, 52.394052], + [122.484313, 52.341432], + [122.478153, 52.29607], + [122.560689, 52.282526], + [122.585943, 52.266413], + [122.67895, 52.276667], + [122.710979, 52.256157], + [122.76087, 52.26678], + [122.787355, 52.252494], + [122.766413, 52.232705], + [122.769493, 52.179893], + [122.73808, 52.153464], + [122.690653, 52.140243], + [122.629059, 52.13657], + [122.643841, 52.111585], + [122.625363, 52.067459], + [122.650616, 52.058997], + [122.664783, 51.99861], + [122.683877, 51.974654], + [122.726377, 51.978709], + [122.729457, 51.919321], + [122.706051, 51.890151], + [122.725761, 51.87833], + [122.732536, 51.832495], + [122.771957, 51.779579], + [122.749167, 51.746613], + [122.778732, 51.698048], + [122.816304, 51.655371], + [122.820616, 51.633088], + [122.85634, 51.606707], + [122.832935, 51.581797], + [122.874202, 51.561339], + [122.880362, 51.537894], + [122.858804, 51.524864], + [122.880362, 51.511085], + [122.854492, 51.477551], + [122.871123, 51.455181], + [122.900072, 51.445112], + [122.903768, 51.415262], + [122.946267, 51.405183], + [122.965977, 51.386886], + [122.965977, 51.345786], + [123.002934, 51.31213], + [123.069455, 51.321108], + [123.127969, 51.297913], + [123.231447, 51.279199], + [123.231447, 51.268716], + [123.294273, 51.254111], + [123.339853, 51.27246], + [123.376809, 51.266844], + [123.414381, 51.278825], + [123.440251, 51.270963], + [123.46304, 51.286686], + [123.582533, 51.294545], + [123.582533, 51.306893], + [123.661989, 51.319237], + [123.660141, 51.342795], + [123.711264, 51.398089], + [123.794416, 51.361109], + [123.842459, 51.367462], + [123.887423, 51.320734], + [123.926227, 51.300532], + [123.939777, 51.313253], + [123.994596, 51.322604], + [124.071588, 51.320734], + [124.090067, 51.3413], + [124.128255, 51.347281], + [124.192313, 51.33943], + [124.239124, 51.344664], + [124.271769, 51.308389], + [124.297638, 51.298661], + [124.339522, 51.293422], + [124.406659, 51.272086], + [124.430065, 51.301281], + [124.426985, 51.331953], + [124.443616, 51.35812], + [124.478108, 51.36223], + [124.490427, 51.380537], + [124.555717, 51.375307], + [124.58713, 51.363725], + [124.62655, 51.327465], + [124.693687, 51.3327], + [124.752817, 51.35812], + [124.76452, 51.38726], + [124.783614, 51.392115], + [124.864302, 51.37979], + [124.885244, 51.40817], + [124.942527, 51.447349], + [124.917889, 51.474196], + [124.928976, 51.498419], + [124.983795, 51.508478], + [125.004737, 51.529332], + [125.047236, 51.529704], + [125.073106, 51.553526], + [125.060171, 51.59667], + [125.098975, 51.658341], + [125.12854, 51.659083], + [125.130388, 51.635317], + [125.175968, 51.639403], + [125.214772, 51.627888], + [125.228938, 51.640517], + [125.289301, 51.633831], + [125.316402, 51.610052], + [125.35151, 51.623801], + [125.38046, 51.585516], + [125.424807, 51.562827], + [125.528285, 51.488359], + [125.559082, 51.461521], + [125.559082, 51.461521], + [125.595422, 51.416755], + [125.595422, 51.416755], + [125.60035, 51.413396], + [125.60035, 51.413396], + [125.600966, 51.410409], + [125.600966, 51.410409], + [125.62314, 51.398089], + [125.62314, 51.398089], + [125.623756, 51.387633], + [125.623756, 51.387633], + [125.626219, 51.380163], + [125.626219, 51.380163], + [125.700132, 51.327465], + [125.700132, 51.327465], + [125.740784, 51.27583], + [125.740784, 51.27583], + [125.76111, 51.261976], + [125.76111, 51.261976], + [125.761726, 51.226385], + [125.819008, 51.227134], + [125.850421, 51.21364], + [125.864588, 51.146487], + [125.909551, 51.138977], + [125.946508, 51.108176], + [125.970529, 51.123955], + [125.993935, 51.119072], + [125.976073, 51.084498], + [126.059225, 51.043503], + [126.033971, 51.011132], + [126.041978, 50.981753], + [126.068464, 50.967434], + [126.042594, 50.92558], + [126.02042, 50.927466], + [125.996399, 50.906715], + [125.997631, 50.872738], + [125.961906, 50.901054], + [125.939732, 50.85423], + [125.913247, 50.825885], + [125.878138, 50.816812], + [125.890457, 50.805845], + [125.836255, 50.793363], + [125.846726, 50.769524], + [125.828863, 50.756654], + [125.804226, 50.773309], + [125.758646, 50.746809], + [125.795603, 50.738856], + [125.78082, 50.725598], + [125.825784, 50.70362], + [125.789443, 50.679735], + [125.804226, 50.658874], + [125.793139, 50.643316], + [125.814697, 50.62092], + [125.807921, 50.60383], + [125.829479, 50.56165], + [125.794987, 50.532748], + [125.770349, 50.531227], + [125.754335, 50.506874], + [125.740784, 50.523237], + [125.699516, 50.487078], + [125.654553, 50.471082], + [125.627451, 50.443268], + [125.580024, 50.449366], + [125.562162, 50.438314], + [125.583104, 50.409717], + [125.567089, 50.402852], + [125.536292, 50.420014], + [125.522126, 50.404759], + [125.546763, 50.358965], + [125.520278, 50.3498], + [125.530749, 50.331085], + [125.463611, 50.295925], + [125.466075, 50.266861], + [125.442053, 50.260357], + [125.448829, 50.216338], + [125.417416, 50.195654], + [125.39093, 50.199868], + [125.382923, 50.172278], + [125.335496, 50.161161], + [125.376148, 50.137385], + [125.311474, 50.140453], + [125.27883, 50.127411], + [125.258504, 50.103618], + [125.287453, 50.093636], + [125.283757, 50.070211], + [125.328105, 50.065985], + [125.315786, 50.04562], + [125.289916, 50.057917], + [125.25296, 50.041393], + [125.283757, 50.036012], + [125.297924, 50.014481], + [125.278214, 49.996402], + [125.241873, 49.987938], + [125.231402, 49.957531], + [125.190134, 49.959841], + [125.199373, 49.935194], + [125.225859, 49.922481], + [125.212924, 49.907452], + [125.245569, 49.87198], + [125.225243, 49.867351], + [125.239409, 49.844587], + [125.177815, 49.829533], + [125.222779, 49.799026], + [125.221547, 49.754969], + [125.204301, 49.734086], + [125.225243, 49.726349], + [125.219699, 49.669058], + [125.185207, 49.634574], + [125.189518, 49.652401], + [125.164881, 49.669446], + [125.132236, 49.672157], + [125.127308, 49.655113], + [125.15441, 49.616741], + [125.16796, 49.629923], + [125.205533, 49.593859], + [125.23017, 49.595411], + [125.233866, 49.536801], + [125.211076, 49.539908], + [125.228323, 49.487063], + [125.270822, 49.454395], + [125.256656, 49.437275], + [125.25604, 49.395227], + [125.277598, 49.379644], + [125.256656, 49.359769], + [125.261583, 49.322336], + [125.214772, 49.277066], + [125.227707, 49.248947], + [125.219699, 49.189139], + [125.187671, 49.186792], + [125.158721, 49.144921], + [125.117453, 49.126127], + [125.034302, 49.157056], + [125.039845, 49.17623], + [124.983179, 49.162535], + [124.906802, 49.184054], + [124.860607, 49.166448], + [124.847672, 49.129651], + [124.809484, 49.115943], + [124.828578, 49.077933], + [124.808252, 49.020666], + [124.756513, 48.967262], + [124.744194, 48.920487], + [124.709086, 48.920487], + [124.715861, 48.885475], + [124.697383, 48.841775], + [124.654267, 48.83429], + [124.644412, 48.80789], + [124.656115, 48.783842], + [124.612383, 48.747945], + [124.624702, 48.701755], + [124.601912, 48.632587], + [124.579122, 48.596582], + [124.520608, 48.556195], + [124.548941, 48.535593], + [124.533543, 48.515379], + [124.555717, 48.467784], + [124.507674, 48.445558], + [124.52492, 48.426897], + [124.51876, 48.378027], + [124.547094, 48.35775], + [124.540934, 48.335476], + [124.579738, 48.297269], + [124.558796, 48.268197], + [124.579122, 48.262221], + [124.547094, 48.200829], + [124.512601, 48.164518], + [124.529847, 48.146951], + [124.505826, 48.124985], + [124.478108, 48.123387], + [124.46579, 48.098213], + [124.415899, 48.08782], + [124.430065, 48.12099], + [124.471333, 48.133373], + [124.475029, 48.173698], + [124.418978, 48.181679], + [124.412819, 48.219175], + [124.422058, 48.245884], + [124.365392, 48.283731], + [124.353689, 48.315978], + [124.317964, 48.35099], + [124.331515, 48.380015], + [124.309957, 48.413393], + [124.330283, 48.435633], + [124.302566, 48.456673], + [124.314269, 48.503881], + [124.25945, 48.536385], + [124.25945, 48.536385], + [124.136878, 48.463023], + [124.07898, 48.43603], + [124.019234, 48.39313], + [123.862785, 48.271782], + [123.746373, 48.197638], + [123.705105, 48.152142], + [123.579453, 48.045427], + [123.537569, 48.021816], + [123.300432, 47.953723], + [123.256085, 47.876711], + [123.214201, 47.824502], + [123.161846, 47.781892], + [123.041122, 47.746492], + [122.926557, 47.697777], + [122.848949, 47.67441], + [122.765181, 47.614333], + [122.59395, 47.54732], + [122.543443, 47.495589], + [122.507103, 47.401291], + [122.418407, 47.350632], + [122.441197, 47.310476], + [122.441197, 47.310476], + [122.462755, 47.27841], + [122.498479, 47.255262], + [122.531124, 47.198771], + [122.582863, 47.158092], + [122.582863, 47.158092], + [122.615508, 47.124306], + [122.679566, 47.094164], + [122.710363, 47.093349], + [122.710363, 47.093349], + [122.821232, 47.065636], + [122.852645, 47.072158], + [122.845869, 47.046881], + [122.778116, 47.002822], + [122.77442, 46.973837], + [122.798442, 46.9575], + [122.791051, 46.941567], + [122.83971, 46.937072], + [122.895144, 46.960359], + [122.893913, 46.895376], + [122.906847, 46.80738], + [122.996774, 46.761483], + [123.00355, 46.730726], + [123.026339, 46.718829], + [123.076846, 46.745082], + [123.103332, 46.734828], + [123.163694, 46.74016], + [123.198802, 46.803283], + [123.22344, 46.821305], + [123.221592, 46.850373], + [123.295505, 46.865105], + [123.341084, 46.826628], + [123.374345, 46.837683], + [123.40699, 46.906416], + [123.404526, 46.935438], + [123.360179, 46.970978], + [123.304128, 46.964852], + [123.301664, 46.999965], + [123.337389, 46.988943], + [123.42362, 46.934212], + [123.487678, 46.959951], + [123.52833, 46.944836], + [123.483366, 46.84587], + [123.506772, 46.827038], + [123.562823, 46.82581], + [123.575757, 46.845461], + [123.576989, 46.891286], + [123.605322, 46.891286], + [123.599163, 46.868378], + [123.625648, 46.847508], + [123.580069, 46.827447], + [123.629344, 46.813524], + [123.631808, 46.728675], + [123.603475, 46.68928], + [123.474743, 46.686817], + [123.366338, 46.677784], + [123.318295, 46.662179], + [123.276411, 46.660947], + [123.279491, 46.616981], + [123.228368, 46.588198], + [123.18094, 46.614103], + [123.098404, 46.603002], + [123.077462, 46.622324], + [123.04605, 46.617803], + [123.052825, 46.579972], + [123.002318, 46.574624], + [123.010325, 46.524823], + [123.011557, 46.434984], + [123.089781, 46.347888], + [123.142136, 46.298293], + [123.178476, 46.248239], + [123.248078, 46.273065], + [123.286266, 46.250308], + [123.320758, 46.254447], + [123.357099, 46.232096], + [123.357099, 46.232096], + [123.430396, 46.243687], + [123.452569, 46.233338], + [123.499381, 46.259826], + [123.569598, 46.223816], + [123.569598, 46.223816] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 310000, + "name": "上海市", + "center": [121.472644, 31.231706], + "centroid": [121.438737, 31.072559], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 8, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [120.901349, 31.017327], + [120.940153, 31.010146], + [120.949392, 31.030148], + [120.989428, 31.01425], + [121.000515, 30.938309], + [120.993124, 30.889532], + [121.020225, 30.872069], + [120.991892, 30.837133], + [121.038087, 30.814007], + [121.060261, 30.845354], + [121.097833, 30.857171], + [121.13787, 30.826342], + [121.123087, 30.77905], + [121.174826, 30.771851], + [121.21671, 30.785734], + [121.232108, 30.755909], + [121.272144, 30.723504], + [121.274608, 30.677191], + [121.362071, 30.679764], + [121.426129, 30.730192], + [121.517288, 30.775451], + [121.601056, 30.805269], + [121.681128, 30.818633], + [121.904714, 30.814007], + [121.943518, 30.776993], + [121.970004, 30.789333], + [121.954605, 30.825828], + [121.994025, 30.862823], + [121.990945, 30.96859], + [121.977395, 31.016301], + [121.946598, 31.066039], + [121.809859, 31.196669], + [121.722396, 31.3036], + [121.599208, 31.37465], + [121.520984, 31.394575], + [121.404571, 31.479337], + [121.343593, 31.511996], + [121.301093, 31.49873], + [121.301093, 31.49873], + [121.247507, 31.476785], + [121.241963, 31.493117], + [121.174826, 31.44922], + [121.143413, 31.392021], + [121.113848, 31.37465], + [121.130478, 31.343987], + [121.142797, 31.275472], + [121.090442, 31.291838], + [121.060261, 31.245289], + [121.076892, 31.158267], + [121.018377, 31.134194], + [120.930298, 31.141365], + [120.881023, 31.134706], + [120.859465, 31.100379], + [120.890878, 31.094229], + [120.901349, 31.017327] + ] + ], + [ + [ + [121.974931, 31.61704], + [121.715005, 31.673592], + [121.64294, 31.697527], + [121.599824, 31.703128], + [121.49881, 31.753012], + [121.431673, 31.769295], + [121.384861, 31.833382], + [121.323267, 31.868458], + [121.265369, 31.863883], + [121.200079, 31.834907], + [121.118775, 31.759119], + [121.145261, 31.75403], + [121.289391, 31.61653], + [121.371926, 31.553314], + [121.395332, 31.585437], + [121.434136, 31.590535], + [121.547469, 31.531382], + [121.625693, 31.501792], + [121.682976, 31.491075], + [121.819098, 31.437987], + [121.890547, 31.428795], + [121.981706, 31.464024], + [121.995873, 31.493117], + [121.974931, 31.61704] + ] + ], + [ + [ + [121.795693, 31.330186], + [121.792613, 31.363408], + [121.742106, 31.407345], + [121.585657, 31.454836], + [121.567179, 31.48342], + [121.520984, 31.494137], + [121.509897, 31.4824], + [121.572107, 31.435944], + [121.727939, 31.35472], + [121.76428, 31.31536], + [121.785222, 31.31127], + [121.795693, 31.330186] + ] + ], + [ + [ + [121.801852, 31.356765], + [121.8037, 31.328652], + [121.840656, 31.295418], + [121.932431, 31.283144], + [122.016199, 31.282121], + [122.097503, 31.255522], + [122.122756, 31.307179], + [122.116597, 31.320984], + [122.040837, 31.324051], + [121.951525, 31.337343], + [121.845584, 31.37465], + [121.792613, 31.377715], + [121.801852, 31.356765] + ] + ], + [ + [ + [121.626925, 31.445135], + [121.631853, 31.456878], + [121.579498, 31.479848], + [121.626925, 31.445135] + ] + ], + [ + [ + [121.943518, 31.215608], + [121.959533, 31.159291], + [121.995873, 31.160828], + [122.008808, 31.221238], + [121.950909, 31.228915], + [121.943518, 31.215608] + ] + ], + [ + [ + [121.88254, 31.240684], + [121.909026, 31.195133], + [121.923808, 31.234032], + [121.88254, 31.240684] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 320000, + "name": "江苏省", + "center": [118.767413, 32.041544], + "centroid": [119.486506, 32.983991], + "childrenNum": 13, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 9, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [117.311654, 34.561686], + [117.27285, 34.556757], + [117.303647, 34.542463], + [117.267923, 34.532603], + [117.27285, 34.499565], + [117.252524, 34.48674], + [117.248213, 34.451216], + [117.166293, 34.434435], + [117.139191, 34.526687], + [117.15151, 34.559222], + [117.104083, 34.648874], + [117.073286, 34.639026], + [117.061583, 34.675947], + [117.070206, 34.713835], + [117.022163, 34.759081], + [116.969192, 34.771864], + [116.95133, 34.81069], + [116.979047, 34.815113], + [116.966113, 34.844588], + [116.929156, 34.843114], + [116.922381, 34.894671], + [116.858323, 34.928533], + [116.821983, 34.929515], + [116.815823, 34.965324], + [116.789338, 34.975133], + [116.781331, 34.916757], + [116.677853, 34.939327], + [116.622418, 34.939818], + [116.613795, 34.922645], + [116.557745, 34.908905], + [116.445028, 34.895652], + [116.408071, 34.850972], + [116.403144, 34.756131], + [116.369267, 34.749247], + [116.363724, 34.715311], + [116.392057, 34.710391], + [116.374195, 34.640011], + [116.430245, 34.650843], + [116.432709, 34.630163], + [116.477057, 34.614896], + [116.490607, 34.573513], + [116.594085, 34.511894], + [116.592237, 34.493646], + [116.662454, 34.472927], + [116.722816, 34.472434], + [116.773939, 34.453683], + [116.782563, 34.429993], + [116.828142, 34.389012], + [116.909446, 34.408271], + [116.969192, 34.389012], + [116.960569, 34.363821], + [116.983359, 34.348011], + [116.969192, 34.283753], + [117.051112, 34.221425], + [117.025243, 34.167469], + [117.046801, 34.151622], + [117.123793, 34.128342], + [117.130568, 34.101586], + [117.192162, 34.068873], + [117.257452, 34.065899], + [117.277162, 34.078787], + [117.311654, 34.067882], + [117.357234, 34.088205], + [117.404045, 34.03218], + [117.435458, 34.028212], + [117.514914, 34.060941], + [117.543248, 34.038627], + [117.569117, 33.985051], + [117.612849, 34.000433], + [117.629479, 34.028708], + [117.671363, 33.992494], + [117.672595, 33.934916], + [117.715095, 33.879287], + [117.753899, 33.891211], + [117.759442, 33.874318], + [117.739732, 33.758467], + [117.72495, 33.74951], + [117.750203, 33.710688], + [117.791471, 33.733585], + [117.843826, 33.736074], + [117.901724, 33.720146], + [117.972557, 33.74951], + [118.019985, 33.738562], + [118.065564, 33.76593], + [118.117919, 33.766427], + [118.161035, 33.735576], + [118.16781, 33.663381], + [118.112376, 33.617045], + [118.117919, 33.594615], + [118.107448, 33.475391], + [118.050782, 33.491863], + [118.027376, 33.455421], + [118.016905, 33.402978], + [118.029224, 33.374995], + [117.992883, 33.333005], + [117.974405, 33.279487], + [117.939297, 33.262475], + [117.942376, 33.224936], + [117.977485, 33.226437], + [117.988572, 33.180869], + [118.037231, 33.152314], + [118.038463, 33.134776], + [118.149332, 33.169348], + [118.178281, 33.217926], + [118.217085, 33.191888], + [118.219549, 33.114227], + [118.243571, 33.027967], + [118.244803, 32.998359], + [118.26944, 32.969242], + [118.303933, 32.96874], + [118.291614, 32.946143], + [118.252194, 32.936601], + [118.2331, 32.914498], + [118.250346, 32.848157], + [118.301469, 32.846145], + [118.300237, 32.783275], + [118.334114, 32.761637], + [118.363063, 32.770695], + [118.375382, 32.718849], + [118.411106, 32.715828], + [118.450526, 32.743518], + [118.483787, 32.721367], + [118.560163, 32.729926], + [118.572482, 32.719856], + [118.642699, 32.744525], + [118.707373, 32.72036], + [118.756648, 32.737477], + [118.73817, 32.772708], + [118.743097, 32.853184], + [118.743097, 32.853184], + [118.810235, 32.853687], + [118.821322, 32.920527], + [118.846575, 32.922034], + [118.849039, 32.956689], + [118.89585, 32.957694], + [118.89585, 32.957694], + [118.892771, 32.941121], + [118.934039, 32.93861], + [118.993169, 32.958196], + [119.020886, 32.955685], + [119.054763, 32.8748], + [119.113277, 32.823014], + [119.184726, 32.825529], + [119.211827, 32.708275], + [119.208748, 32.641276], + [119.230921, 32.607001], + [119.22045, 32.576748], + [119.152697, 32.557582], + [119.168096, 32.536394], + [119.142226, 32.499556], + [119.084944, 32.452602], + [119.041212, 32.515201], + [118.975923, 32.505108], + [118.922336, 32.557078], + [118.92172, 32.557078], + [118.922336, 32.557078], + [118.92172, 32.557078], + [118.890923, 32.553042], + [118.908169, 32.59238], + [118.84288, 32.56767], + [118.820706, 32.60448], + [118.784981, 32.582295], + [118.757264, 32.603976], + [118.73509, 32.58885], + [118.719076, 32.614059], + [118.719076, 32.614059], + [118.688895, 32.588346], + [118.658714, 32.594397], + [118.632844, 32.578261], + [118.59712, 32.600951], + [118.568787, 32.585825], + [118.564475, 32.562122], + [118.608823, 32.536899], + [118.592192, 32.481383], + [118.628533, 32.467751], + [118.691359, 32.472295], + [118.685199, 32.403604], + [118.703061, 32.328792], + [118.657482, 32.30148], + [118.674728, 32.250375], + [118.643931, 32.209875], + [118.510888, 32.194176], + [118.49549, 32.165304], + [118.501033, 32.121726], + [118.433896, 32.086746], + [118.394476, 32.076098], + [118.389548, 31.985281], + [118.363679, 31.930443], + [118.472084, 31.879639], + [118.466541, 31.857784], + [118.504729, 31.841516], + [118.481939, 31.778453], + [118.533678, 31.76726], + [118.521975, 31.743343], + [118.5577, 31.73011], + [118.571866, 31.746397], + [118.641467, 31.75861], + [118.653786, 31.73011], + [118.697518, 31.709747], + [118.643315, 31.671555], + [118.643315, 31.649651], + [118.736322, 31.633347], + [118.748025, 31.675629], + [118.773894, 31.682759], + [118.802844, 31.619078], + [118.858894, 31.623665], + [118.881684, 31.564023], + [118.885995, 31.519139], + [118.883532, 31.500261], + [118.852119, 31.393553], + [118.824401, 31.375672], + [118.767735, 31.363919], + [118.745561, 31.372606], + [118.720924, 31.322518], + [118.726467, 31.282121], + [118.756648, 31.279564], + [118.794836, 31.229426], + [118.870597, 31.242219], + [118.984546, 31.237102], + [119.014727, 31.241707], + [119.10527, 31.235055], + [119.107118, 31.250917], + [119.158241, 31.294907], + [119.197661, 31.295418], + [119.198277, 31.270357], + [119.266646, 31.250405], + [119.294363, 31.263195], + [119.338095, 31.259103], + [119.350414, 31.301043], + [119.374435, 31.258591], + [119.360269, 31.213049], + [119.391682, 31.174142], + [119.439109, 31.177214], + [119.461283, 31.156219], + [119.532732, 31.159291], + [119.599869, 31.10909], + [119.623891, 31.130096], + [119.678093, 31.167997], + [119.705811, 31.152634], + [119.715666, 31.169533], + [119.779723, 31.17875], + [119.809904, 31.148536], + [119.827151, 31.174142], + [119.878274, 31.160828], + [119.921389, 31.170045], + [119.946027, 31.106016], + [119.988527, 31.059375], + [120.001461, 31.027071], + [120.052584, 31.00553], + [120.111099, 30.955761], + [120.149903, 30.937283], + [120.223816, 30.926502], + [120.316206, 30.933689], + [120.371025, 30.948575], + [120.35809, 30.886964], + [120.42338, 30.902884], + [120.435083, 30.920855], + [120.441858, 30.860768], + [120.460336, 30.839702], + [120.489285, 30.763624], + [120.504684, 30.757967], + [120.563814, 30.835592], + [120.589684, 30.854089], + [120.654973, 30.846896], + [120.68269, 30.882342], + [120.713487, 30.88491], + [120.709176, 30.933176], + [120.684538, 30.955247], + [120.698089, 30.970643], + [120.746132, 30.962432], + [120.770154, 30.996809], + [120.820661, 31.006556], + [120.865624, 30.989627], + [120.901349, 31.017327], + [120.890878, 31.094229], + [120.859465, 31.100379], + [120.881023, 31.134706], + [120.930298, 31.141365], + [121.018377, 31.134194], + [121.076892, 31.158267], + [121.060261, 31.245289], + [121.090442, 31.291838], + [121.142797, 31.275472], + [121.130478, 31.343987], + [121.113848, 31.37465], + [121.143413, 31.392021], + [121.174826, 31.44922], + [121.241963, 31.493117], + [121.247507, 31.476785], + [121.301093, 31.49873], + [121.301093, 31.49873], + [121.343593, 31.511996], + [121.371926, 31.553314], + [121.289391, 31.61653], + [121.145261, 31.75403], + [121.118775, 31.759119], + [121.200079, 31.834907], + [121.265369, 31.863883], + [121.323267, 31.868458], + [121.384861, 31.833382], + [121.431673, 31.769295], + [121.49881, 31.753012], + [121.599824, 31.703128], + [121.64294, 31.697527], + [121.715005, 31.673592], + [121.974931, 31.61704], + [121.970004, 31.718911], + [121.889315, 31.866425], + [121.856055, 31.955328], + [121.772287, 32.032984], + [121.759352, 32.059362], + [121.525295, 32.136423], + [121.542542, 32.152132], + [121.458774, 32.177462], + [121.499426, 32.211394], + [121.493882, 32.263533], + [121.450151, 32.282256], + [121.425513, 32.430885], + [121.390405, 32.460682], + [121.352216, 32.474315], + [121.269681, 32.483402], + [121.153268, 32.52933], + [121.121855, 32.569183], + [121.076892, 32.576243], + [121.020225, 32.605489], + [120.961711, 32.612042], + [120.979573, 32.636236], + [120.963559, 32.68259], + [120.916131, 32.701225], + [120.953088, 32.714318], + [120.972182, 32.761134], + [120.981421, 32.85972], + [120.957399, 32.893395], + [120.932762, 33.005887], + [120.917979, 33.02596], + [120.871784, 33.047032], + [120.874247, 33.093672], + [120.843451, 33.209915], + [120.819429, 33.237951], + [120.833595, 33.274984], + [120.813885, 33.303499], + [120.769538, 33.307], + [120.741205, 33.337505], + [120.717183, 33.436945], + [120.680227, 33.520306], + [120.622944, 33.615051], + [120.611241, 33.627012], + [120.583524, 33.668362], + [120.534249, 33.782346], + [120.48559, 33.859411], + [120.367329, 34.091674], + [120.347619, 34.179352], + [120.314359, 34.255563], + [120.311895, 34.306991], + [120.103707, 34.391481], + [119.962657, 34.459112], + [119.811752, 34.485754], + [119.781571, 34.515839], + [119.641137, 34.569078], + [119.610956, 34.592729], + [119.569072, 34.615389], + [119.465594, 34.672994], + [119.525956, 34.73351], + [119.456971, 34.748264], + [119.381827, 34.752198], + [119.494543, 34.754656], + [119.497007, 34.754164], + [119.439725, 34.785136], + [119.440957, 34.769406], + [119.378747, 34.764489], + [119.312841, 34.774813], + [119.272189, 34.797914], + [119.238313, 34.799388], + [119.217371, 34.827886], + [119.202588, 34.890253], + [119.214907, 34.925589], + [119.211211, 34.981507], + [119.238313, 35.048657], + [119.285124, 35.068252], + [119.291899, 35.028567], + [119.307298, 35.032977], + [119.292515, 35.068742], + [119.306066, 35.076578], + [119.286972, 35.115261], + [119.250016, 35.124562], + [119.217371, 35.106939], + [119.137915, 35.096167], + [119.114509, 35.055026], + [119.027045, 35.055516], + [118.942662, 35.040817], + [118.928495, 35.051106], + [118.86259, 35.025626], + [118.860742, 34.944233], + [118.805307, 34.87307], + [118.80038, 34.843114], + [118.772047, 34.794474], + [118.739402, 34.792508], + [118.719076, 34.745313], + [118.764039, 34.740396], + [118.783749, 34.723181], + [118.739402, 34.693663], + [118.690127, 34.678408], + [118.664257, 34.693663], + [118.607591, 34.694155], + [118.601431, 34.714327], + [118.545997, 34.705964], + [118.460997, 34.656258], + [118.473932, 34.623269], + [118.439439, 34.626223], + [118.424657, 34.595193], + [118.439439, 34.507949], + [118.416034, 34.473914], + [118.404947, 34.427525], + [118.379693, 34.415183], + [118.290382, 34.424563], + [118.277447, 34.404814], + [118.220165, 34.405802], + [118.217701, 34.379134], + [118.179513, 34.379628], + [118.177665, 34.45319], + [118.132702, 34.483287], + [118.16473, 34.50499], + [118.185056, 34.543942], + [118.079115, 34.569571], + [118.114839, 34.614404], + [118.084042, 34.655766], + [118.053861, 34.650843], + [117.951615, 34.678408], + [117.909732, 34.670533], + [117.902956, 34.644443], + [117.793935, 34.651827], + [117.791471, 34.583368], + [117.801942, 34.518798], + [117.684298, 34.547392], + [117.659044, 34.501044], + [117.609769, 34.490686], + [117.592523, 34.462566], + [117.53832, 34.467006], + [117.465023, 34.484767], + [117.402813, 34.550843], + [117.402813, 34.569571], + [117.370785, 34.584846], + [117.325205, 34.573021], + [117.325205, 34.573021], + [117.32151, 34.566614], + [117.32151, 34.566614], + [117.311654, 34.561686], + [117.311654, 34.561686] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 330000, + "name": "浙江省", + "center": [120.153576, 30.287459], + "centroid": [120.109913, 29.181466], + "childrenNum": 11, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 10, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [118.433896, 28.288335], + [118.444367, 28.253548], + [118.490562, 28.238259], + [118.493026, 28.262509], + [118.588497, 28.282538], + [118.595272, 28.258292], + [118.651322, 28.277267], + [118.674728, 28.27147], + [118.699366, 28.309939], + [118.719692, 28.312047], + [118.756032, 28.252493], + [118.802228, 28.240368], + [118.804075, 28.207675], + [118.771431, 28.188687], + [118.805923, 28.154923], + [118.802228, 28.117453], + [118.767735, 28.10584], + [118.719076, 28.063601], + [118.733858, 28.027684], + [118.730163, 27.970615], + [118.753568, 27.947885], + [118.818242, 27.916689], + [118.829329, 27.847921], + [118.873677, 27.733563], + [118.879836, 27.667859], + [118.913713, 27.619616], + [118.909401, 27.568168], + [118.869365, 27.540047], + [118.907553, 27.460952], + [118.955597, 27.4498], + [118.986393, 27.47582], + [118.983314, 27.498649], + [119.020886, 27.498118], + [119.03998, 27.478475], + [119.092335, 27.466262], + [119.129907, 27.475289], + [119.121284, 27.438115], + [119.14777, 27.424836], + [119.224146, 27.416868], + [119.26911, 27.42218], + [119.285124, 27.457766], + [119.334399, 27.480067], + [119.360269, 27.524657], + [119.416935, 27.539517], + [119.438493, 27.508734], + [119.466826, 27.526249], + [119.501935, 27.610601], + [119.501319, 27.649837], + [119.541971, 27.666799], + [119.606028, 27.674749], + [119.644217, 27.663619], + [119.626354, 27.620676], + [119.630666, 27.582491], + [119.675014, 27.574534], + [119.659615, 27.540578], + [119.690412, 27.537394], + [119.70889, 27.514042], + [119.703347, 27.446613], + [119.685485, 27.438646], + [119.711354, 27.403054], + [119.750774, 27.373829], + [119.739687, 27.362668], + [119.782187, 27.330241], + [119.768636, 27.307909], + [119.843165, 27.300464], + [119.938636, 27.329709], + [119.960194, 27.365857], + [120.008237, 27.375423], + [120.026099, 27.344063], + [120.052584, 27.338747], + [120.096316, 27.390302], + [120.136968, 27.402523], + [120.134504, 27.420055], + [120.221352, 27.420055], + [120.26262, 27.432804], + [120.273091, 27.38924], + [120.340844, 27.399867], + [120.343924, 27.363199], + [120.430155, 27.258976], + [120.401822, 27.250996], + [120.404286, 27.204166], + [120.461568, 27.142407], + [120.492365, 27.136016], + [120.545952, 27.156785], + [120.574901, 27.234501], + [120.554575, 27.25206], + [120.580444, 27.321203], + [120.665444, 27.357884], + [120.673451, 27.420055], + [120.703016, 27.478475], + [120.637111, 27.561271], + [120.634647, 27.577186], + [120.685154, 27.622797], + [120.709176, 27.682699], + [120.771386, 27.734623], + [120.777545, 27.774873], + [120.809574, 27.775402], + [120.840371, 27.758986], + [120.910588, 27.864852], + [120.942001, 27.896592], + [120.97403, 27.887071], + [121.027616, 27.832574], + [121.070116, 27.834162], + [121.107688, 27.81352], + [121.152036, 27.815638], + [121.134174, 27.787051], + [121.13479, 27.787051], + [121.149572, 27.801345], + [121.149572, 27.801875], + [121.153268, 27.809815], + [121.152652, 27.810344], + [121.192072, 27.822518], + [121.193304, 27.872259], + [121.162507, 27.879136], + [121.162507, 27.90717], + [121.099681, 27.895005], + [121.05595, 27.900294], + [120.991892, 27.95], + [121.015298, 27.981714], + [121.059029, 28.096338], + [121.108304, 28.139092], + [121.121239, 28.12537], + [121.140949, 28.031382], + [121.176058, 28.022401], + [121.261057, 28.034551], + [121.299862, 28.067297], + [121.328195, 28.134343], + [121.373774, 28.133287], + [121.402107, 28.197127], + [121.45631, 28.250385], + [121.488955, 28.301509], + [121.538846, 28.299401], + [121.571491, 28.279376], + [121.580114, 28.240368], + [121.627541, 28.251966], + [121.669425, 28.33312], + [121.660186, 28.355768], + [121.634317, 28.347868], + [121.658954, 28.392628], + [121.692831, 28.407368], + [121.671273, 28.472621], + [121.646019, 28.511544], + [121.634317, 28.562542], + [121.596128, 28.575156], + [121.557324, 28.645033], + [121.540694, 28.655537], + [121.646019, 28.682842], + [121.689135, 28.719062], + [121.704534, 28.804577], + [121.687287, 28.863294], + [121.774751, 28.863818], + [121.772287, 28.898404], + [121.743338, 28.954451], + [121.711309, 28.985865], + [121.712541, 29.028783], + [121.658954, 29.058606], + [121.660186, 29.118226], + [121.616454, 29.143318], + [121.608447, 29.168927], + [121.715621, 29.125022], + [121.750113, 29.136523], + [121.767975, 29.166837], + [121.780294, 29.10986], + [121.811091, 29.10986], + [121.85975, 29.086328], + [121.884388, 29.105677], + [121.966308, 29.052852], + [121.970004, 29.092604], + [121.988482, 29.110906], + [121.986634, 29.154817], + [121.948446, 29.193485], + [121.971851, 29.193485], + [121.966924, 29.249894], + [122.002032, 29.260336], + [122.000185, 29.278608], + [121.94475, 29.28435], + [121.958301, 29.334448], + [121.936127, 29.348012], + [121.937975, 29.384], + [121.975547, 29.411113], + [121.993409, 29.45229], + [121.973083, 29.477821], + [121.968772, 29.515846], + [121.995257, 29.545007], + [122.000185, 29.582486], + [121.966308, 29.636078], + [121.909641, 29.650122], + [121.872685, 29.632437], + [121.833265, 29.653242], + [121.937359, 29.748373], + [122.003264, 29.762401], + [122.043916, 29.822647], + [122.10243, 29.859504], + [122.143082, 29.877668], + [122.140003, 29.901535], + [122.00696, 29.891678], + [122.00388, 29.92021], + [121.971235, 29.955476], + [121.919497, 29.920729], + [121.835113, 29.958068], + [121.78399, 29.99332], + [121.721164, 29.992802], + [121.699606, 30.007832], + [121.652795, 30.071037], + [121.635548, 30.070002], + [121.561636, 30.184395], + [121.497578, 30.258861], + [121.395332, 30.338435], + [121.371926, 30.37097], + [121.328195, 30.397299], + [121.225333, 30.404526], + [121.183449, 30.434458], + [121.092906, 30.515952], + [121.058413, 30.563888], + [121.148956, 30.599953], + [121.188992, 30.632916], + [121.239499, 30.648878], + [121.274608, 30.677191], + [121.272144, 30.723504], + [121.232108, 30.755909], + [121.21671, 30.785734], + [121.174826, 30.771851], + [121.123087, 30.77905], + [121.13787, 30.826342], + [121.097833, 30.857171], + [121.060261, 30.845354], + [121.038087, 30.814007], + [120.991892, 30.837133], + [121.020225, 30.872069], + [120.993124, 30.889532], + [121.000515, 30.938309], + [120.989428, 31.01425], + [120.949392, 31.030148], + [120.940153, 31.010146], + [120.901349, 31.017327], + [120.865624, 30.989627], + [120.820661, 31.006556], + [120.770154, 30.996809], + [120.746132, 30.962432], + [120.698089, 30.970643], + [120.684538, 30.955247], + [120.709176, 30.933176], + [120.713487, 30.88491], + [120.68269, 30.882342], + [120.654973, 30.846896], + [120.589684, 30.854089], + [120.563814, 30.835592], + [120.504684, 30.757967], + [120.489285, 30.763624], + [120.460336, 30.839702], + [120.441858, 30.860768], + [120.435083, 30.920855], + [120.42338, 30.902884], + [120.35809, 30.886964], + [120.371025, 30.948575], + [120.316206, 30.933689], + [120.223816, 30.926502], + [120.149903, 30.937283], + [120.111099, 30.955761], + [120.052584, 31.00553], + [120.001461, 31.027071], + [119.988527, 31.059375], + [119.946027, 31.106016], + [119.921389, 31.170045], + [119.878274, 31.160828], + [119.827151, 31.174142], + [119.809904, 31.148536], + [119.779723, 31.17875], + [119.715666, 31.169533], + [119.705811, 31.152634], + [119.678093, 31.167997], + [119.623891, 31.130096], + [119.649144, 31.104991], + [119.629434, 31.085517], + [119.633746, 31.019379], + [119.580159, 30.967051], + [119.582007, 30.932149], + [119.563529, 30.919315], + [119.557369, 30.874124], + [119.575847, 30.829939], + [119.55429, 30.825828], + [119.527188, 30.77905], + [119.479761, 30.772365], + [119.482841, 30.704467], + [119.444652, 30.650422], + [119.408312, 30.645274], + [119.39045, 30.685941], + [119.343022, 30.664322], + [119.323312, 30.630341], + [119.238929, 30.609225], + [119.265414, 30.574709], + [119.237081, 30.546881], + [119.272189, 30.510281], + [119.326392, 30.532964], + [119.336247, 30.508734], + [119.335015, 30.448389], + [119.36766, 30.38491], + [119.402768, 30.374584], + [119.349182, 30.349281], + [119.326392, 30.372002], + [119.277117, 30.341018], + [119.246936, 30.341018], + [119.236465, 30.297106], + [119.201356, 30.290905], + [119.126828, 30.304856], + [119.091719, 30.323972], + [119.06277, 30.304856], + [118.988857, 30.332237], + [118.954365, 30.360126], + [118.880452, 30.31519], + [118.877988, 30.282637], + [118.905089, 30.216464], + [118.929727, 30.2025], + [118.852735, 30.166805], + [118.852119, 30.149729], + [118.895234, 30.148694], + [118.873677, 30.11505], + [118.878604, 30.064822], + [118.902626, 30.029078], + [118.894619, 29.937845], + [118.838568, 29.934733], + [118.841032, 29.891159], + [118.740634, 29.814859], + [118.744945, 29.73902], + [118.700598, 29.706277], + [118.647011, 29.64336], + [118.61991, 29.654282], + [118.573714, 29.638159], + [118.532446, 29.588731], + [118.500417, 29.57572], + [118.496106, 29.519492], + [118.381541, 29.504909], + [118.347664, 29.474174], + [118.329802, 29.495012], + [118.306396, 29.479384], + [118.316252, 29.422581], + [118.248498, 29.431443], + [118.193064, 29.395472], + [118.205382, 29.343839], + [118.166578, 29.314099], + [118.178281, 29.297921], + [118.138861, 29.283828], + [118.077883, 29.290614], + [118.073571, 29.216993], + [118.042159, 29.210202], + [118.027992, 29.167882], + [118.045238, 29.149068], + [118.037847, 29.102017], + [118.076035, 29.074822], + [118.066796, 29.053898], + [118.097593, 28.998952], + [118.115455, 29.009944], + [118.115455, 29.009944], + [118.133933, 28.983771], + [118.165346, 28.986912], + [118.227556, 28.942406], + [118.195527, 28.904167], + [118.270056, 28.918836], + [118.300237, 28.826075], + [118.364295, 28.813491], + [118.403099, 28.702791], + [118.428352, 28.681267], + [118.428352, 28.617193], + [118.428352, 28.617193], + [118.412338, 28.55676], + [118.4302, 28.515225], + [118.414802, 28.497344], + [118.474548, 28.478934], + [118.456686, 28.424738], + [118.432048, 28.402104], + [118.455454, 28.384204], + [118.480091, 28.327325], + [118.433896, 28.288335] + ] + ], + [ + [ + [122.163408, 29.988137], + [122.239785, 29.962735], + [122.279205, 29.937326], + [122.322321, 29.940438], + [122.341415, 29.976733], + [122.343879, 30.020269], + [122.310002, 30.039958], + [122.290908, 30.074663], + [122.301379, 30.086574], + [122.293988, 30.100554], + [122.152938, 30.113497], + [122.095655, 30.158008], + [122.048844, 30.147141], + [121.955221, 30.183878], + [121.934895, 30.161631], + [121.983554, 30.100554], + [121.989714, 30.077252], + [121.978011, 30.059125], + [122.027902, 29.991247], + [122.106742, 30.005759], + [122.118445, 29.986582], + [122.163408, 29.988137] + ] + ], + [ + [ + [122.213915, 30.186464], + [122.178807, 30.199396], + [122.152938, 30.19112], + [122.143698, 30.163183], + [122.168336, 30.138343], + [122.213915, 30.186464] + ] + ], + [ + [ + [122.229314, 29.711995], + [122.210836, 29.700559], + [122.269966, 29.685482], + [122.231162, 29.710435], + [122.229314, 29.711995] + ] + ], + [ + [ + [122.427646, 30.738422], + [122.427031, 30.697777], + [122.532972, 30.696748], + [122.528045, 30.725047], + [122.475074, 30.714243], + [122.445509, 30.745109], + [122.427646, 30.738422] + ] + ], + [ + [ + [122.162793, 30.329654], + [122.058083, 30.291938], + [122.154169, 30.244903], + [122.231778, 30.234562], + [122.247176, 30.30124], + [122.228082, 30.329654], + [122.191126, 30.329654], + [122.176343, 30.351863], + [122.162793, 30.329654] + ] + ], + [ + [ + [122.317393, 30.249556], + [122.277973, 30.242835], + [122.358661, 30.236113], + [122.365437, 30.255242], + [122.417175, 30.238699], + [122.40732, 30.272817], + [122.333408, 30.272817], + [122.317393, 30.249556] + ] + ], + [ + [ + [122.026054, 29.178333], + [122.013119, 29.151681], + [122.056851, 29.158476], + [122.075945, 29.176243], + [122.036525, 29.20759], + [122.026054, 29.178333] + ] + ], + [ + [ + [122.372212, 29.893234], + [122.386379, 29.834069], + [122.415944, 29.828877], + [122.401777, 29.869884], + [122.433806, 29.883376], + [122.43319, 29.919173], + [122.411632, 29.951846], + [122.398081, 29.9394], + [122.351886, 29.959105], + [122.330944, 29.937845], + [122.338951, 29.911911], + [122.353734, 29.89946], + [122.362973, 29.894272], + [122.372212, 29.893234] + ] + ], + [ + [ + [122.43011, 30.408655], + [122.432574, 30.445294], + [122.37406, 30.461802], + [122.277973, 30.471603], + [122.281669, 30.418461], + [122.318625, 30.407106], + [122.352502, 30.422074], + [122.43011, 30.408655] + ] + ], + [ + [ + [121.837577, 28.770484], + [121.86283, 28.782024], + [121.861598, 28.814016], + [121.837577, 28.770484] + ] + ], + [ + [ + [122.265038, 29.84549], + [122.221307, 29.832512], + [122.248408, 29.804473], + [122.310002, 29.766557], + [122.325401, 29.781621], + [122.299531, 29.819532], + [122.319241, 29.829397], + [122.265038, 29.84549] + ] + ], + [ + [ + [121.790765, 29.082144], + [121.832649, 29.050236], + [121.84312, 29.082144], + [121.82033, 29.099402], + [121.790765, 29.082144] + ] + ], + [ + [ + [121.201311, 27.623328], + [121.197616, 27.618025], + [121.198848, 27.616964], + [121.203775, 27.625979], + [121.201311, 27.623328] + ] + ], + [ + [ + [121.943518, 30.776993], + [121.968156, 30.688514], + [121.997105, 30.658659], + [122.087032, 30.602014], + [122.133227, 30.595317], + [122.075329, 30.647848], + [122.011271, 30.66947], + [121.992793, 30.695204], + [121.987866, 30.753338], + [121.970004, 30.789333], + [121.943518, 30.776993] + ] + ], + [ + [ + [121.889315, 28.471569], + [121.918881, 28.497344], + [121.881924, 28.502603], + [121.889315, 28.471569] + ] + ], + [ + [ + [122.182503, 29.650642], + [122.211452, 29.692241], + [122.200365, 29.712515], + [122.146778, 29.749412], + [122.13138, 29.788893], + [122.083952, 29.78318], + [122.047612, 29.719791], + [122.074097, 29.701599], + [122.095655, 29.716673], + [122.138155, 29.662083], + [122.182503, 29.650642] + ] + ], + [ + [ + [122.461523, 29.944068], + [122.459675, 29.944586], + [122.460291, 29.947179], + [122.451668, 29.943031], + [122.451052, 29.940956], + [122.450436, 29.940956], + [122.449204, 29.9394], + [122.4529, 29.936807], + [122.452284, 29.935252], + [122.45598, 29.926435], + [122.457827, 29.927472], + [122.462755, 29.927991], + [122.467067, 29.928509], + [122.459059, 29.938882], + [122.461523, 29.944068] + ] + ], + [ + [ + [122.570544, 30.644244], + [122.559457, 30.679764], + [122.546523, 30.651967], + [122.570544, 30.644244] + ] + ], + [ + [ + [121.869605, 28.423685], + [121.910873, 28.44], + [121.889931, 28.45105], + [121.869605, 28.423685] + ] + ], + [ + [ + [122.065474, 30.179739], + [122.055619, 30.200431], + [122.017431, 30.186464], + [122.025438, 30.161631], + [122.065474, 30.179739] + ] + ], + [ + [ + [122.391306, 29.970512], + [122.411632, 30.025969], + [122.378371, 30.023896], + [122.3679, 29.980361], + [122.391306, 29.970512] + ] + ], + [ + [ + [121.850511, 29.977251], + [121.874533, 29.964809], + [121.933047, 29.994875], + [121.924424, 30.052391], + [121.88562, 30.094859], + [121.848663, 30.101072], + [121.84004, 30.047211], + [121.844968, 29.982953], + [121.850511, 29.977251] + ] + ], + [ + [ + [121.066421, 27.478475], + [121.066421, 27.461483], + [121.107073, 27.443958], + [121.067036, 27.478475], + [121.066421, 27.478475] + ] + ], + [ + [ + [121.952141, 29.187738], + [121.979243, 29.160043], + [121.976779, 29.191918], + [121.952141, 29.187738] + ] + ], + [ + [ + [122.038373, 29.759284], + [122.011271, 29.746294], + [122.02975, 29.716673], + [122.038373, 29.759284] + ] + ], + [ + [ + [121.940438, 30.114533], + [121.910257, 30.089163], + [121.945982, 30.064304], + [121.962612, 30.106249], + [121.940438, 30.114533] + ] + ], + [ + [ + [121.957685, 30.287804], + [122.0008, 30.308473], + [121.989098, 30.339985], + [121.94167, 30.33327], + [121.921344, 30.30744], + [121.957685, 30.287804] + ] + ], + [ + [ + [122.192974, 29.965327], + [122.163408, 29.988137], + [122.152322, 29.97103], + [122.154169, 29.97103], + [122.155401, 29.970512], + [122.18435, 29.955476], + [122.192974, 29.965327] + ] + ], + [ + [ + [122.287828, 29.723949], + [122.301379, 29.748373], + [122.258263, 29.753569], + [122.241633, 29.784738], + [122.2133, 29.771752], + [122.251488, 29.731225], + [122.287828, 29.723949] + ] + ], + [ + [ + [121.134174, 27.787051], + [121.134174, 27.785992], + [121.13479, 27.787051], + [121.134174, 27.787051] + ] + ], + [ + [ + [122.760254, 30.141966], + [122.784275, 30.130062], + [122.781196, 30.13265], + [122.778116, 30.13679], + [122.770725, 30.138861], + [122.763333, 30.141966], + [122.762101, 30.142484], + [122.760254, 30.141966] + ] + ], + [ + [ + [122.264423, 30.269716], + [122.253952, 30.237147], + [122.315545, 30.250073], + [122.300147, 30.271266], + [122.264423, 30.269716] + ] + ], + [ + [ + [122.282901, 29.860542], + [122.30877, 29.849642], + [122.343263, 29.860542], + [122.343263, 29.882857], + [122.301379, 29.883895], + [122.282901, 29.860542] + ] + ], + [ + [ + [122.781196, 30.694175], + [122.799674, 30.716301], + [122.778732, 30.729677], + [122.757174, 30.713728], + [122.781196, 30.694175] + ] + ], + [ + [ + [121.098449, 27.937311], + [121.152652, 27.961629], + [121.120623, 27.986471], + [121.0695, 27.984357], + [121.038087, 27.948942], + [121.098449, 27.937311] + ] + ], + [ + [ + [121.185913, 27.963215], + [121.237652, 27.988056], + [121.197616, 28.000739], + [121.17113, 27.978543], + [121.185913, 27.963215] + ] + ], + [ + [ + [122.454132, 29.956513], + [122.447972, 29.955994], + [122.445509, 29.952365], + [122.446741, 29.951327], + [122.447972, 29.947698], + [122.459059, 29.950809], + [122.458443, 29.951846], + [122.455364, 29.955994], + [122.454132, 29.956513] + ] + ], + [ + [ + [122.836014, 30.698806], + [122.831087, 30.728648], + [122.807681, 30.714243], + [122.836014, 30.698806] + ] + ], + [ + [ + [122.200365, 29.969475], + [122.233626, 29.946661], + [122.273662, 29.93214], + [122.239785, 29.960142], + [122.200365, 29.969475] + ] + ], + [ + [ + [122.029134, 29.954957], + [122.043916, 29.930584], + [122.058699, 29.955994], + [122.029134, 29.954957] + ] + ], + [ + [ + [121.044247, 27.979072], + [121.089826, 27.998625], + [121.073812, 28.007608], + [121.044247, 27.979072] + ] + ], + [ + [ + [122.471378, 29.927472], + [122.470762, 29.925916], + [122.473226, 29.925397], + [122.47261, 29.927472], + [122.471378, 29.927472] + ] + ], + [ + [ + [122.152322, 29.97103], + [122.155401, 29.970512], + [122.154169, 29.97103], + [122.152322, 29.97103] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 340000, + "name": "安徽省", + "center": [117.283042, 31.86119], + "centroid": [117.226884, 31.849254], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 11, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [116.599629, 34.014324], + [116.641512, 33.978103], + [116.64336, 33.896675], + [116.631042, 33.887733], + [116.566984, 33.9081], + [116.558361, 33.881274], + [116.486296, 33.869846], + [116.437637, 33.846489], + [116.437021, 33.801246], + [116.408071, 33.805721], + [116.393905, 33.782843], + [116.316912, 33.771402], + [116.263326, 33.730101], + [116.230065, 33.735078], + [116.155536, 33.709693], + [116.132747, 33.751501], + [116.100102, 33.782843], + [116.074232, 33.781351], + [116.055754, 33.804727], + [116.05945, 33.860902], + [115.982457, 33.917039], + [116.00032, 33.965199], + [115.95782, 34.007875], + [115.904233, 34.009859], + [115.876516, 34.028708], + [115.877132, 34.002913], + [115.85003, 34.004898], + [115.846335, 34.028708], + [115.809378, 34.062428], + [115.768726, 34.061932], + [115.736082, 34.076805], + [115.705901, 34.059949], + [115.658473, 34.061437], + [115.642459, 34.03218], + [115.60735, 34.030196], + [115.579017, 33.974133], + [115.577785, 33.950307], + [115.547604, 33.874815], + [115.631988, 33.869846], + [115.614126, 33.775879], + [115.576553, 33.787817], + [115.563003, 33.772895], + [115.601807, 33.718653], + [115.601191, 33.658898], + [115.639995, 33.585143], + [115.564851, 33.576169], + [115.511264, 33.55323], + [115.463837, 33.567193], + [115.422569, 33.557219], + [115.394851, 33.506335], + [115.366518, 33.5233], + [115.345576, 33.502842], + [115.345576, 33.449928], + [115.324634, 33.457418], + [115.315395, 33.431451], + [115.328946, 33.403477], + [115.313547, 33.376994], + [115.341881, 33.370997], + [115.365286, 33.336005], + [115.361591, 33.298497], + [115.335105, 33.297997], + [115.340033, 33.260973], + [115.300613, 33.204407], + [115.303692, 33.149809], + [115.289526, 33.131769], + [115.245178, 33.135778], + [115.194671, 33.120743], + [115.168186, 33.088658], + [115.041302, 33.086653], + [114.990795, 33.102195], + [114.966158, 33.147304], + [114.932897, 33.153817], + [114.902716, 33.129764], + [114.897172, 33.086653], + [114.913187, 33.083143], + [114.925506, 33.016928], + [114.891629, 33.020441], + [114.883006, 32.990328], + [114.916266, 32.971251], + [114.943368, 32.935094], + [115.009273, 32.940117], + [115.035143, 32.932582], + [115.029599, 32.906962], + [115.139237, 32.897917], + [115.155867, 32.864747], + [115.197135, 32.856201], + [115.189744, 32.812452], + [115.211301, 32.785791], + [115.189744, 32.770695], + [115.179273, 32.726402], + [115.182968, 32.666973], + [115.20083, 32.591876], + [115.24333, 32.593388], + [115.267352, 32.578261], + [115.30554, 32.583303], + [115.304924, 32.553042], + [115.411482, 32.575235], + [115.409018, 32.549007], + [115.497713, 32.492489], + [115.5088, 32.468761], + [115.510648, 32.468761], + [115.510648, 32.468256], + [115.510648, 32.467751], + [115.509416, 32.466741], + [115.522967, 32.441997], + [115.57101, 32.419266], + [115.604271, 32.425833], + [115.626445, 32.40512], + [115.657857, 32.428864], + [115.667712, 32.409667], + [115.704669, 32.495013], + [115.742241, 32.476335], + [115.771806, 32.505108], + [115.789052, 32.468761], + [115.861117, 32.537403], + [115.891298, 32.576243], + [115.910393, 32.567165], + [115.8759, 32.542448], + [115.845719, 32.501575], + [115.883291, 32.487946], + [115.865429, 32.458662], + [115.899306, 32.390971], + [115.912856, 32.227596], + [115.941805, 32.166318], + [115.922095, 32.049725], + [115.928871, 32.003046], + [115.909161, 31.94314], + [115.920248, 31.920285], + [115.894994, 31.8649], + [115.893762, 31.832365], + [115.914704, 31.814567], + [115.886371, 31.776418], + [115.851878, 31.786593], + [115.808147, 31.770313], + [115.808147, 31.770313], + [115.767495, 31.78761], + [115.731154, 31.76726], + [115.676336, 31.778453], + [115.553764, 31.69549], + [115.534054, 31.698545], + [115.495249, 31.673083], + [115.476771, 31.643028], + [115.485394, 31.608885], + [115.439815, 31.588496], + [115.415793, 31.525771], + [115.371446, 31.495668], + [115.389924, 31.450241], + [115.373909, 31.405813], + [115.393004, 31.389977], + [115.372062, 31.349098], + [115.40717, 31.337854], + [115.443511, 31.344498], + [115.473076, 31.265242], + [115.507568, 31.267799], + [115.539597, 31.231985], + [115.540213, 31.194621], + [115.585793, 31.143926], + [115.603655, 31.17363], + [115.655394, 31.211002], + [115.700973, 31.201276], + [115.778582, 31.112164], + [115.797676, 31.128047], + [115.837712, 31.127022], + [115.867277, 31.147512], + [115.887603, 31.10909], + [115.939958, 31.071678], + [115.938726, 31.04707], + [116.006479, 31.034764], + [116.015102, 31.011685], + [116.058834, 31.012711], + [116.071769, 30.956787], + [116.03974, 30.957813], + [115.976298, 30.931636], + [115.932566, 30.889532], + [115.865429, 30.864364], + [115.848799, 30.828397], + [115.863581, 30.815549], + [115.851262, 30.756938], + [115.782893, 30.751795], + [115.762567, 30.685426], + [115.81369, 30.637035], + [115.819234, 30.597893], + [115.848799, 30.602014], + [115.876516, 30.582438], + [115.887603, 30.542758], + [115.910393, 30.519046], + [115.894994, 30.452517], + [115.921479, 30.416397], + [115.885139, 30.379747], + [115.91532, 30.337919], + [115.903001, 30.31364], + [115.985537, 30.290905], + [115.997856, 30.252657], + [116.065609, 30.204569], + [116.055754, 30.180774], + [116.088399, 30.110391], + [116.078544, 30.062233], + [116.091479, 30.036331], + [116.073616, 29.969993], + [116.128435, 29.897904], + [116.13521, 29.819532], + [116.172783, 29.828358], + [116.227601, 29.816936], + [116.250391, 29.785777], + [116.280572, 29.788893], + [116.342782, 29.835626], + [116.467818, 29.896347], + [116.525716, 29.897385], + [116.552201, 29.909836], + [116.585462, 30.045657], + [116.620571, 30.073109], + [116.666766, 30.076734], + [116.720353, 30.053945], + [116.747454, 30.057053], + [116.783794, 30.030632], + [116.802889, 29.99643], + [116.830606, 30.004723], + [116.83307, 29.95755], + [116.868794, 29.980361], + [116.900207, 29.949253], + [116.882961, 29.893753], + [116.780715, 29.792529], + [116.762237, 29.802396], + [116.673541, 29.709916], + [116.698795, 29.707836], + [116.70557, 29.69692], + [116.706802, 29.6964], + [116.704954, 29.688602], + [116.680317, 29.681323], + [116.651983, 29.637118], + [116.716657, 29.590813], + [116.721585, 29.564789], + [116.760389, 29.599139], + [116.780715, 29.569994], + [116.849084, 29.57624], + [116.873722, 29.609546], + [116.939627, 29.648561], + [116.974736, 29.657403], + [116.996294, 29.683403], + [117.041873, 29.680803], + [117.112706, 29.711995], + [117.108395, 29.75201], + [117.136728, 29.775388], + [117.123177, 29.798761], + [117.073286, 29.831992], + [117.127489, 29.86158], + [117.129952, 29.89946], + [117.171836, 29.920729], + [117.2168, 29.926953], + [117.246365, 29.915023], + [117.261763, 29.880781], + [117.25314, 29.834588], + [117.29256, 29.822647], + [117.338756, 29.848085], + [117.359082, 29.812782], + [117.382487, 29.840818], + [117.415132, 29.85068], + [117.408973, 29.802396], + [117.455168, 29.749412], + [117.453936, 29.688082], + [117.490277, 29.660003], + [117.530313, 29.654282], + [117.523538, 29.630356], + [117.543248, 29.588731], + [117.608537, 29.591333], + [117.647957, 29.614749], + [117.678754, 29.595496], + [117.690457, 29.555939], + [117.729877, 29.550213], + [117.795167, 29.570515], + [117.872775, 29.54761], + [117.933753, 29.549172], + [118.00397, 29.578322], + [118.042774, 29.566351], + [118.050782, 29.542924], + [118.095129, 29.534072], + [118.143788, 29.489803], + [118.127774, 29.47209], + [118.136397, 29.418932], + [118.193064, 29.395472], + [118.248498, 29.431443], + [118.316252, 29.422581], + [118.306396, 29.479384], + [118.329802, 29.495012], + [118.347664, 29.474174], + [118.381541, 29.504909], + [118.496106, 29.519492], + [118.500417, 29.57572], + [118.532446, 29.588731], + [118.573714, 29.638159], + [118.61991, 29.654282], + [118.647011, 29.64336], + [118.700598, 29.706277], + [118.744945, 29.73902], + [118.740634, 29.814859], + [118.841032, 29.891159], + [118.838568, 29.934733], + [118.894619, 29.937845], + [118.902626, 30.029078], + [118.878604, 30.064822], + [118.873677, 30.11505], + [118.895234, 30.148694], + [118.852119, 30.149729], + [118.852735, 30.166805], + [118.929727, 30.2025], + [118.905089, 30.216464], + [118.877988, 30.282637], + [118.880452, 30.31519], + [118.954365, 30.360126], + [118.988857, 30.332237], + [119.06277, 30.304856], + [119.091719, 30.323972], + [119.126828, 30.304856], + [119.201356, 30.290905], + [119.236465, 30.297106], + [119.246936, 30.341018], + [119.277117, 30.341018], + [119.326392, 30.372002], + [119.349182, 30.349281], + [119.402768, 30.374584], + [119.36766, 30.38491], + [119.335015, 30.448389], + [119.336247, 30.508734], + [119.326392, 30.532964], + [119.272189, 30.510281], + [119.237081, 30.546881], + [119.265414, 30.574709], + [119.238929, 30.609225], + [119.323312, 30.630341], + [119.343022, 30.664322], + [119.39045, 30.685941], + [119.408312, 30.645274], + [119.444652, 30.650422], + [119.482841, 30.704467], + [119.479761, 30.772365], + [119.527188, 30.77905], + [119.55429, 30.825828], + [119.575847, 30.829939], + [119.557369, 30.874124], + [119.563529, 30.919315], + [119.582007, 30.932149], + [119.580159, 30.967051], + [119.633746, 31.019379], + [119.629434, 31.085517], + [119.649144, 31.104991], + [119.623891, 31.130096], + [119.599869, 31.10909], + [119.532732, 31.159291], + [119.461283, 31.156219], + [119.439109, 31.177214], + [119.391682, 31.174142], + [119.360269, 31.213049], + [119.374435, 31.258591], + [119.350414, 31.301043], + [119.338095, 31.259103], + [119.294363, 31.263195], + [119.266646, 31.250405], + [119.198277, 31.270357], + [119.197661, 31.295418], + [119.158241, 31.294907], + [119.107118, 31.250917], + [119.10527, 31.235055], + [119.014727, 31.241707], + [118.984546, 31.237102], + [118.870597, 31.242219], + [118.794836, 31.229426], + [118.756648, 31.279564], + [118.726467, 31.282121], + [118.720924, 31.322518], + [118.745561, 31.372606], + [118.767735, 31.363919], + [118.824401, 31.375672], + [118.852119, 31.393553], + [118.883532, 31.500261], + [118.857046, 31.506384], + [118.865669, 31.519139], + [118.885995, 31.519139], + [118.881684, 31.564023], + [118.858894, 31.623665], + [118.802844, 31.619078], + [118.773894, 31.682759], + [118.748025, 31.675629], + [118.736322, 31.633347], + [118.643315, 31.649651], + [118.643315, 31.671555], + [118.697518, 31.709747], + [118.653786, 31.73011], + [118.641467, 31.75861], + [118.571866, 31.746397], + [118.5577, 31.73011], + [118.521975, 31.743343], + [118.533678, 31.76726], + [118.481939, 31.778453], + [118.504729, 31.841516], + [118.466541, 31.857784], + [118.472084, 31.879639], + [118.363679, 31.930443], + [118.389548, 31.985281], + [118.394476, 32.076098], + [118.433896, 32.086746], + [118.501033, 32.121726], + [118.49549, 32.165304], + [118.510888, 32.194176], + [118.643931, 32.209875], + [118.674728, 32.250375], + [118.657482, 32.30148], + [118.703061, 32.328792], + [118.685199, 32.403604], + [118.691359, 32.472295], + [118.628533, 32.467751], + [118.592192, 32.481383], + [118.608823, 32.536899], + [118.564475, 32.562122], + [118.568787, 32.585825], + [118.59712, 32.600951], + [118.632844, 32.578261], + [118.658714, 32.594397], + [118.688895, 32.588346], + [118.719076, 32.614059], + [118.719076, 32.614059], + [118.73509, 32.58885], + [118.757264, 32.603976], + [118.784981, 32.582295], + [118.820706, 32.60448], + [118.84288, 32.56767], + [118.908169, 32.59238], + [118.890923, 32.553042], + [118.92172, 32.557078], + [118.922336, 32.557078], + [118.92172, 32.557078], + [118.922336, 32.557078], + [118.975923, 32.505108], + [119.041212, 32.515201], + [119.084944, 32.452602], + [119.142226, 32.499556], + [119.168096, 32.536394], + [119.152697, 32.557582], + [119.22045, 32.576748], + [119.230921, 32.607001], + [119.208748, 32.641276], + [119.211827, 32.708275], + [119.184726, 32.825529], + [119.113277, 32.823014], + [119.054763, 32.8748], + [119.020886, 32.955685], + [118.993169, 32.958196], + [118.934039, 32.93861], + [118.892771, 32.941121], + [118.89585, 32.957694], + [118.89585, 32.957694], + [118.849039, 32.956689], + [118.846575, 32.922034], + [118.821322, 32.920527], + [118.810235, 32.853687], + [118.743097, 32.853184], + [118.743097, 32.853184], + [118.73817, 32.772708], + [118.756648, 32.737477], + [118.707373, 32.72036], + [118.642699, 32.744525], + [118.572482, 32.719856], + [118.560163, 32.729926], + [118.483787, 32.721367], + [118.450526, 32.743518], + [118.411106, 32.715828], + [118.375382, 32.718849], + [118.363063, 32.770695], + [118.334114, 32.761637], + [118.300237, 32.783275], + [118.301469, 32.846145], + [118.250346, 32.848157], + [118.2331, 32.914498], + [118.252194, 32.936601], + [118.291614, 32.946143], + [118.303933, 32.96874], + [118.26944, 32.969242], + [118.244803, 32.998359], + [118.243571, 33.027967], + [118.219549, 33.114227], + [118.217085, 33.191888], + [118.178281, 33.217926], + [118.149332, 33.169348], + [118.038463, 33.134776], + [118.037231, 33.152314], + [117.988572, 33.180869], + [117.977485, 33.226437], + [117.942376, 33.224936], + [117.939297, 33.262475], + [117.974405, 33.279487], + [117.992883, 33.333005], + [118.029224, 33.374995], + [118.016905, 33.402978], + [118.027376, 33.455421], + [118.050782, 33.491863], + [118.107448, 33.475391], + [118.117919, 33.594615], + [118.112376, 33.617045], + [118.16781, 33.663381], + [118.161035, 33.735576], + [118.117919, 33.766427], + [118.065564, 33.76593], + [118.019985, 33.738562], + [117.972557, 33.74951], + [117.901724, 33.720146], + [117.843826, 33.736074], + [117.791471, 33.733585], + [117.750203, 33.710688], + [117.72495, 33.74951], + [117.739732, 33.758467], + [117.759442, 33.874318], + [117.753899, 33.891211], + [117.715095, 33.879287], + [117.672595, 33.934916], + [117.671363, 33.992494], + [117.629479, 34.028708], + [117.612849, 34.000433], + [117.569117, 33.985051], + [117.543248, 34.038627], + [117.514914, 34.060941], + [117.435458, 34.028212], + [117.404045, 34.03218], + [117.357234, 34.088205], + [117.311654, 34.067882], + [117.277162, 34.078787], + [117.257452, 34.065899], + [117.192162, 34.068873], + [117.130568, 34.101586], + [117.123793, 34.128342], + [117.046801, 34.151622], + [117.025243, 34.167469], + [117.051112, 34.221425], + [116.969192, 34.283753], + [116.983359, 34.348011], + [116.960569, 34.363821], + [116.969192, 34.389012], + [116.909446, 34.408271], + [116.828142, 34.389012], + [116.782563, 34.429993], + [116.773939, 34.453683], + [116.722816, 34.472434], + [116.662454, 34.472927], + [116.592237, 34.493646], + [116.594085, 34.511894], + [116.490607, 34.573513], + [116.477057, 34.614896], + [116.432709, 34.630163], + [116.430245, 34.650843], + [116.374195, 34.640011], + [116.334159, 34.620806], + [116.32492, 34.601104], + [116.286116, 34.608986], + [116.247927, 34.551829], + [116.196804, 34.575977], + [116.191261, 34.535561], + [116.204196, 34.508442], + [116.178326, 34.496112], + [116.162312, 34.459605], + [116.178942, 34.430487], + [116.215898, 34.403333], + [116.213435, 34.382098], + [116.255934, 34.376665], + [116.301514, 34.342082], + [116.357564, 34.319843], + [116.372347, 34.26595], + [116.409303, 34.273863], + [116.409303, 34.273863], + [116.456731, 34.268917], + [116.516477, 34.296114], + [116.562056, 34.285731], + [116.582382, 34.266444], + [116.545426, 34.241711], + [116.542962, 34.203608], + [116.565752, 34.16945], + [116.536187, 34.151127], + [116.52818, 34.122892], + [116.576223, 34.068873], + [116.576223, 34.068873], + [116.599629, 34.014324], + [116.599629, 34.014324] + ] + ], + [ + [ + [118.865669, 31.519139], + [118.857046, 31.506384], + [118.883532, 31.500261], + [118.885995, 31.519139], + [118.865669, 31.519139] + ] + ], + [ + [ + [116.698795, 29.707836], + [116.673541, 29.709916], + [116.653831, 29.694841], + [116.680317, 29.681323], + [116.704954, 29.688602], + [116.706802, 29.6964], + [116.70557, 29.69692], + [116.698795, 29.707836] + ] + ], + [ + [ + [115.5088, 32.468761], + [115.509416, 32.466741], + [115.510648, 32.467751], + [115.510648, 32.468256], + [115.510648, 32.468761], + [115.5088, 32.468761] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 350000, + "name": "福建省", + "center": [119.306239, 26.075302], + "centroid": [118.006468, 26.069925], + "childrenNum": 9, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 12, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [119.004872, 24.970009], + [118.989473, 24.973807], + [119.023966, 25.04377], + [119.016575, 25.058409], + [118.974691, 25.024792], + [118.945126, 25.028588], + [118.892155, 25.092558], + [118.974691, 25.115319], + [118.951901, 25.15162], + [118.985162, 25.168954], + [118.985162, 25.19495], + [118.942046, 25.211195], + [118.940198, 25.21715], + [118.943278, 25.221482], + [118.903242, 25.239347], + [118.900162, 25.242595], + [118.919256, 25.248008], + [118.91556, 25.256668], + [118.918024, 25.25721], + [118.956212, 25.272905], + [118.996864, 25.266411], + [118.975307, 25.237723], + [118.990089, 25.20199], + [119.055379, 25.219316], + [119.074473, 25.211195], + [119.054147, 25.168412], + [119.032589, 25.17437], + [119.028893, 25.139702], + [119.06585, 25.102855], + [119.075705, 25.099604], + [119.134219, 25.106107], + [119.107118, 25.075214], + [119.119436, 25.012861], + [119.146538, 25.056782], + [119.165632, 25.145661], + [119.137299, 25.15487], + [119.108349, 25.193867], + [119.131755, 25.223106], + [119.190269, 25.175995], + [119.231537, 25.188993], + [119.26911, 25.159746], + [119.314689, 25.190076], + [119.294979, 25.237182], + [119.331935, 25.230685], + [119.380595, 25.250173], + [119.333167, 25.287516], + [119.299291, 25.328634], + [119.247552, 25.333502], + [119.240776, 25.316733], + [119.218603, 25.368115], + [119.14469, 25.388121], + [119.151465, 25.426503], + [119.191501, 25.424341], + [119.232153, 25.442176], + [119.219834, 25.468654], + [119.256175, 25.488643], + [119.275269, 25.476758], + [119.26295, 25.428124], + [119.288204, 25.410827], + [119.353493, 25.411908], + [119.343638, 25.472436], + [119.359037, 25.521592], + [119.400921, 25.493505], + [119.45266, 25.493505], + [119.438493, 25.412449], + [119.463131, 25.448661], + [119.491464, 25.443257], + [119.48592, 25.418935], + [119.507478, 25.396231], + [119.486536, 25.369737], + [119.548746, 25.365952], + [119.578927, 25.400556], + [119.555521, 25.429205], + [119.577695, 25.445959], + [119.59063, 25.398394], + [119.582623, 25.374063], + [119.597405, 25.334584], + [119.649144, 25.342697], + [119.665159, 25.3719], + [119.656535, 25.396772], + [119.670086, 25.435691], + [119.622659, 25.434069], + [119.675014, 25.468113], + [119.682405, 25.445959], + [119.688564, 25.441095], + [119.773564, 25.395691], + [119.764325, 25.433529], + [119.804977, 25.457847], + [119.866571, 25.455145], + [119.864107, 25.469734], + [119.862875, 25.474597], + [119.811136, 25.507009], + [119.81668, 25.532393], + [119.861027, 25.531313], + [119.883817, 25.546432], + [119.831462, 25.579905], + [119.843165, 25.597717], + [119.790194, 25.614447], + [119.785883, 25.66786], + [119.700267, 25.616606], + [119.683637, 25.592859], + [119.716898, 25.551292], + [119.715666, 25.51187], + [119.680557, 25.497827], + [119.675014, 25.475137], + [119.634362, 25.475137], + [119.611572, 25.519972], + [119.616499, 25.556691], + [119.586934, 25.59232], + [119.534579, 25.585303], + [119.541355, 25.6247], + [119.478529, 25.631715], + [119.472986, 25.662466], + [119.543819, 25.684581], + [119.602949, 25.68512], + [119.602949, 25.714779], + [119.626354, 25.723406], + [119.628202, 25.87212], + [119.638057, 25.889888], + [119.69534, 25.904424], + [119.723673, 26.011503], + [119.700267, 26.032477], + [119.668854, 26.026024], + [119.654688, 26.090002], + [119.618963, 26.11956], + [119.604181, 26.168985], + [119.664543, 26.202282], + [119.676246, 26.262943], + [119.7711, 26.285481], + [119.802513, 26.268846], + [119.806825, 26.307479], + [119.845013, 26.323036], + [119.862875, 26.307479], + [119.904143, 26.308552], + [119.95465, 26.352534], + [119.946027, 26.374519], + [119.893672, 26.355752], + [119.835774, 26.434019], + [119.83639, 26.454381], + [119.788346, 26.583435], + [119.740303, 26.610727], + [119.670086, 26.618218], + [119.605412, 26.595744], + [119.577695, 26.622498], + [119.619579, 26.649246], + [119.637441, 26.703256], + [119.664543, 26.726243], + [119.711354, 26.686681], + [119.833926, 26.690959], + [119.864107, 26.671174], + [119.873962, 26.642827], + [119.908455, 26.661547], + [119.899216, 26.693098], + [119.938636, 26.747088], + [119.942947, 26.784492], + [120.052584, 26.786629], + [120.061824, 26.768997], + [119.99407, 26.720363], + [119.969433, 26.686681], + [119.972512, 26.654594], + [119.949107, 26.624638], + [119.901679, 26.624638], + [119.851788, 26.595209], + [119.828383, 26.524013], + [119.867187, 26.509019], + [119.947875, 26.56042], + [119.93802, 26.576478], + [119.967585, 26.597885], + [120.007621, 26.595744], + [120.063671, 26.627848], + [120.093852, 26.613938], + [120.1382, 26.638012], + [120.110483, 26.692563], + [120.162222, 26.717691], + [120.151135, 26.750829], + [120.106787, 26.752966], + [120.136352, 26.797847], + [120.103707, 26.794642], + [120.102476, 26.82669], + [120.073526, 26.823485], + [120.054432, 26.863533], + [120.117874, 26.882751], + [120.126497, 26.920644], + [120.130193, 26.917976], + [120.1807, 26.920644], + [120.233055, 26.907837], + [120.25954, 26.982526], + [120.279866, 26.987326], + [120.275554, 27.027315], + [120.29588, 27.035845], + [120.282946, 27.089671], + [120.391967, 27.081146], + [120.403054, 27.10086], + [120.461568, 27.142407], + [120.404286, 27.204166], + [120.401822, 27.250996], + [120.430155, 27.258976], + [120.343924, 27.363199], + [120.340844, 27.399867], + [120.273091, 27.38924], + [120.26262, 27.432804], + [120.221352, 27.420055], + [120.134504, 27.420055], + [120.136968, 27.402523], + [120.096316, 27.390302], + [120.052584, 27.338747], + [120.026099, 27.344063], + [120.008237, 27.375423], + [119.960194, 27.365857], + [119.938636, 27.329709], + [119.843165, 27.300464], + [119.768636, 27.307909], + [119.782187, 27.330241], + [119.739687, 27.362668], + [119.750774, 27.373829], + [119.711354, 27.403054], + [119.685485, 27.438646], + [119.703347, 27.446613], + [119.70889, 27.514042], + [119.690412, 27.537394], + [119.659615, 27.540578], + [119.675014, 27.574534], + [119.630666, 27.582491], + [119.626354, 27.620676], + [119.644217, 27.663619], + [119.606028, 27.674749], + [119.541971, 27.666799], + [119.501319, 27.649837], + [119.501935, 27.610601], + [119.466826, 27.526249], + [119.438493, 27.508734], + [119.416935, 27.539517], + [119.360269, 27.524657], + [119.334399, 27.480067], + [119.285124, 27.457766], + [119.26911, 27.42218], + [119.224146, 27.416868], + [119.14777, 27.424836], + [119.121284, 27.438115], + [119.129907, 27.475289], + [119.092335, 27.466262], + [119.03998, 27.478475], + [119.020886, 27.498118], + [118.983314, 27.498649], + [118.986393, 27.47582], + [118.955597, 27.4498], + [118.907553, 27.460952], + [118.869365, 27.540047], + [118.909401, 27.568168], + [118.913713, 27.619616], + [118.879836, 27.667859], + [118.873677, 27.733563], + [118.829329, 27.847921], + [118.818242, 27.916689], + [118.753568, 27.947885], + [118.730163, 27.970615], + [118.733858, 28.027684], + [118.719076, 28.063601], + [118.767735, 28.10584], + [118.802228, 28.117453], + [118.805923, 28.154923], + [118.771431, 28.188687], + [118.804075, 28.207675], + [118.802228, 28.240368], + [118.756032, 28.252493], + [118.719692, 28.312047], + [118.699366, 28.309939], + [118.674728, 28.27147], + [118.651322, 28.277267], + [118.595272, 28.258292], + [118.588497, 28.282538], + [118.493026, 28.262509], + [118.490562, 28.238259], + [118.444367, 28.253548], + [118.433896, 28.288335], + [118.424041, 28.291497], + [118.314404, 28.221913], + [118.339041, 28.193962], + [118.375382, 28.186577], + [118.361215, 28.155978], + [118.356288, 28.091586], + [118.242339, 28.075746], + [118.199839, 28.049869], + [118.153644, 28.062016], + [118.120999, 28.041946], + [118.129006, 28.017118], + [118.094513, 28.003909], + [118.096977, 27.970615], + [117.999043, 27.991227], + [117.965166, 27.962687], + [117.942992, 27.974315], + [117.910963, 27.949471], + [117.856145, 27.94577], + [117.78716, 27.896063], + [117.788392, 27.855858], + [117.740348, 27.800286], + [117.704624, 27.834162], + [117.68245, 27.823577], + [117.649805, 27.851625], + [117.609769, 27.863265], + [117.556182, 27.966387], + [117.52169, 27.982243], + [117.477958, 27.930966], + [117.453936, 27.939955], + [117.407741, 27.893948], + [117.366473, 27.88231], + [117.341836, 27.855858], + [117.334444, 27.8876], + [117.280242, 27.871201], + [117.276546, 27.847921], + [117.303031, 27.833103], + [117.296256, 27.764282], + [117.245133, 27.71926], + [117.205097, 27.714492], + [117.204481, 27.683759], + [117.174916, 27.677399], + [117.114554, 27.692238], + [117.096076, 27.667329], + [117.11209, 27.645596], + [117.094228, 27.627569], + [117.065279, 27.665739], + [117.040641, 27.669979], + [117.003685, 27.625449], + [117.024627, 27.592569], + [117.01662, 27.563393], + [117.054808, 27.5427], + [117.076982, 27.566046], + [117.103467, 27.533149], + [117.110242, 27.458828], + [117.133032, 27.42218], + [117.107163, 27.393491], + [117.104699, 27.330773], + [117.140423, 27.322798], + [117.136728, 27.303123], + [117.171836, 27.29036], + [117.149662, 27.241419], + [117.044953, 27.146667], + [117.05296, 27.100327], + [116.967344, 27.061962], + [116.936547, 27.019319], + [116.910062, 27.034779], + [116.851548, 27.009188], + [116.817671, 27.018252], + [116.679085, 26.978259], + [116.632889, 26.933984], + [116.602092, 26.888623], + [116.548506, 26.84004], + [116.543578, 26.803723], + [116.557745, 26.773806], + [116.515245, 26.720898], + [116.520172, 26.684543], + [116.566368, 26.650315], + [116.553433, 26.575942], + [116.539267, 26.559349], + [116.597165, 26.512768], + [116.610716, 26.476882], + [116.638433, 26.477418], + [116.608252, 26.429732], + [116.601476, 26.372911], + [116.553433, 26.365404], + [116.553433, 26.400253], + [116.519557, 26.410437], + [116.499846, 26.361651], + [116.459194, 26.345026], + [116.437021, 26.308016], + [116.412999, 26.297822], + [116.385282, 26.238253], + [116.400064, 26.202819], + [116.392057, 26.171133], + [116.435789, 26.159854], + [116.476441, 26.172745], + [116.489375, 26.113649], + [116.384666, 26.030864], + [116.360028, 25.991601], + [116.369883, 25.963088], + [116.326152, 25.956631], + [116.303362, 25.924341], + [116.258398, 25.902809], + [116.225138, 25.908731], + [116.17771, 25.894195], + [116.132131, 25.860273], + [116.131515, 25.824185], + [116.18079, 25.778926], + [116.129667, 25.758985], + [116.106877, 25.701299], + [116.067457, 25.703995], + [116.068689, 25.646282], + [116.041588, 25.62416], + [116.063145, 25.56317], + [116.040356, 25.548052], + [116.03666, 25.514571], + [116.005247, 25.490264], + [116.023109, 25.435691], + [115.992928, 25.374063], + [116.008327, 25.319437], + [115.987385, 25.290221], + [115.949813, 25.292386], + [115.930719, 25.236099], + [115.855574, 25.20957], + [115.860501, 25.165704], + [115.888219, 25.128866], + [115.880212, 25.092016], + [115.908545, 25.084428], + [115.928255, 25.050276], + [115.873436, 25.019911], + [115.925175, 24.960786], + [115.870356, 24.959701], + [115.89253, 24.936911], + [115.907929, 24.923343], + [115.985537, 24.899461], + [116.015102, 24.905975], + [116.068073, 24.850053], + [116.153073, 24.846795], + [116.191877, 24.877203], + [116.221442, 24.829959], + [116.251007, 24.82507], + [116.244232, 24.793563], + [116.297202, 24.801712], + [116.345862, 24.828872], + [116.363724, 24.87123], + [116.395137, 24.877746], + [116.417927, 24.840821], + [116.381586, 24.82507], + [116.375427, 24.803885], + [116.419158, 24.767482], + [116.416079, 24.744113], + [116.44626, 24.714216], + [116.485064, 24.720196], + [116.517709, 24.652225], + [116.506622, 24.621218], + [116.530027, 24.604895], + [116.570679, 24.621762], + [116.600861, 24.654401], + [116.623034, 24.64189], + [116.667382, 24.658752], + [116.777635, 24.679418], + [116.815207, 24.654944], + [116.761005, 24.583128], + [116.759157, 24.545572], + [116.796729, 24.502014], + [116.83307, 24.496568], + [116.860787, 24.460075], + [116.839229, 24.442097], + [116.903903, 24.369614], + [116.895895, 24.350533], + [116.919301, 24.321087], + [116.914374, 24.287817], + [116.938395, 24.28127], + [116.933468, 24.220157], + [116.956257, 24.216883], + [116.998757, 24.179217], + [116.9347, 24.126794], + [116.930388, 24.064514], + [116.953178, 24.008218], + [116.981511, 23.999471], + [116.976583, 23.931659], + [116.955642, 23.922359], + [116.981511, 23.855602], + [117.012308, 23.855054], + [117.019083, 23.801952], + [117.048032, 23.758687], + [117.055424, 23.694038], + [117.123793, 23.647448], + [117.147199, 23.654027], + [117.192778, 23.629356], + [117.192778, 23.5619], + [117.291328, 23.571225], + [117.302415, 23.550379], + [117.387415, 23.555317], + [117.463791, 23.584937], + [117.454552, 23.628259], + [117.493357, 23.642514], + [117.501364, 23.70445], + [117.54448, 23.715956], + [117.601762, 23.70171], + [117.660276, 23.789357], + [117.651653, 23.815093], + [117.671979, 23.878041], + [117.691073, 23.888985], + [117.762522, 23.886796], + [117.792703, 23.906494], + [117.807486, 23.947521], + [117.864768, 24.004938], + [117.910347, 24.012045], + [117.927594, 24.039922], + [117.936217, 24.100029], + [118.000275, 24.152462], + [118.019369, 24.197232], + [118.074803, 24.225615], + [118.115455, 24.229435], + [118.158571, 24.269814], + [118.112376, 24.357075], + [118.081579, 24.35653], + [118.088354, 24.408858], + [118.048934, 24.418122], + [118.084042, 24.528695], + [118.121615, 24.570067], + [118.150564, 24.583673], + [118.169042, 24.559725], + [118.242955, 24.51236], + [118.375382, 24.536317], + [118.363679, 24.567889], + [118.444367, 24.614689], + [118.512736, 24.60816], + [118.557084, 24.572788], + [118.558316, 24.51236], + [118.614366, 24.521617], + [118.680272, 24.58204], + [118.687047, 24.63373], + [118.661178, 24.622306], + [118.652554, 24.653857], + [118.670417, 24.679962], + [118.703677, 24.665278], + [118.778822, 24.743569], + [118.786213, 24.77672], + [118.650707, 24.808774], + [118.647627, 24.843536], + [118.702445, 24.865258], + [118.69875, 24.848967], + [118.748641, 24.84245], + [118.807771, 24.870687], + [118.834256, 24.854397], + [118.864437, 24.887518], + [118.933423, 24.870687], + [118.988857, 24.878831], + [118.987009, 24.898375], + [118.932807, 24.906518], + [118.91864, 24.932569], + [118.945741, 24.954275], + [119.014111, 24.941252], + [119.032589, 24.961328], + [119.032589, 24.961871], + [119.007335, 24.963499], + [119.004872, 24.970009] + ] + ], + [ + [ + [118.412338, 24.514538], + [118.374766, 24.458986], + [118.318715, 24.486765], + [118.298389, 24.477506], + [118.31194, 24.424661], + [118.282375, 24.413218], + [118.329802, 24.382152], + [118.353208, 24.415398], + [118.405563, 24.427931], + [118.457918, 24.412128], + [118.477012, 24.437738], + [118.451758, 24.506915], + [118.412338, 24.514538] + ] + ], + [ + [ + [119.471138, 25.197116], + [119.507478, 25.183036], + [119.52534, 25.157579], + [119.549362, 25.161912], + [119.566608, 25.210112], + [119.540739, 25.20199], + [119.501319, 25.21715], + [119.473601, 25.259916], + [119.44342, 25.238806], + [119.444036, 25.20199], + [119.471138, 25.197116] + ] + ], + [ + [ + [119.580159, 25.627398], + [119.611572, 25.669479], + [119.580775, 25.650059], + [119.580159, 25.627398] + ] + ], + [ + [ + [119.976824, 26.191005], + [120.016244, 26.217316], + [119.998998, 26.235569], + [119.970665, 26.217852], + [119.976824, 26.191005] + ] + ], + [ + [ + [118.230636, 24.401228], + [118.273752, 24.441007], + [118.233716, 24.445911], + [118.230636, 24.401228] + ] + ], + [ + [ + [119.906607, 26.68989], + [119.926933, 26.664756], + [119.950954, 26.692563], + [119.906607, 26.68989] + ] + ], + [ + [ + [118.204151, 24.504737], + [118.191832, 24.536861], + [118.14502, 24.560814], + [118.093281, 24.540672], + [118.068644, 24.463344], + [118.084042, 24.435559], + [118.143173, 24.420847], + [118.19368, 24.463344], + [118.204151, 24.504737] + ] + ], + [ + [ + [119.929397, 26.134067], + [119.960194, 26.146961], + [119.919542, 26.172208], + [119.929397, 26.134067] + ] + ], + [ + [ + [119.642985, 26.129231], + [119.665159, 26.155556], + [119.62697, 26.173282], + [119.606028, 26.15287], + [119.642985, 26.129231] + ] + ], + [ + [ + [120.034106, 26.488667], + [120.066751, 26.498308], + [120.071679, 26.521336], + [120.035954, 26.515981], + [120.034106, 26.488667] + ] + ], + [ + [ + [119.662079, 25.646822], + [119.673782, 25.632794], + [119.718745, 25.634952], + [119.716898, 25.664624], + [119.662079, 25.646822] + ] + ], + [ + [ + [119.760629, 26.613402], + [119.776644, 26.600025], + [119.818527, 26.616613], + [119.796354, 26.630523], + [119.760629, 26.613402] + ] + ], + [ + [ + [120.135736, 26.550784], + [120.167149, 26.571661], + [120.153598, 26.604841], + [120.117874, 26.568984], + [120.135736, 26.550784] + ] + ], + [ + [ + [120.360554, 26.916909], + [120.394431, 26.933984], + [120.363018, 26.967592], + [120.327909, 26.963858], + [120.319286, 26.944654], + [120.360554, 26.916909] + ] + ], + [ + [ + [120.150519, 26.798916], + [120.140048, 26.795176], + [120.163454, 26.798381], + [120.161606, 26.803189], + [120.150519, 26.798916] + ] + ], + [ + [ + [119.668238, 26.628383], + [119.720593, 26.635873], + [119.758781, 26.659408], + [119.748926, 26.681334], + [119.712586, 26.6685], + [119.673782, 26.680799], + [119.651608, 26.657269], + [119.668238, 26.628383] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 360000, + "name": "江西省", + "center": [115.892151, 28.676493], + "centroid": [115.732975, 27.636112], + "childrenNum": 11, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 13, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [118.193064, 29.395472], + [118.136397, 29.418932], + [118.127774, 29.47209], + [118.143788, 29.489803], + [118.095129, 29.534072], + [118.050782, 29.542924], + [118.042774, 29.566351], + [118.00397, 29.578322], + [117.933753, 29.549172], + [117.872775, 29.54761], + [117.795167, 29.570515], + [117.729877, 29.550213], + [117.690457, 29.555939], + [117.678754, 29.595496], + [117.647957, 29.614749], + [117.608537, 29.591333], + [117.543248, 29.588731], + [117.523538, 29.630356], + [117.530313, 29.654282], + [117.490277, 29.660003], + [117.453936, 29.688082], + [117.455168, 29.749412], + [117.408973, 29.802396], + [117.415132, 29.85068], + [117.382487, 29.840818], + [117.359082, 29.812782], + [117.338756, 29.848085], + [117.29256, 29.822647], + [117.25314, 29.834588], + [117.261763, 29.880781], + [117.246365, 29.915023], + [117.2168, 29.926953], + [117.171836, 29.920729], + [117.129952, 29.89946], + [117.127489, 29.86158], + [117.073286, 29.831992], + [117.123177, 29.798761], + [117.136728, 29.775388], + [117.108395, 29.75201], + [117.112706, 29.711995], + [117.041873, 29.680803], + [116.996294, 29.683403], + [116.974736, 29.657403], + [116.939627, 29.648561], + [116.873722, 29.609546], + [116.849084, 29.57624], + [116.780715, 29.569994], + [116.760389, 29.599139], + [116.721585, 29.564789], + [116.716657, 29.590813], + [116.651983, 29.637118], + [116.680317, 29.681323], + [116.653831, 29.694841], + [116.673541, 29.709916], + [116.762237, 29.802396], + [116.780715, 29.792529], + [116.882961, 29.893753], + [116.900207, 29.949253], + [116.868794, 29.980361], + [116.83307, 29.95755], + [116.830606, 30.004723], + [116.802889, 29.99643], + [116.783794, 30.030632], + [116.747454, 30.057053], + [116.720353, 30.053945], + [116.666766, 30.076734], + [116.620571, 30.073109], + [116.585462, 30.045657], + [116.552201, 29.909836], + [116.525716, 29.897385], + [116.467818, 29.896347], + [116.342782, 29.835626], + [116.280572, 29.788893], + [116.250391, 29.785777], + [116.227601, 29.816936], + [116.172783, 29.828358], + [116.13521, 29.819532], + [116.087167, 29.795125], + [116.049595, 29.761881], + [115.965827, 29.724469], + [115.909777, 29.723949], + [115.837096, 29.748373], + [115.762567, 29.793048], + [115.706517, 29.837703], + [115.667712, 29.850161], + [115.611662, 29.841337], + [115.51188, 29.840299], + [115.479235, 29.811224], + [115.470612, 29.739539], + [115.412714, 29.688602], + [115.355431, 29.649602], + [115.304924, 29.637118], + [115.28583, 29.618391], + [115.250722, 29.660003], + [115.176809, 29.654803], + [115.113367, 29.684963], + [115.117679, 29.655843], + [115.143548, 29.645961], + [115.120142, 29.597578], + [115.157099, 29.584568], + [115.154019, 29.510117], + [115.086266, 29.525741], + [115.087498, 29.560104], + [115.033295, 29.546568], + [115.00065, 29.572076], + [114.947679, 29.542924], + [114.966773, 29.522096], + [114.940288, 29.493971], + [114.900868, 29.505951], + [114.860216, 29.476258], + [114.888549, 29.436134], + [114.918114, 29.454374], + [114.90518, 29.473132], + [114.935977, 29.486678], + [114.947063, 29.465317], + [114.931049, 29.422581], + [114.895325, 29.397557], + [114.866375, 29.404335], + [114.812173, 29.383478], + [114.784455, 29.386086], + [114.759818, 29.363139], + [114.740724, 29.386607], + [114.67297, 29.395993], + [114.621847, 29.379828], + [114.589819, 29.352707], + [114.519602, 29.325578], + [114.466015, 29.324013], + [114.440145, 29.341752], + [114.376088, 29.322969], + [114.341595, 29.327665], + [114.307102, 29.365225], + [114.259059, 29.343839], + [114.252284, 29.23475], + [114.169748, 29.216993], + [114.063191, 29.204978], + [114.034857, 29.152204], + [113.98743, 29.126068], + [113.952321, 29.092604], + [113.94185, 29.047097], + [113.961561, 28.999476], + [113.955401, 28.978536], + [113.973879, 28.937692], + [114.008988, 28.955498], + [114.005292, 28.917788], + [114.028082, 28.891069], + [114.060111, 28.902596], + [114.056415, 28.872204], + [114.076741, 28.834464], + [114.124784, 28.843376], + [114.153734, 28.829221], + [114.137719, 28.779926], + [114.157429, 28.761566], + [114.122321, 28.623497], + [114.132176, 28.607211], + [114.08598, 28.558337], + [114.138335, 28.533629], + [114.15435, 28.507337], + [114.218407, 28.48472], + [114.217175, 28.466308], + [114.172212, 28.432632], + [114.214712, 28.403157], + [114.252284, 28.395787], + [114.2529, 28.319423], + [114.198081, 28.29097], + [114.182067, 28.249858], + [114.143879, 28.246694], + [114.109386, 28.205038], + [114.107538, 28.182885], + [114.068734, 28.171806], + [114.012068, 28.174972], + [113.992357, 28.161255], + [114.025002, 28.080499], + [114.047176, 28.057263], + [114.025618, 28.031382], + [113.970184, 28.041418], + [113.966488, 28.017646], + [113.936307, 28.018703], + [113.914133, 27.991227], + [113.864242, 28.004966], + [113.845148, 27.971672], + [113.822974, 27.982243], + [113.752141, 27.93361], + [113.72812, 27.874904], + [113.756453, 27.860091], + [113.763228, 27.799228], + [113.69917, 27.740979], + [113.696707, 27.71979], + [113.652359, 27.663619], + [113.607395, 27.625449], + [113.608627, 27.585143], + [113.579062, 27.545354], + [113.583374, 27.524657], + [113.627105, 27.49971], + [113.591381, 27.467855], + [113.59754, 27.428554], + [113.632033, 27.40518], + [113.605548, 27.38924], + [113.616635, 27.345658], + [113.657902, 27.347253], + [113.699786, 27.331836], + [113.72812, 27.350442], + [113.872865, 27.384988], + [113.872865, 27.346721], + [113.854387, 27.30525], + [113.872865, 27.289828], + [113.846996, 27.222262], + [113.779242, 27.137081], + [113.771851, 27.096598], + [113.803264, 27.099261], + [113.824206, 27.036378], + [113.86301, 27.018252], + [113.892575, 26.964925], + [113.927068, 26.948922], + [113.890112, 26.895562], + [113.877177, 26.859262], + [113.835909, 26.806394], + [113.853771, 26.769532], + [113.860546, 26.664221], + [113.912901, 26.613938], + [113.996669, 26.615543], + [114.019459, 26.587182], + [114.10877, 26.56952], + [114.07243, 26.480096], + [114.110002, 26.482775], + [114.090292, 26.455988], + [114.085364, 26.406149], + [114.062575, 26.406149], + [114.030546, 26.376664], + [114.047792, 26.337518], + [114.021307, 26.288701], + [114.029314, 26.266163], + [113.978807, 26.237716], + [113.972647, 26.20604], + [113.949242, 26.192616], + [113.962792, 26.150722], + [114.013299, 26.184023], + [114.088444, 26.168448], + [114.102611, 26.187783], + [114.181451, 26.214631], + [114.216559, 26.203355], + [114.237501, 26.152333], + [114.188842, 26.121172], + [114.10569, 26.097526], + [114.121089, 26.085702], + [114.087828, 26.06635], + [114.044096, 26.076564], + [114.008372, 26.015806], + [114.028082, 25.98138], + [114.028082, 25.893119], + [113.971416, 25.836036], + [113.961561, 25.77731], + [113.920293, 25.741197], + [113.913517, 25.701299], + [113.957249, 25.611749], + [113.983118, 25.599336], + [113.986198, 25.529153], + [113.962792, 25.528072], + [113.94493, 25.441635], + [114.003444, 25.442716], + [113.983118, 25.415152], + [114.050256, 25.36433], + [114.029314, 25.328093], + [114.017611, 25.273987], + [114.039785, 25.250714], + [114.055799, 25.277775], + [114.083517, 25.275611], + [114.115545, 25.302125], + [114.190074, 25.316733], + [114.204857, 25.29942], + [114.260291, 25.291845], + [114.2954, 25.299961], + [114.31511, 25.33837], + [114.382863, 25.317274], + [114.43029, 25.343779], + [114.438914, 25.376226], + [114.477718, 25.37136], + [114.541159, 25.416773], + [114.599674, 25.385959], + [114.63663, 25.324306], + [114.714238, 25.315651], + [114.743188, 25.274528], + [114.73518, 25.225813], + [114.693912, 25.213902], + [114.685905, 25.173287], + [114.73518, 25.155954], + [114.735796, 25.121822], + [114.664963, 25.10123], + [114.640326, 25.074129], + [114.604601, 25.083886], + [114.561485, 25.077382], + [114.532536, 25.022623], + [114.506051, 24.999844], + [114.45616, 24.99659], + [114.454928, 24.977062], + [114.395798, 24.951019], + [114.403189, 24.877746], + [114.378551, 24.861457], + [114.342211, 24.807145], + [114.336052, 24.749004], + [114.281849, 24.724001], + [114.27261, 24.700624], + [114.169132, 24.689749], + [114.19069, 24.656576], + [114.258443, 24.641346], + [114.289856, 24.619042], + [114.300943, 24.578775], + [114.363769, 24.582584], + [114.391486, 24.563535], + [114.403189, 24.497657], + [114.429058, 24.48622], + [114.534384, 24.559181], + [114.589819, 24.537406], + [114.627391, 24.576598], + [114.664963, 24.583673], + [114.704999, 24.525973], + [114.73826, 24.565168], + [114.729637, 24.608704], + [114.781376, 24.613057], + [114.827571, 24.588026], + [114.846665, 24.602719], + [114.868839, 24.562446], + [114.893477, 24.582584], + [114.909491, 24.661471], + [114.940288, 24.650049], + [115.00373, 24.679418], + [115.024672, 24.669085], + [115.057317, 24.703343], + [115.083802, 24.699537], + [115.104744, 24.667997], + [115.1842, 24.711498], + [115.258729, 24.728894], + [115.269816, 24.749548], + [115.306772, 24.758787], + [115.358511, 24.735416], + [115.372678, 24.774546], + [115.412714, 24.79302], + [115.476771, 24.762591], + [115.522967, 24.702799], + [115.555611, 24.683768], + [115.569778, 24.622306], + [115.605503, 24.62557], + [115.671408, 24.604895], + [115.68927, 24.545027], + [115.752712, 24.546116], + [115.785357, 24.567345], + [115.843871, 24.562446], + [115.840791, 24.584217], + [115.797676, 24.628834], + [115.780429, 24.663103], + [115.801371, 24.705517], + [115.769342, 24.708236], + [115.756408, 24.749004], + [115.776734, 24.774546], + [115.764415, 24.791933], + [115.790284, 24.856027], + [115.807531, 24.862543], + [115.824161, 24.909232], + [115.863581, 24.891318], + [115.861733, 24.863629], + [115.907313, 24.879917], + [115.885139, 24.898918], + [115.89253, 24.936911], + [115.870356, 24.959701], + [115.925175, 24.960786], + [115.873436, 25.019911], + [115.928255, 25.050276], + [115.908545, 25.084428], + [115.880212, 25.092016], + [115.888219, 25.128866], + [115.860501, 25.165704], + [115.855574, 25.20957], + [115.930719, 25.236099], + [115.949813, 25.292386], + [115.987385, 25.290221], + [116.008327, 25.319437], + [115.992928, 25.374063], + [116.023109, 25.435691], + [116.005247, 25.490264], + [116.03666, 25.514571], + [116.040356, 25.548052], + [116.063145, 25.56317], + [116.041588, 25.62416], + [116.068689, 25.646282], + [116.067457, 25.703995], + [116.106877, 25.701299], + [116.129667, 25.758985], + [116.18079, 25.778926], + [116.131515, 25.824185], + [116.132131, 25.860273], + [116.17771, 25.894195], + [116.225138, 25.908731], + [116.258398, 25.902809], + [116.303362, 25.924341], + [116.326152, 25.956631], + [116.369883, 25.963088], + [116.360028, 25.991601], + [116.384666, 26.030864], + [116.489375, 26.113649], + [116.476441, 26.172745], + [116.435789, 26.159854], + [116.392057, 26.171133], + [116.400064, 26.202819], + [116.385282, 26.238253], + [116.412999, 26.297822], + [116.437021, 26.308016], + [116.459194, 26.345026], + [116.499846, 26.361651], + [116.519557, 26.410437], + [116.553433, 26.400253], + [116.553433, 26.365404], + [116.601476, 26.372911], + [116.608252, 26.429732], + [116.638433, 26.477418], + [116.610716, 26.476882], + [116.597165, 26.512768], + [116.539267, 26.559349], + [116.553433, 26.575942], + [116.566368, 26.650315], + [116.520172, 26.684543], + [116.515245, 26.720898], + [116.557745, 26.773806], + [116.543578, 26.803723], + [116.548506, 26.84004], + [116.602092, 26.888623], + [116.632889, 26.933984], + [116.679085, 26.978259], + [116.817671, 27.018252], + [116.851548, 27.009188], + [116.910062, 27.034779], + [116.936547, 27.019319], + [116.967344, 27.061962], + [117.05296, 27.100327], + [117.044953, 27.146667], + [117.149662, 27.241419], + [117.171836, 27.29036], + [117.136728, 27.303123], + [117.140423, 27.322798], + [117.104699, 27.330773], + [117.107163, 27.393491], + [117.133032, 27.42218], + [117.110242, 27.458828], + [117.103467, 27.533149], + [117.076982, 27.566046], + [117.054808, 27.5427], + [117.01662, 27.563393], + [117.024627, 27.592569], + [117.003685, 27.625449], + [117.040641, 27.669979], + [117.065279, 27.665739], + [117.094228, 27.627569], + [117.11209, 27.645596], + [117.096076, 27.667329], + [117.114554, 27.692238], + [117.174916, 27.677399], + [117.204481, 27.683759], + [117.205097, 27.714492], + [117.245133, 27.71926], + [117.296256, 27.764282], + [117.303031, 27.833103], + [117.276546, 27.847921], + [117.280242, 27.871201], + [117.334444, 27.8876], + [117.341836, 27.855858], + [117.366473, 27.88231], + [117.407741, 27.893948], + [117.453936, 27.939955], + [117.477958, 27.930966], + [117.52169, 27.982243], + [117.556182, 27.966387], + [117.609769, 27.863265], + [117.649805, 27.851625], + [117.68245, 27.823577], + [117.704624, 27.834162], + [117.740348, 27.800286], + [117.788392, 27.855858], + [117.78716, 27.896063], + [117.856145, 27.94577], + [117.910963, 27.949471], + [117.942992, 27.974315], + [117.965166, 27.962687], + [117.999043, 27.991227], + [118.096977, 27.970615], + [118.094513, 28.003909], + [118.129006, 28.017118], + [118.120999, 28.041946], + [118.153644, 28.062016], + [118.199839, 28.049869], + [118.242339, 28.075746], + [118.356288, 28.091586], + [118.361215, 28.155978], + [118.375382, 28.186577], + [118.339041, 28.193962], + [118.314404, 28.221913], + [118.424041, 28.291497], + [118.433896, 28.288335], + [118.480091, 28.327325], + [118.455454, 28.384204], + [118.432048, 28.402104], + [118.456686, 28.424738], + [118.474548, 28.478934], + [118.414802, 28.497344], + [118.4302, 28.515225], + [118.412338, 28.55676], + [118.428352, 28.617193], + [118.428352, 28.617193], + [118.428352, 28.681267], + [118.403099, 28.702791], + [118.364295, 28.813491], + [118.300237, 28.826075], + [118.270056, 28.918836], + [118.195527, 28.904167], + [118.227556, 28.942406], + [118.165346, 28.986912], + [118.133933, 28.983771], + [118.115455, 29.009944], + [118.115455, 29.009944], + [118.097593, 28.998952], + [118.066796, 29.053898], + [118.076035, 29.074822], + [118.037847, 29.102017], + [118.045238, 29.149068], + [118.027992, 29.167882], + [118.042159, 29.210202], + [118.073571, 29.216993], + [118.077883, 29.290614], + [118.138861, 29.283828], + [118.178281, 29.297921], + [118.166578, 29.314099], + [118.205382, 29.343839], + [118.193064, 29.395472] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 370000, + "name": "山东省", + "center": [117.000923, 36.675807], + "centroid": [118.187759, 36.376092], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 14, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [116.374195, 34.640011], + [116.392057, 34.710391], + [116.363724, 34.715311], + [116.369267, 34.749247], + [116.403144, 34.756131], + [116.408071, 34.850972], + [116.445028, 34.895652], + [116.557745, 34.908905], + [116.613795, 34.922645], + [116.622418, 34.939818], + [116.677853, 34.939327], + [116.781331, 34.916757], + [116.789338, 34.975133], + [116.815823, 34.965324], + [116.821983, 34.929515], + [116.858323, 34.928533], + [116.922381, 34.894671], + [116.929156, 34.843114], + [116.966113, 34.844588], + [116.979047, 34.815113], + [116.95133, 34.81069], + [116.969192, 34.771864], + [117.022163, 34.759081], + [117.070206, 34.713835], + [117.061583, 34.675947], + [117.073286, 34.639026], + [117.104083, 34.648874], + [117.15151, 34.559222], + [117.139191, 34.526687], + [117.166293, 34.434435], + [117.248213, 34.451216], + [117.252524, 34.48674], + [117.27285, 34.499565], + [117.267923, 34.532603], + [117.303647, 34.542463], + [117.27285, 34.556757], + [117.311654, 34.561686], + [117.311654, 34.561686], + [117.32151, 34.566614], + [117.32151, 34.566614], + [117.325205, 34.573021], + [117.325205, 34.573021], + [117.370785, 34.584846], + [117.402813, 34.569571], + [117.402813, 34.550843], + [117.465023, 34.484767], + [117.53832, 34.467006], + [117.592523, 34.462566], + [117.609769, 34.490686], + [117.659044, 34.501044], + [117.684298, 34.547392], + [117.801942, 34.518798], + [117.791471, 34.583368], + [117.793935, 34.651827], + [117.902956, 34.644443], + [117.909732, 34.670533], + [117.951615, 34.678408], + [118.053861, 34.650843], + [118.084042, 34.655766], + [118.114839, 34.614404], + [118.079115, 34.569571], + [118.185056, 34.543942], + [118.16473, 34.50499], + [118.132702, 34.483287], + [118.177665, 34.45319], + [118.179513, 34.379628], + [118.217701, 34.379134], + [118.220165, 34.405802], + [118.277447, 34.404814], + [118.290382, 34.424563], + [118.379693, 34.415183], + [118.404947, 34.427525], + [118.416034, 34.473914], + [118.439439, 34.507949], + [118.424657, 34.595193], + [118.439439, 34.626223], + [118.473932, 34.623269], + [118.460997, 34.656258], + [118.545997, 34.705964], + [118.601431, 34.714327], + [118.607591, 34.694155], + [118.664257, 34.693663], + [118.690127, 34.678408], + [118.739402, 34.693663], + [118.783749, 34.723181], + [118.764039, 34.740396], + [118.719076, 34.745313], + [118.739402, 34.792508], + [118.772047, 34.794474], + [118.80038, 34.843114], + [118.805307, 34.87307], + [118.860742, 34.944233], + [118.86259, 35.025626], + [118.928495, 35.051106], + [118.942662, 35.040817], + [119.027045, 35.055516], + [119.114509, 35.055026], + [119.137915, 35.096167], + [119.217371, 35.106939], + [119.250016, 35.124562], + [119.286972, 35.115261], + [119.306066, 35.076578], + [119.354109, 35.080007], + [119.373819, 35.078538], + [119.428022, 35.121136], + [119.397841, 35.137777], + [119.411392, 35.231689], + [119.450812, 35.285443], + [119.493312, 35.318655], + [119.538275, 35.296678], + [119.543819, 35.347949], + [119.590014, 35.37284], + [119.579543, 35.406504], + [119.618963, 35.459655], + [119.663311, 35.562931], + [119.662079, 35.589215], + [119.718129, 35.615492], + [119.75139, 35.617924], + [119.772332, 35.578995], + [119.780339, 35.584835], + [119.792658, 35.615492], + [119.824071, 35.646136], + [119.83023, 35.620357], + [119.868419, 35.60868], + [119.925085, 35.637382], + [119.91215, 35.660725], + [119.950339, 35.729741], + [119.920157, 35.739943], + [119.926317, 35.759856], + [119.958346, 35.760342], + [120.01378, 35.714193], + [120.049505, 35.786562], + [120.032258, 35.812288], + [120.064287, 35.873414], + [120.112331, 35.885052], + [120.125265, 35.906868], + [120.152983, 35.907353], + [120.207801, 35.947575], + [120.169613, 35.888446], + [120.202258, 35.89184], + [120.209033, 35.917531], + [120.265699, 35.966468], + [120.30512, 35.971796], + [120.316206, 36.002304], + [120.289721, 36.017311], + [120.285409, 36.01247], + [120.249069, 35.992136], + [120.257076, 36.025055], + [120.198562, 35.995525], + [120.234902, 36.030863], + [120.239214, 36.062316], + [120.181316, 36.066669], + [120.152367, 36.095206], + [120.116642, 36.102943], + [120.108635, 36.127599], + [120.142512, 36.143549], + [120.140664, 36.173507], + [120.181316, 36.203936], + [120.22012, 36.209248], + [120.224432, 36.19138], + [120.260772, 36.198624], + [120.263236, 36.182202], + [120.310047, 36.185101], + [120.297112, 36.225664], + [120.319902, 36.232423], + [120.362402, 36.196209], + [120.35809, 36.174956], + [120.286025, 36.047317], + [120.337764, 36.055058], + [120.429539, 36.056994], + [120.468959, 36.087952], + [120.546568, 36.091821], + [120.546568, 36.107778], + [120.593995, 36.100525], + [120.615553, 36.120348], + [120.64327, 36.114547], + [120.672835, 36.130016], + [120.712255, 36.126632], + [120.696857, 36.15563], + [120.696857, 36.203936], + [120.680843, 36.238698], + [120.686386, 36.279234], + [120.657437, 36.276339], + [120.66298, 36.331803], + [120.744284, 36.327946], + [120.694393, 36.390118], + [120.759683, 36.46283], + [120.828668, 36.46668], + [120.837291, 36.459942], + [120.858849, 36.424797], + [120.848994, 36.403124], + [120.871784, 36.36699], + [120.911204, 36.412276], + [120.917979, 36.417573], + [120.90874, 36.450315], + [120.938305, 36.447908], + [120.965407, 36.466199], + [120.95432, 36.507578], + [120.983269, 36.546051], + [120.962327, 36.562877], + [120.909972, 36.568645], + [120.884718, 36.601323], + [120.847146, 36.618617], + [120.882255, 36.627262], + [120.926602, 36.611892], + [120.955551, 36.575855], + [121.028848, 36.572971], + [121.078123, 36.607568], + [121.161275, 36.651273], + [121.251818, 36.671436], + [121.29863, 36.702151], + [121.31218, 36.702151], + [121.35776, 36.713186], + [121.400876, 36.701191], + [121.3941, 36.738129], + [121.454462, 36.752515], + [121.496962, 36.795179], + [121.506817, 36.803805], + [121.565331, 36.830635], + [121.548701, 36.807638], + [121.485259, 36.786073], + [121.532071, 36.73621], + [121.575186, 36.740047], + [121.556092, 36.764502], + [121.651563, 36.723739], + [121.631853, 36.80093], + [121.6762, 36.819137], + [121.726092, 36.826323], + [121.762432, 36.84644], + [121.767975, 36.874691], + [121.927504, 36.932597], + [121.965076, 36.938337], + [122.008808, 36.96225], + [122.042684, 36.871819], + [122.051923, 36.904846], + [122.093191, 36.913938], + [122.115981, 36.94025], + [122.124604, 36.944077], + [122.141235, 36.938337], + [122.119677, 36.891924], + [122.175727, 36.894317], + [122.188662, 36.866073], + [122.174495, 36.842609], + [122.220691, 36.848835], + [122.275509, 36.83734], + [122.280437, 36.835904], + [122.344495, 36.828239], + [122.378371, 36.844525], + [122.383915, 36.865595], + [122.415944, 36.85937], + [122.454748, 36.879], + [122.452284, 36.88618], + [122.434422, 36.914416], + [122.483081, 36.913938], + [122.48924, 36.886659], + [122.532356, 36.901496], + [122.55761, 36.968467], + [122.544675, 37.004797], + [122.583479, 37.037289], + [122.575472, 37.054485], + [122.494168, 37.033945], + [122.467067, 37.037289], + [122.478769, 37.058784], + [122.484313, 37.128956], + [122.533588, 37.153286], + [122.581015, 37.147562], + [122.573624, 37.176178], + [122.624131, 37.190959], + [122.592718, 37.261485], + [122.567465, 37.25958], + [122.573624, 37.296247], + [122.611196, 37.339558], + [122.607501, 37.364296], + [122.650616, 37.388551], + [122.6925, 37.373809], + [122.714058, 37.392355], + [122.701739, 37.418501], + [122.67587, 37.413273], + [122.641377, 37.428482], + [122.553914, 37.407093], + [122.4954, 37.413748], + [122.487393, 37.43466], + [122.41656, 37.414699], + [122.337103, 37.414223], + [122.281053, 37.430858], + [122.287212, 37.445114], + [122.25272, 37.467917], + [122.194205, 37.456041], + [122.166488, 37.438937], + [122.131996, 37.49926], + [122.163408, 37.519199], + [122.150474, 37.557163], + [122.08888, 37.554316], + [122.075329, 37.540556], + [122.017431, 37.531065], + [121.997721, 37.494512], + [121.923808, 37.473142], + [121.772903, 37.466492], + [121.66573, 37.473617], + [121.635548, 37.494037], + [121.575802, 37.460317], + [121.571491, 37.441313], + [121.477252, 37.475992], + [121.460006, 37.522522], + [121.400876, 37.557638], + [121.395948, 37.589891], + [121.435368, 37.592737], + [121.391021, 37.625449], + [121.349137, 37.635403], + [121.358376, 37.597479], + [121.304789, 37.582778], + [121.217326, 37.582778], + [121.17421, 37.597479], + [121.148956, 37.626397], + [121.161891, 37.646302], + [121.142797, 37.661464], + [121.160043, 37.698882], + [121.136022, 37.723501], + [121.037471, 37.718767], + [120.994356, 37.759468], + [120.943233, 37.785486], + [120.940769, 37.819533], + [120.874863, 37.833241], + [120.845298, 37.826623], + [120.839139, 37.82426], + [120.733197, 37.833714], + [120.656821, 37.793054], + [120.634031, 37.796364], + [120.590915, 37.7642], + [120.517619, 37.750005], + [120.454793, 37.757576], + [120.367945, 37.697935], + [120.227511, 37.693673], + [120.22012, 37.671886], + [120.269395, 37.658622], + [120.272475, 37.636824], + [120.215192, 37.621183], + [120.208417, 37.588469], + [120.246605, 37.556689], + [120.222584, 37.532963], + [120.144359, 37.481691], + [120.086461, 37.465067], + [120.064903, 37.448915], + [120.010085, 37.442263], + [119.949723, 37.419927], + [119.926933, 37.386649], + [119.843781, 37.376662], + [119.837006, 37.346695], + [119.883201, 37.311004], + [119.89244, 37.263866], + [119.865339, 37.233854], + [119.83023, 37.225754], + [119.808057, 37.196203], + [119.740303, 37.133727], + [119.687332, 37.143746], + [119.678709, 37.158056], + [119.576463, 37.127524], + [119.489616, 37.134681], + [119.428022, 37.125616], + [119.361501, 37.125616], + [119.327624, 37.115595], + [119.301138, 37.139452], + [119.298675, 37.197156], + [119.2069, 37.223371], + [119.190885, 37.25958], + [119.204436, 37.280058], + [119.136683, 37.230995], + [119.12806, 37.254816], + [119.091103, 37.257674], + [119.084328, 37.239572], + [119.054147, 37.254816], + [119.03998, 37.30434], + [119.001176, 37.31862], + [118.942662, 37.497361], + [118.939582, 37.527268], + [118.988857, 37.620709], + [119.023966, 37.642037], + [119.153313, 37.655305], + [119.236465, 37.651988], + [119.262334, 37.660517], + [119.280197, 37.692726], + [119.309146, 37.805349], + [119.291899, 37.869627], + [119.24016, 37.878131], + [119.212443, 37.838913], + [119.16132, 37.81906], + [119.12806, 37.847892], + [119.110813, 37.921577], + [119.001792, 37.99613], + [118.974075, 38.094162], + [118.908169, 38.139362], + [118.811467, 38.157717], + [118.703677, 38.151129], + [118.626069, 38.138421], + [118.607591, 38.129006], + [118.597736, 38.079088], + [118.552156, 38.05553], + [118.534294, 38.063541], + [118.517048, 38.088509], + [118.504729, 38.11394], + [118.44991, 38.124299], + [118.431432, 38.106406], + [118.404331, 38.121003], + [118.331034, 38.12524], + [118.217085, 38.146893], + [118.177665, 38.186417], + [118.112376, 38.210403], + [118.045238, 38.214165], + [118.018753, 38.202409], + [117.896797, 38.279495], + [117.895565, 38.301572], + [117.848754, 38.255062], + [117.808718, 38.22827], + [117.789007, 38.180772], + [117.766834, 38.158658], + [117.771145, 38.134655], + [117.746508, 38.12524], + [117.704624, 38.076262], + [117.586979, 38.071551], + [117.557414, 38.046105], + [117.557414, 38.046105], + [117.524154, 37.989527], + [117.513067, 37.94329], + [117.481038, 37.914967], + [117.438538, 37.854035], + [117.400966, 37.844584], + [117.320278, 37.861596], + [117.271618, 37.839858], + [117.185387, 37.849783], + [117.150278, 37.839385], + [117.074518, 37.848837], + [117.027091, 37.832296], + [116.919301, 37.846002], + [116.837997, 37.835132], + [116.804736, 37.848837], + [116.753613, 37.793054], + [116.753613, 37.77035], + [116.724664, 37.744327], + [116.679085, 37.728708], + [116.66307, 37.686096], + [116.604556, 37.624975], + [116.575607, 37.610754], + [116.4826, 37.521573], + [116.448108, 37.503059], + [116.433941, 37.473142], + [116.38097, 37.522522], + [116.379738, 37.522047], + [116.38097, 37.522522], + [116.379738, 37.522047], + [116.36742, 37.566177], + [116.336007, 37.581355], + [116.295355, 37.554316], + [116.278724, 37.524895], + [116.290427, 37.484065], + [116.27626, 37.466967], + [116.240536, 37.489764], + [116.240536, 37.489764], + [116.224522, 37.479791], + [116.243, 37.447965], + [116.226369, 37.428007], + [116.2855, 37.404241], + [116.236224, 37.361442], + [116.193109, 37.365723], + [116.169087, 37.384271], + [116.106261, 37.368577], + [116.085935, 37.373809], + [116.024341, 37.360015], + [115.975682, 37.337179], + [115.969523, 37.239572], + [115.909777, 37.20669], + [115.91224, 37.177132], + [115.879596, 37.150901], + [115.888219, 37.112254], + [115.85619, 37.060694], + [115.776734, 36.992848], + [115.79706, 36.968945], + [115.75764, 36.902453], + [115.71206, 36.883308], + [115.683727, 36.808117], + [115.524815, 36.763543], + [115.479851, 36.760187], + [115.451518, 36.702151], + [115.420105, 36.686795], + [115.365902, 36.621979], + [115.355431, 36.627262], + [115.33141, 36.550378], + [115.272895, 36.497476], + [115.291374, 36.460423], + [115.317243, 36.454166], + [115.297533, 36.413239], + [115.340033, 36.398307], + [115.368982, 36.342409], + [115.366518, 36.30914], + [115.423185, 36.32216], + [115.417025, 36.292742], + [115.462605, 36.276339], + [115.466916, 36.258969], + [115.466916, 36.258969], + [115.474923, 36.248352], + [115.483547, 36.148865], + [115.484163, 36.125666], + [115.449054, 36.047317], + [115.447822, 36.01247], + [115.362822, 35.971796], + [115.353583, 35.938854], + [115.364054, 35.894264], + [115.335105, 35.796756], + [115.363438, 35.779765], + [115.407786, 35.80889], + [115.460141, 35.867594], + [115.487858, 35.880688], + [115.495249, 35.896203], + [115.505104, 35.899112], + [115.513112, 35.890385], + [115.583945, 35.921893], + [115.648618, 35.922863], + [115.699125, 35.966468], + [115.774886, 35.974702], + [115.779813, 35.993588], + [115.817386, 36.012954], + [115.859886, 36.003756], + [115.89869, 36.026507], + [115.989849, 36.045381], + [116.057602, 36.104877], + [116.099486, 36.112129], + [116.063145, 36.028927], + [116.048979, 35.970343], + [115.984921, 35.974218], + [115.911624, 35.960171], + [115.907929, 35.92674], + [115.873436, 35.918985], + [115.882675, 35.879718], + [115.859886, 35.857894], + [115.81677, 35.844312], + [115.773654, 35.854014], + [115.73485, 35.833154], + [115.696046, 35.788989], + [115.693582, 35.754028], + [115.622749, 35.739457], + [115.52851, 35.733628], + [115.48601, 35.710306], + [115.383148, 35.568772], + [115.34496, 35.55368], + [115.356047, 35.490359], + [115.307388, 35.480126], + [115.237171, 35.423087], + [115.172497, 35.426501], + [115.126302, 35.41821], + [115.117679, 35.400163], + [115.091809, 35.416259], + [115.073947, 35.374304], + [115.04315, 35.376744], + [114.957534, 35.261014], + [114.929201, 35.244886], + [114.932281, 35.198441], + [114.861448, 35.182301], + [114.841738, 35.15099], + [114.883006, 35.098615], + [114.835578, 35.076578], + [114.818948, 35.051596], + [114.852209, 35.041797], + [114.824492, 35.012393], + [114.880542, 35.00357], + [114.923658, 34.968757], + [114.950759, 34.989843], + [115.008041, 34.988372], + [115.028983, 34.9717], + [115.075179, 35.000628], + [115.12815, 35.00455], + [115.157099, 34.957968], + [115.219309, 34.96042], + [115.205142, 34.914303], + [115.251953, 34.906451], + [115.239019, 34.87798], + [115.256265, 34.845079], + [115.317243, 34.859321], + [115.42688, 34.805285], + [115.449054, 34.74433], + [115.433655, 34.725149], + [115.461373, 34.637057], + [115.515575, 34.582383], + [115.553148, 34.568586], + [115.622749, 34.574499], + [115.685575, 34.556265], + [115.697278, 34.594207], + [115.787821, 34.580905], + [115.827241, 34.558236], + [115.838328, 34.5676], + [115.984305, 34.589281], + [115.991081, 34.615389], + [116.037276, 34.593222], + [116.101334, 34.60603], + [116.134594, 34.559715], + [116.156768, 34.5538], + [116.196804, 34.575977], + [116.247927, 34.551829], + [116.286116, 34.608986], + [116.32492, 34.601104], + [116.334159, 34.620806], + [116.374195, 34.640011] + ] + ], + [ + [ + [120.729502, 37.947065], + [120.721495, 37.917328], + [120.76461, 37.895134], + [120.76461, 37.923937], + [120.729502, 37.947065] + ] + ], + [ + [ + [120.692545, 37.983867], + [120.732581, 37.961694], + [120.724574, 37.987641], + [120.692545, 37.983867] + ] + ], + [ + [ + [120.990044, 36.413239], + [120.978341, 36.428649], + [120.950624, 36.414684], + [120.990044, 36.413239] + ] + ], + [ + [ + [120.750444, 38.150188], + [120.7874, 38.158658], + [120.742436, 38.199116], + [120.750444, 38.150188] + ] + ], + [ + [ + [120.918595, 38.345236], + [120.914899, 38.373393], + [120.895189, 38.36307], + [120.918595, 38.345236] + ] + ], + [ + [ + [120.159142, 35.765198], + [120.169613, 35.740428], + [120.193019, 35.756942], + [120.172077, 35.785591], + [120.159142, 35.765198] + ] + ], + [ + [ + [120.62664, 37.94565], + [120.631567, 37.981037], + [120.602002, 37.978678], + [120.62664, 37.94565] + ] + ], + [ + [ + [120.802183, 38.284193], + [120.848378, 38.305799], + [120.816349, 38.318008], + [120.802183, 38.284193] + ] + ], + [ + [ + [121.489571, 37.577086], + [121.489571, 37.577561], + [121.489571, 37.578509], + [121.488955, 37.578035], + [121.489571, 37.577086] + ] + ], + [ + [ + [121.485875, 37.578509], + [121.487723, 37.578035], + [121.487723, 37.578509], + [121.485875, 37.578509] + ] + ], + [ + [ + [121.487723, 37.578509], + [121.487723, 37.577561], + [121.488955, 37.578035], + [121.488955, 37.578509], + [121.488339, 37.578509], + [121.487723, 37.578509] + ] + ], + [ + [ + [115.495249, 35.896203], + [115.487858, 35.880688], + [115.513112, 35.890385], + [115.505104, 35.899112], + [115.495249, 35.896203] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 410000, + "name": "河南省", + "center": [113.665412, 34.757975], + "centroid": [113.619717, 33.902648], + "childrenNum": 18, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 15, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [112.716747, 32.357612], + [112.735841, 32.356095], + [112.776493, 32.358623], + [112.860877, 32.396024], + [112.888594, 32.37682], + [112.912, 32.390971], + [112.992072, 32.378336], + [113.000695, 32.41674], + [113.025949, 32.425328], + [113.078919, 32.394508], + [113.107869, 32.398551], + [113.118956, 32.375809], + [113.155912, 32.380863], + [113.158992, 32.410677], + [113.211962, 32.431895], + [113.2366, 32.407141], + [113.333918, 32.336377], + [113.317904, 32.327275], + [113.353628, 32.294904], + [113.376418, 32.298445], + [113.428773, 32.270618], + [113.511925, 32.316654], + [113.624642, 32.36115], + [113.650511, 32.412698], + [113.700402, 32.420782], + [113.735511, 32.410677], + [113.76754, 32.370249], + [113.753989, 32.328286], + [113.768772, 32.30148], + [113.768156, 32.284279], + [113.758301, 32.27669], + [113.749061, 32.272642], + [113.73859, 32.255942], + [113.752757, 32.215951], + [113.782322, 32.184553], + [113.750293, 32.11615], + [113.722576, 32.12426], + [113.728735, 32.083197], + [113.791561, 32.036028], + [113.757685, 31.98985], + [113.817431, 31.964467], + [113.805728, 31.929428], + [113.832213, 31.918761], + [113.830981, 31.87913], + [113.854387, 31.843042], + [113.893807, 31.847109], + [113.914749, 31.877098], + [113.957865, 31.852701], + [113.952321, 31.793714], + [113.988662, 31.749959], + [114.017611, 31.770822], + [114.086596, 31.782014], + [114.121705, 31.809482], + [114.134024, 31.843042], + [114.191922, 31.852192], + [114.235654, 31.833382], + [114.292936, 31.752503], + [114.350218, 31.755557], + [114.403189, 31.746906], + [114.443841, 31.728074], + [114.530688, 31.742834], + [114.549783, 31.766751], + [114.586123, 31.762172], + [114.57134, 31.660858], + [114.547935, 31.623665], + [114.560869, 31.560963], + [114.572572, 31.553824], + [114.61692, 31.585437], + [114.641558, 31.582378], + [114.696376, 31.525771], + [114.778912, 31.520669], + [114.789383, 31.480358], + [114.830035, 31.45892], + [114.870071, 31.479337], + [114.884238, 31.469129], + [114.962462, 31.494648], + [114.995107, 31.471171], + [115.022824, 31.527811], + [115.096121, 31.508425], + [115.114599, 31.530362], + [115.106592, 31.567592], + [115.12507, 31.599201], + [115.16449, 31.604808], + [115.212533, 31.555354], + [115.235939, 31.555354], + [115.218077, 31.515057], + [115.211301, 31.442072], + [115.252569, 31.421646], + [115.250722, 31.392021], + [115.301229, 31.383846], + [115.338801, 31.40428], + [115.373909, 31.405813], + [115.389924, 31.450241], + [115.371446, 31.495668], + [115.415793, 31.525771], + [115.439815, 31.588496], + [115.485394, 31.608885], + [115.476771, 31.643028], + [115.495249, 31.673083], + [115.534054, 31.698545], + [115.553764, 31.69549], + [115.676336, 31.778453], + [115.731154, 31.76726], + [115.767495, 31.78761], + [115.808147, 31.770313], + [115.808147, 31.770313], + [115.851878, 31.786593], + [115.886371, 31.776418], + [115.914704, 31.814567], + [115.893762, 31.832365], + [115.894994, 31.8649], + [115.920248, 31.920285], + [115.909161, 31.94314], + [115.928871, 32.003046], + [115.922095, 32.049725], + [115.941805, 32.166318], + [115.912856, 32.227596], + [115.899306, 32.390971], + [115.865429, 32.458662], + [115.883291, 32.487946], + [115.845719, 32.501575], + [115.8759, 32.542448], + [115.910393, 32.567165], + [115.891298, 32.576243], + [115.861117, 32.537403], + [115.789052, 32.468761], + [115.771806, 32.505108], + [115.742241, 32.476335], + [115.704669, 32.495013], + [115.667712, 32.409667], + [115.657857, 32.428864], + [115.626445, 32.40512], + [115.604271, 32.425833], + [115.57101, 32.419266], + [115.522967, 32.441997], + [115.509416, 32.466741], + [115.5088, 32.468761], + [115.497713, 32.492489], + [115.409018, 32.549007], + [115.411482, 32.575235], + [115.304924, 32.553042], + [115.30554, 32.583303], + [115.267352, 32.578261], + [115.24333, 32.593388], + [115.20083, 32.591876], + [115.182968, 32.666973], + [115.179273, 32.726402], + [115.189744, 32.770695], + [115.211301, 32.785791], + [115.189744, 32.812452], + [115.197135, 32.856201], + [115.155867, 32.864747], + [115.139237, 32.897917], + [115.029599, 32.906962], + [115.035143, 32.932582], + [115.009273, 32.940117], + [114.943368, 32.935094], + [114.916266, 32.971251], + [114.883006, 32.990328], + [114.891629, 33.020441], + [114.925506, 33.016928], + [114.913187, 33.083143], + [114.897172, 33.086653], + [114.902716, 33.129764], + [114.932897, 33.153817], + [114.966158, 33.147304], + [114.990795, 33.102195], + [115.041302, 33.086653], + [115.168186, 33.088658], + [115.194671, 33.120743], + [115.245178, 33.135778], + [115.289526, 33.131769], + [115.303692, 33.149809], + [115.300613, 33.204407], + [115.340033, 33.260973], + [115.335105, 33.297997], + [115.361591, 33.298497], + [115.365286, 33.336005], + [115.341881, 33.370997], + [115.313547, 33.376994], + [115.328946, 33.403477], + [115.315395, 33.431451], + [115.324634, 33.457418], + [115.345576, 33.449928], + [115.345576, 33.502842], + [115.366518, 33.5233], + [115.394851, 33.506335], + [115.422569, 33.557219], + [115.463837, 33.567193], + [115.511264, 33.55323], + [115.564851, 33.576169], + [115.639995, 33.585143], + [115.601191, 33.658898], + [115.601807, 33.718653], + [115.563003, 33.772895], + [115.576553, 33.787817], + [115.614126, 33.775879], + [115.631988, 33.869846], + [115.547604, 33.874815], + [115.577785, 33.950307], + [115.579017, 33.974133], + [115.60735, 34.030196], + [115.642459, 34.03218], + [115.658473, 34.061437], + [115.705901, 34.059949], + [115.736082, 34.076805], + [115.768726, 34.061932], + [115.809378, 34.062428], + [115.846335, 34.028708], + [115.85003, 34.004898], + [115.877132, 34.002913], + [115.876516, 34.028708], + [115.904233, 34.009859], + [115.95782, 34.007875], + [116.00032, 33.965199], + [115.982457, 33.917039], + [116.05945, 33.860902], + [116.055754, 33.804727], + [116.074232, 33.781351], + [116.100102, 33.782843], + [116.132747, 33.751501], + [116.155536, 33.709693], + [116.230065, 33.735078], + [116.263326, 33.730101], + [116.316912, 33.771402], + [116.393905, 33.782843], + [116.408071, 33.805721], + [116.437021, 33.801246], + [116.437637, 33.846489], + [116.486296, 33.869846], + [116.558361, 33.881274], + [116.566984, 33.9081], + [116.631042, 33.887733], + [116.64336, 33.896675], + [116.641512, 33.978103], + [116.599629, 34.014324], + [116.599629, 34.014324], + [116.576223, 34.068873], + [116.576223, 34.068873], + [116.52818, 34.122892], + [116.536187, 34.151127], + [116.565752, 34.16945], + [116.542962, 34.203608], + [116.545426, 34.241711], + [116.582382, 34.266444], + [116.562056, 34.285731], + [116.516477, 34.296114], + [116.456731, 34.268917], + [116.409303, 34.273863], + [116.409303, 34.273863], + [116.372347, 34.26595], + [116.357564, 34.319843], + [116.301514, 34.342082], + [116.255934, 34.376665], + [116.213435, 34.382098], + [116.215898, 34.403333], + [116.178942, 34.430487], + [116.162312, 34.459605], + [116.178326, 34.496112], + [116.204196, 34.508442], + [116.191261, 34.535561], + [116.196804, 34.575977], + [116.156768, 34.5538], + [116.134594, 34.559715], + [116.101334, 34.60603], + [116.037276, 34.593222], + [115.991081, 34.615389], + [115.984305, 34.589281], + [115.838328, 34.5676], + [115.827241, 34.558236], + [115.787821, 34.580905], + [115.697278, 34.594207], + [115.685575, 34.556265], + [115.622749, 34.574499], + [115.553148, 34.568586], + [115.515575, 34.582383], + [115.461373, 34.637057], + [115.433655, 34.725149], + [115.449054, 34.74433], + [115.42688, 34.805285], + [115.317243, 34.859321], + [115.256265, 34.845079], + [115.239019, 34.87798], + [115.251953, 34.906451], + [115.205142, 34.914303], + [115.219309, 34.96042], + [115.157099, 34.957968], + [115.12815, 35.00455], + [115.075179, 35.000628], + [115.028983, 34.9717], + [115.008041, 34.988372], + [114.950759, 34.989843], + [114.923658, 34.968757], + [114.880542, 35.00357], + [114.824492, 35.012393], + [114.852209, 35.041797], + [114.818948, 35.051596], + [114.835578, 35.076578], + [114.883006, 35.098615], + [114.841738, 35.15099], + [114.861448, 35.182301], + [114.932281, 35.198441], + [114.929201, 35.244886], + [114.957534, 35.261014], + [115.04315, 35.376744], + [115.073947, 35.374304], + [115.091809, 35.416259], + [115.117679, 35.400163], + [115.126302, 35.41821], + [115.172497, 35.426501], + [115.237171, 35.423087], + [115.307388, 35.480126], + [115.356047, 35.490359], + [115.34496, 35.55368], + [115.383148, 35.568772], + [115.48601, 35.710306], + [115.52851, 35.733628], + [115.622749, 35.739457], + [115.693582, 35.754028], + [115.696046, 35.788989], + [115.73485, 35.833154], + [115.773654, 35.854014], + [115.81677, 35.844312], + [115.859886, 35.857894], + [115.882675, 35.879718], + [115.873436, 35.918985], + [115.907929, 35.92674], + [115.911624, 35.960171], + [115.984921, 35.974218], + [116.048979, 35.970343], + [116.063145, 36.028927], + [116.099486, 36.112129], + [116.057602, 36.104877], + [115.989849, 36.045381], + [115.89869, 36.026507], + [115.859886, 36.003756], + [115.817386, 36.012954], + [115.779813, 35.993588], + [115.774886, 35.974702], + [115.699125, 35.966468], + [115.648618, 35.922863], + [115.583945, 35.921893], + [115.513112, 35.890385], + [115.487858, 35.880688], + [115.460141, 35.867594], + [115.407786, 35.80889], + [115.363438, 35.779765], + [115.335105, 35.796756], + [115.364054, 35.894264], + [115.353583, 35.938854], + [115.362822, 35.971796], + [115.447822, 36.01247], + [115.449054, 36.047317], + [115.484163, 36.125666], + [115.483547, 36.148865], + [115.465068, 36.170125], + [115.450902, 36.152248], + [115.376989, 36.128083], + [115.365902, 36.099074], + [115.312931, 36.088436], + [115.30246, 36.127599], + [115.279055, 36.13775], + [115.242098, 36.19138], + [115.202678, 36.208765], + [115.202678, 36.208765], + [115.202678, 36.209248], + [115.202678, 36.209248], + [115.201446, 36.210214], + [115.201446, 36.210214], + [115.1842, 36.193312], + [115.12507, 36.209731], + [115.104744, 36.172058], + [115.06286, 36.178338], + [115.048693, 36.161912], + [115.04623, 36.112613], + [114.998186, 36.069572], + [114.914419, 36.052155], + [114.926737, 36.089403], + [114.912571, 36.140649], + [114.858368, 36.144516], + [114.857752, 36.127599], + [114.771521, 36.124699], + [114.734564, 36.15563], + [114.720398, 36.140166], + [114.640326, 36.137266], + [114.588587, 36.118414], + [114.586739, 36.141133], + [114.533152, 36.171575], + [114.480181, 36.177855], + [114.466015, 36.197658], + [114.417356, 36.205868], + [114.408117, 36.224699], + [114.356378, 36.230492], + [114.345291, 36.255591], + [114.299095, 36.245938], + [114.257827, 36.263794], + [114.241197, 36.251247], + [114.2104, 36.272962], + [114.203009, 36.245456], + [114.170364, 36.245938], + [114.170364, 36.245938], + [114.175907, 36.264759], + [114.129096, 36.280199], + [114.080437, 36.269585], + [114.04348, 36.303353], + [114.056415, 36.329392], + [114.002828, 36.334214], + [113.981887, 36.31782], + [113.962792, 36.353977], + [113.911054, 36.314927], + [113.882104, 36.353977], + [113.84946, 36.347711], + [113.856851, 36.329392], + [113.813119, 36.332285], + [113.755221, 36.366026], + [113.731199, 36.363135], + [113.736127, 36.324571], + [113.712105, 36.303353], + [113.716417, 36.262347], + [113.681924, 36.216491], + [113.697939, 36.181719], + [113.651127, 36.174473], + [113.705946, 36.148865], + [113.712721, 36.129533], + [113.655439, 36.125182], + [113.671453, 36.115514], + [113.68562, 36.056026], + [113.660366, 36.034735], + [113.694859, 36.026991], + [113.678844, 35.985841], + [113.648663, 35.994073], + [113.654207, 35.931586], + [113.637576, 35.870019], + [113.660982, 35.837035], + [113.582758, 35.818111], + [113.604932, 35.797727], + [113.587685, 35.736542], + [113.592613, 35.691838], + [113.622794, 35.674825], + [113.625258, 35.632518], + [113.578446, 35.633491], + [113.547649, 35.656835], + [113.55812, 35.621816], + [113.513773, 35.57364], + [113.49899, 35.532254], + [113.439244, 35.507412], + [113.391817, 35.506925], + [113.348085, 35.468429], + [113.31236, 35.481101], + [113.304353, 35.426989], + [113.243375, 35.449418], + [113.189789, 35.44893], + [113.185477, 35.409431], + [113.165151, 35.412845], + [113.149137, 35.350878], + [113.126347, 35.332327], + [113.067217, 35.353806], + [112.996384, 35.362104], + [112.985913, 35.33965], + [112.992072, 35.29619], + [112.936022, 35.284466], + [112.934174, 35.262968], + [112.884283, 35.243909], + [112.822073, 35.258082], + [112.772798, 35.207732], + [112.720443, 35.206265], + [112.628052, 35.263457], + [112.637291, 35.225822], + [112.513487, 35.218489], + [112.390915, 35.239021], + [112.36751, 35.219956], + [112.288053, 35.219956], + [112.304684, 35.251728], + [112.242474, 35.234622], + [112.21722, 35.253195], + [112.13838, 35.271275], + [112.058924, 35.280069], + [112.078634, 35.219467], + [112.03983, 35.194039], + [112.066315, 35.153437], + [112.05646, 35.098615], + [112.062004, 35.056005], + [112.039214, 35.045717], + [112.018888, 35.068742], + [111.97762, 35.067272], + [111.933272, 35.083435], + [111.810084, 35.062374], + [111.807005, 35.032977], + [111.740483, 35.00455], + [111.664107, 34.984449], + [111.681969, 34.9511], + [111.646861, 34.938836], + [111.617911, 34.894671], + [111.592042, 34.881416], + [111.570484, 34.843114], + [111.543999, 34.853428], + [111.502731, 34.829851], + [111.439289, 34.838202], + [111.389398, 34.815113], + [111.345666, 34.831816], + [111.29208, 34.806759], + [111.255123, 34.819535], + [111.232949, 34.789559], + [111.148566, 34.807742], + [111.118385, 34.756623], + [111.035233, 34.740887], + [110.976103, 34.706456], + [110.920052, 34.730068], + [110.903422, 34.669056], + [110.883712, 34.64395], + [110.824582, 34.615881], + [110.791937, 34.649858], + [110.749437, 34.65232], + [110.710017, 34.605045], + [110.610851, 34.607508], + [110.533242, 34.583368], + [110.488279, 34.610956], + [110.424837, 34.588295], + [110.379257, 34.600612], + [110.366939, 34.566614], + [110.404511, 34.557743], + [110.372482, 34.544435], + [110.360779, 34.516825], + [110.403279, 34.433448], + [110.403279, 34.433448], + [110.473496, 34.393457], + [110.503677, 34.33714], + [110.451938, 34.292653], + [110.428533, 34.288203], + [110.43962, 34.243196], + [110.507989, 34.217466], + [110.55172, 34.213012], + [110.55788, 34.193214], + [110.621938, 34.177372], + [110.642264, 34.161032], + [110.61393, 34.113478], + [110.591757, 34.101586], + [110.587445, 34.023252], + [110.620706, 34.035652], + [110.671213, 33.966192], + [110.665669, 33.937895], + [110.627481, 33.925482], + [110.628713, 33.910086], + [110.587445, 33.887733], + [110.612083, 33.852453], + [110.66259, 33.85295], + [110.712481, 33.833564], + [110.74143, 33.798759], + [110.782082, 33.796272], + [110.81719, 33.751003], + [110.831973, 33.713675], + [110.823966, 33.685793], + [110.878784, 33.634486], + [110.966864, 33.609071], + [111.00382, 33.578662], + [111.002588, 33.535772], + [111.02661, 33.478386], + [111.02661, 33.467903], + [110.996429, 33.435946], + [111.025994, 33.375495], + [111.025994, 33.330504], + [110.984726, 33.255469], + [111.046936, 33.202905], + [111.045704, 33.169849], + [111.08882, 33.181871], + [111.12824, 33.15532], + [111.146102, 33.12375], + [111.179363, 33.115229], + [111.192913, 33.071609], + [111.152877, 33.039507], + [111.221862, 33.042517], + [111.258819, 33.006389], + [111.273601, 32.971753], + [111.242804, 32.930573], + [111.255123, 32.883846], + [111.276065, 32.903445], + [111.293311, 32.859217], + [111.380159, 32.829049], + [111.41342, 32.757108], + [111.475629, 32.760127], + [111.458383, 32.726402], + [111.513202, 32.674026], + [111.530448, 32.628172], + [111.577875, 32.593388], + [111.640701, 32.634724], + [111.646245, 32.605993], + [111.713382, 32.606497], + [111.808853, 32.536899], + [111.858128, 32.528826], + [111.890157, 32.503089], + [111.948671, 32.51722], + [111.975772, 32.471791], + [112.014576, 32.450077], + [112.063851, 32.474315], + [112.081098, 32.425833], + [112.155626, 32.377326], + [112.150083, 32.411688], + [112.172873, 32.385412], + [112.206133, 32.392992], + [112.328089, 32.321712], + [112.360118, 32.3657], + [112.390915, 32.37126], + [112.448814, 32.34295], + [112.477147, 32.380863], + [112.530733, 32.37682], + [112.545516, 32.404109], + [112.589248, 32.381369], + [112.612037, 32.386928], + [112.645298, 32.368227], + [112.716747, 32.357612] + ] + ], + [ + [ + [113.768156, 32.284279], + [113.768772, 32.30148], + [113.749061, 32.272642], + [113.758301, 32.27669], + [113.768156, 32.284279] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 420000, + "name": "湖北省", + "center": [114.298572, 30.584355], + "centroid": [112.271301, 30.987527], + "childrenNum": 17, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 16, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [111.045704, 33.169849], + [111.034001, 33.177864], + [111.035849, 33.187881], + [111.046936, 33.202905], + [110.984726, 33.255469], + [110.960704, 33.253967], + [110.9219, 33.203907], + [110.865234, 33.213921], + [110.828893, 33.201403], + [110.824582, 33.158327], + [110.753133, 33.15031], + [110.702626, 33.097182], + [110.650887, 33.157324], + [110.623785, 33.143796], + [110.59422, 33.168346], + [110.57759, 33.250464], + [110.54125, 33.255469], + [110.471032, 33.171352], + [110.398352, 33.176862], + [110.398352, 33.176862], + [110.372482, 33.186379], + [110.33799, 33.160331], + [110.285635, 33.171352], + [110.218497, 33.163336], + [110.164911, 33.209415], + [110.031252, 33.191888], + [109.999223, 33.212419], + [109.973353, 33.203907], + [109.916687, 33.229942], + [109.852013, 33.247961], + [109.813209, 33.236449], + [109.732521, 33.231443], + [109.693101, 33.254468], + [109.649985, 33.251465], + [109.619804, 33.275484], + [109.60687, 33.235949], + [109.514479, 33.237951], + [109.498464, 33.207412], + [109.438718, 33.152314], + [109.468283, 33.140288], + [109.522486, 33.138785], + [109.576073, 33.110216], + [109.688174, 33.116733], + [109.704188, 33.101694], + [109.794731, 33.067095], + [109.785492, 32.987316], + [109.76455, 32.909474], + [109.789804, 32.882339], + [109.847702, 32.893395], + [109.856941, 32.910479], + [109.907448, 32.903947], + [109.927158, 32.887364], + [109.988752, 32.886359], + [110.051578, 32.851676], + [110.105164, 32.832569], + [110.142121, 32.802895], + [110.127338, 32.77774], + [110.159367, 32.767173], + [110.156903, 32.683093], + [110.206179, 32.633212], + [110.153824, 32.593388], + [110.124259, 32.616579], + [110.090382, 32.617083], + [110.084223, 32.580782], + [110.017701, 32.546989], + [109.97089, 32.577756], + [109.910528, 32.592884], + [109.816905, 32.577252], + [109.746072, 32.594901], + [109.726978, 32.608513], + [109.631507, 32.599943], + [109.619804, 32.56767], + [109.637051, 32.540935], + [109.575457, 32.506622], + [109.526797, 32.43341], + [109.529877, 32.405625], + [109.502776, 32.38895], + [109.513247, 32.342444], + [109.495385, 32.300468], + [109.528645, 32.270112], + [109.550203, 32.225065], + [109.592703, 32.219495], + [109.604406, 32.199241], + [109.58716, 32.161251], + [109.621652, 32.106519], + [109.590855, 32.047696], + [109.590855, 32.012688], + [109.631507, 31.962436], + [109.62042, 31.928412], + [109.584696, 31.900472], + [109.60379, 31.885737], + [109.633971, 31.824738], + [109.633971, 31.804396], + [109.592087, 31.789136], + [109.585928, 31.726546], + [109.622268, 31.711783], + [109.683246, 31.719929], + [109.731289, 31.700582], + [109.737449, 31.628761], + [109.76455, 31.602769], + [109.745456, 31.598182], + [109.727594, 31.548214], + [109.837847, 31.555354], + [109.894513, 31.519139], + [109.969658, 31.508935], + [109.94502, 31.47066], + [109.98752, 31.474744], + [110.036795, 31.436966], + [110.054042, 31.410921], + [110.118715, 31.409899], + [110.161831, 31.314338], + [110.155671, 31.279564], + [110.180309, 31.179774], + [110.200019, 31.158779], + [110.180309, 31.121899], + [110.147048, 31.116776], + [110.119947, 31.088592], + [110.120563, 31.0322], + [110.140273, 31.030661], + [110.140889, 30.987062], + [110.172918, 30.978853], + [110.153824, 30.953708], + [110.151976, 30.911613], + [110.082375, 30.799614], + [110.048498, 30.800642], + [110.019549, 30.829425], + [110.008462, 30.883369], + [109.943788, 30.878746], + [109.894513, 30.899803], + [109.828608, 30.864364], + [109.780564, 30.848437], + [109.701724, 30.783677], + [109.656761, 30.760538], + [109.661072, 30.738936], + [109.625348, 30.702923], + [109.590855, 30.69366], + [109.574225, 30.646818], + [109.543428, 30.63961], + [109.535421, 30.664837], + [109.435638, 30.595832], + [109.418392, 30.559766], + [109.35495, 30.487076], + [109.337088, 30.521623], + [109.36111, 30.551004], + [109.314298, 30.599953], + [109.299516, 30.630341], + [109.245313, 30.580892], + [109.191726, 30.545851], + [109.191726, 30.545851], + [109.143683, 30.521108], + [109.103647, 30.565949], + [109.09256, 30.578831], + [109.106111, 30.61077], + [109.111654, 30.646303], + [109.071002, 30.640125], + [109.042669, 30.655571], + [109.006329, 30.626736], + [108.971836, 30.627766], + [108.893612, 30.565434], + [108.838793, 30.503062], + [108.808612, 30.491202], + [108.789518, 30.513374], + [108.743939, 30.494812], + [108.698975, 30.54482], + [108.688504, 30.58759], + [108.642925, 30.578831], + [108.6497, 30.53915], + [108.56778, 30.468508], + [108.556077, 30.487592], + [108.512961, 30.501515], + [108.472925, 30.487076], + [108.42673, 30.492233], + [108.411331, 30.438586], + [108.430425, 30.416397], + [108.402092, 30.376649], + [108.431041, 30.354446], + [108.460606, 30.35961], + [108.501258, 30.314673], + [108.524048, 30.309506], + [108.54499, 30.269716], + [108.581947, 30.255759], + [108.551766, 30.1637], + [108.56778, 30.157491], + [108.546222, 30.104178], + [108.513577, 30.057571], + [108.532055, 30.051873], + [108.536367, 29.983472], + [108.517889, 29.9394], + [108.516041, 29.885451], + [108.467998, 29.864175], + [108.433505, 29.880262], + [108.371295, 29.841337], + [108.424266, 29.815897], + [108.422418, 29.772791], + [108.442744, 29.778505], + [108.437201, 29.741098], + [108.460606, 29.741098], + [108.504338, 29.707836], + [108.504954, 29.728626], + [108.548686, 29.749412], + [108.52528, 29.770713], + [108.556077, 29.818493], + [108.601041, 29.863656], + [108.658939, 29.854833], + [108.680497, 29.800319], + [108.676801, 29.749412], + [108.690968, 29.689642], + [108.752562, 29.649082], + [108.786438, 29.691721], + [108.797525, 29.660003], + [108.781511, 29.635558], + [108.844337, 29.658443], + [108.888068, 29.628795], + [108.870206, 29.596537], + [108.901003, 29.604863], + [108.913322, 29.574679], + [108.878213, 29.539279], + [108.888684, 29.502305], + [108.866511, 29.470527], + [108.884373, 29.440824], + [108.927488, 29.435612], + [108.934264, 29.399643], + [108.919481, 29.3261], + [108.983539, 29.332883], + [108.999553, 29.36366], + [109.034662, 29.360531], + [109.060531, 29.403292], + [109.11227, 29.361053], + [109.106727, 29.288526], + [109.141835, 29.270256], + [109.110422, 29.21647], + [109.139372, 29.168927], + [109.162777, 29.180946], + [109.215748, 29.145409], + [109.232378, 29.119271], + [109.274262, 29.121885], + [109.261328, 29.161089], + [109.275494, 29.202366], + [109.257632, 29.222738], + [109.312451, 29.25146], + [109.352487, 29.284872], + [109.343863, 29.369398], + [109.391291, 29.372005], + [109.368501, 29.413719], + [109.418392, 29.453332], + [109.415928, 29.497617], + [109.436254, 29.488761], + [109.433791, 29.530948], + [109.458428, 29.513242], + [109.467051, 29.560104], + [109.488609, 29.553336], + [109.516326, 29.626194], + [109.558826, 29.606944], + [109.578536, 29.629836], + [109.651833, 29.625674], + [109.664768, 29.599659], + [109.717739, 29.615269], + [109.701108, 29.636078], + [109.714659, 29.673524], + [109.760238, 29.689122], + [109.755311, 29.733304], + [109.779333, 29.757725], + [109.869876, 29.774869], + [109.908064, 29.763959], + [109.941325, 29.774349], + [110.02386, 29.769674], + [110.113788, 29.789932], + [110.160599, 29.753569], + [110.219729, 29.746814], + [110.289946, 29.6964], + [110.302265, 29.661563], + [110.339221, 29.668324], + [110.372482, 29.633477], + [110.447011, 29.664684], + [110.467337, 29.713034], + [110.507373, 29.692241], + [110.562807, 29.712515], + [110.642879, 29.775907], + [110.60038, 29.839779], + [110.549873, 29.848085], + [110.538786, 29.895828], + [110.49875, 29.91243], + [110.517228, 29.961179], + [110.557264, 29.988137], + [110.491358, 30.019751], + [110.497518, 30.055499], + [110.531394, 30.061197], + [110.600996, 30.054463], + [110.650887, 30.07777], + [110.712481, 30.033223], + [110.756212, 30.054463], + [110.746973, 30.112979], + [110.851067, 30.126439], + [110.924364, 30.111426], + [110.929907, 30.063268], + [111.031537, 30.048765], + [111.242188, 30.040476], + [111.266826, 30.01146], + [111.3315, 29.970512], + [111.342587, 29.944586], + [111.382623, 29.95029], + [111.394325, 29.912948], + [111.436825, 29.930065], + [111.475629, 29.918654], + [111.527368, 29.925916], + [111.553854, 29.894272], + [111.669034, 29.888565], + [111.669034, 29.888565], + [111.705375, 29.890121], + [111.723853, 29.909317], + [111.723853, 29.909317], + [111.75773, 29.92021], + [111.8107, 29.901017], + [111.861207, 29.856909], + [111.899396, 29.855871], + [111.899396, 29.855871], + [111.925881, 29.836665], + [111.965917, 29.832512], + [111.95483, 29.796683], + [112.008417, 29.778505], + [112.07617, 29.743696], + [112.065699, 29.681323], + [112.089721, 29.685482], + [112.111279, 29.659483], + [112.178416, 29.656883], + [112.202438, 29.633997], + [112.244322, 29.659483], + [112.233851, 29.61631], + [112.303452, 29.585609], + [112.281278, 29.536676], + [112.291133, 29.517409], + [112.333017, 29.545007], + [112.368741, 29.541362], + [112.424792, 29.598619], + [112.439574, 29.633997], + [112.499321, 29.629316], + [112.54182, 29.60122], + [112.572001, 29.624113], + [112.640371, 29.607985], + [112.650842, 29.592374], + [112.693957, 29.601741], + [112.714283, 29.648561], + [112.733378, 29.645441], + [112.788812, 29.681323], + [112.79374, 29.735902], + [112.861493, 29.78318], + [112.894138, 29.783699], + [112.902145, 29.79149], + [112.929246, 29.77383], + [112.923703, 29.766557], + [112.926782, 29.692241], + [112.944645, 29.682883], + [112.974826, 29.732784], + [113.025949, 29.772791], + [113.005007, 29.693801], + [112.915696, 29.620992], + [112.912, 29.606944], + [112.950188, 29.473132], + [113.034572, 29.523658], + [113.057362, 29.522616], + [113.078304, 29.438218], + [113.099861, 29.459585], + [113.145441, 29.449163], + [113.181781, 29.485636], + [113.222433, 29.543965], + [113.277252, 29.594976], + [113.37765, 29.703158], + [113.571671, 29.849123], + [113.575367, 29.809147], + [113.550729, 29.768115], + [113.558736, 29.727067], + [113.540258, 29.699519], + [113.547033, 29.675603], + [113.606164, 29.666764], + [113.663446, 29.684443], + [113.680692, 29.64336], + [113.704098, 29.634518], + [113.73859, 29.579363], + [113.710257, 29.555419], + [113.630801, 29.523137], + [113.677613, 29.513763], + [113.755221, 29.446557], + [113.731199, 29.393907], + [113.674533, 29.388172], + [113.660982, 29.333405], + [113.632033, 29.316186], + [113.609859, 29.25146], + [113.651743, 29.225872], + [113.693011, 29.226394], + [113.691779, 29.19662], + [113.66283, 29.16945], + [113.690547, 29.114566], + [113.696091, 29.077437], + [113.722576, 29.104631], + [113.749677, 29.060699], + [113.775547, 29.095219], + [113.816199, 29.105154], + [113.852539, 29.058606], + [113.882104, 29.065407], + [113.876561, 29.038202], + [113.898119, 29.029307], + [113.94185, 29.047097], + [113.952321, 29.092604], + [113.98743, 29.126068], + [114.034857, 29.152204], + [114.063191, 29.204978], + [114.169748, 29.216993], + [114.252284, 29.23475], + [114.259059, 29.343839], + [114.307102, 29.365225], + [114.341595, 29.327665], + [114.376088, 29.322969], + [114.440145, 29.341752], + [114.466015, 29.324013], + [114.519602, 29.325578], + [114.589819, 29.352707], + [114.621847, 29.379828], + [114.67297, 29.395993], + [114.740724, 29.386607], + [114.759818, 29.363139], + [114.784455, 29.386086], + [114.812173, 29.383478], + [114.866375, 29.404335], + [114.895325, 29.397557], + [114.931049, 29.422581], + [114.947063, 29.465317], + [114.935977, 29.486678], + [114.90518, 29.473132], + [114.918114, 29.454374], + [114.888549, 29.436134], + [114.860216, 29.476258], + [114.900868, 29.505951], + [114.940288, 29.493971], + [114.966773, 29.522096], + [114.947679, 29.542924], + [115.00065, 29.572076], + [115.033295, 29.546568], + [115.087498, 29.560104], + [115.086266, 29.525741], + [115.154019, 29.510117], + [115.157099, 29.584568], + [115.120142, 29.597578], + [115.143548, 29.645961], + [115.117679, 29.655843], + [115.113367, 29.684963], + [115.176809, 29.654803], + [115.250722, 29.660003], + [115.28583, 29.618391], + [115.304924, 29.637118], + [115.355431, 29.649602], + [115.412714, 29.688602], + [115.470612, 29.739539], + [115.479235, 29.811224], + [115.51188, 29.840299], + [115.611662, 29.841337], + [115.667712, 29.850161], + [115.706517, 29.837703], + [115.762567, 29.793048], + [115.837096, 29.748373], + [115.909777, 29.723949], + [115.965827, 29.724469], + [116.049595, 29.761881], + [116.087167, 29.795125], + [116.13521, 29.819532], + [116.128435, 29.897904], + [116.073616, 29.969993], + [116.091479, 30.036331], + [116.078544, 30.062233], + [116.088399, 30.110391], + [116.055754, 30.180774], + [116.065609, 30.204569], + [115.997856, 30.252657], + [115.985537, 30.290905], + [115.903001, 30.31364], + [115.91532, 30.337919], + [115.885139, 30.379747], + [115.921479, 30.416397], + [115.894994, 30.452517], + [115.910393, 30.519046], + [115.887603, 30.542758], + [115.876516, 30.582438], + [115.848799, 30.602014], + [115.819234, 30.597893], + [115.81369, 30.637035], + [115.762567, 30.685426], + [115.782893, 30.751795], + [115.851262, 30.756938], + [115.863581, 30.815549], + [115.848799, 30.828397], + [115.865429, 30.864364], + [115.932566, 30.889532], + [115.976298, 30.931636], + [116.03974, 30.957813], + [116.071769, 30.956787], + [116.058834, 31.012711], + [116.015102, 31.011685], + [116.006479, 31.034764], + [115.938726, 31.04707], + [115.939958, 31.071678], + [115.887603, 31.10909], + [115.867277, 31.147512], + [115.837712, 31.127022], + [115.797676, 31.128047], + [115.778582, 31.112164], + [115.700973, 31.201276], + [115.655394, 31.211002], + [115.603655, 31.17363], + [115.585793, 31.143926], + [115.540213, 31.194621], + [115.539597, 31.231985], + [115.507568, 31.267799], + [115.473076, 31.265242], + [115.443511, 31.344498], + [115.40717, 31.337854], + [115.372062, 31.349098], + [115.393004, 31.389977], + [115.373909, 31.405813], + [115.338801, 31.40428], + [115.301229, 31.383846], + [115.250722, 31.392021], + [115.252569, 31.421646], + [115.211301, 31.442072], + [115.218077, 31.515057], + [115.235939, 31.555354], + [115.212533, 31.555354], + [115.16449, 31.604808], + [115.12507, 31.599201], + [115.106592, 31.567592], + [115.114599, 31.530362], + [115.096121, 31.508425], + [115.022824, 31.527811], + [114.995107, 31.471171], + [114.962462, 31.494648], + [114.884238, 31.469129], + [114.870071, 31.479337], + [114.830035, 31.45892], + [114.789383, 31.480358], + [114.778912, 31.520669], + [114.696376, 31.525771], + [114.641558, 31.582378], + [114.61692, 31.585437], + [114.572572, 31.553824], + [114.560869, 31.560963], + [114.547935, 31.623665], + [114.57134, 31.660858], + [114.586123, 31.762172], + [114.549783, 31.766751], + [114.530688, 31.742834], + [114.443841, 31.728074], + [114.403189, 31.746906], + [114.350218, 31.755557], + [114.292936, 31.752503], + [114.235654, 31.833382], + [114.191922, 31.852192], + [114.134024, 31.843042], + [114.121705, 31.809482], + [114.086596, 31.782014], + [114.017611, 31.770822], + [113.988662, 31.749959], + [113.952321, 31.793714], + [113.957865, 31.852701], + [113.914749, 31.877098], + [113.893807, 31.847109], + [113.854387, 31.843042], + [113.830981, 31.87913], + [113.832213, 31.918761], + [113.805728, 31.929428], + [113.817431, 31.964467], + [113.757685, 31.98985], + [113.791561, 32.036028], + [113.728735, 32.083197], + [113.722576, 32.12426], + [113.750293, 32.11615], + [113.782322, 32.184553], + [113.752757, 32.215951], + [113.73859, 32.255942], + [113.749061, 32.272642], + [113.768772, 32.30148], + [113.753989, 32.328286], + [113.76754, 32.370249], + [113.735511, 32.410677], + [113.700402, 32.420782], + [113.650511, 32.412698], + [113.624642, 32.36115], + [113.511925, 32.316654], + [113.428773, 32.270618], + [113.376418, 32.298445], + [113.353628, 32.294904], + [113.317904, 32.327275], + [113.333918, 32.336377], + [113.2366, 32.407141], + [113.211962, 32.431895], + [113.158992, 32.410677], + [113.155912, 32.380863], + [113.118956, 32.375809], + [113.107869, 32.398551], + [113.078919, 32.394508], + [113.025949, 32.425328], + [113.000695, 32.41674], + [112.992072, 32.378336], + [112.912, 32.390971], + [112.888594, 32.37682], + [112.860877, 32.396024], + [112.776493, 32.358623], + [112.735841, 32.356095], + [112.733993, 32.356601], + [112.724138, 32.358623], + [112.716747, 32.357612], + [112.645298, 32.368227], + [112.612037, 32.386928], + [112.589248, 32.381369], + [112.545516, 32.404109], + [112.530733, 32.37682], + [112.477147, 32.380863], + [112.448814, 32.34295], + [112.390915, 32.37126], + [112.360118, 32.3657], + [112.328089, 32.321712], + [112.206133, 32.392992], + [112.172873, 32.385412], + [112.150083, 32.411688], + [112.155626, 32.377326], + [112.081098, 32.425833], + [112.063851, 32.474315], + [112.014576, 32.450077], + [111.975772, 32.471791], + [111.948671, 32.51722], + [111.890157, 32.503089], + [111.858128, 32.528826], + [111.808853, 32.536899], + [111.713382, 32.606497], + [111.646245, 32.605993], + [111.640701, 32.634724], + [111.577875, 32.593388], + [111.530448, 32.628172], + [111.513202, 32.674026], + [111.458383, 32.726402], + [111.475629, 32.760127], + [111.41342, 32.757108], + [111.380159, 32.829049], + [111.293311, 32.859217], + [111.276065, 32.903445], + [111.255123, 32.883846], + [111.242804, 32.930573], + [111.273601, 32.971753], + [111.258819, 33.006389], + [111.221862, 33.042517], + [111.152877, 33.039507], + [111.192913, 33.071609], + [111.179363, 33.115229], + [111.146102, 33.12375], + [111.12824, 33.15532], + [111.08882, 33.181871], + [111.045704, 33.169849] + ] + ], + [ + [ + [109.106111, 30.570587], + [109.101183, 30.579346], + [109.09872, 30.579346], + [109.106111, 30.570587] + ] + ], + [ + [ + [111.046936, 33.202905], + [111.035849, 33.187881], + [111.034001, 33.177864], + [111.045704, 33.169849], + [111.046936, 33.202905] + ] + ], + [ + [ + [112.716747, 32.357612], + [112.735841, 32.356095], + [112.733993, 32.356601], + [112.724138, 32.358623], + [112.716747, 32.357612] + ] + ], + [ + [ + [112.902145, 29.79149], + [112.894138, 29.783699], + [112.923703, 29.766557], + [112.929246, 29.77383], + [112.902145, 29.79149] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 430000, + "name": "湖南省", + "center": [112.982279, 28.19409], + "centroid": [111.711649, 27.629216], + "childrenNum": 14, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 17, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [112.024431, 24.740308], + [112.03367, 24.771286], + [112.124214, 24.841364], + [112.149467, 24.837019], + [112.167329, 24.859828], + [112.175337, 24.927685], + [112.119902, 24.963499], + [112.12175, 24.989538], + [112.155626, 25.026419], + [112.151931, 25.055698], + [112.177184, 25.106649], + [112.187039, 25.182494], + [112.246785, 25.185202], + [112.256025, 25.159204], + [112.302836, 25.157037], + [112.315771, 25.175453], + [112.365046, 25.191701], + [112.414937, 25.14241], + [112.44327, 25.185744], + [112.458053, 25.152162], + [112.562762, 25.124531], + [112.628052, 25.140785], + [112.660081, 25.132658], + [112.712436, 25.083344], + [112.714899, 25.025876], + [112.742001, 24.99876], + [112.743233, 24.959701], + [112.778341, 24.947764], + [112.780805, 24.896747], + [112.873812, 24.896747], + [112.904609, 24.921715], + [112.941565, 24.915745], + [112.994536, 24.927142], + [113.009934, 24.977604], + [112.979137, 25.03401], + [113.004391, 25.089306], + [112.96805, 25.141869], + [112.97421, 25.168412], + [113.034572, 25.198199], + [112.992688, 25.247467], + [112.958195, 25.254503], + [112.897833, 25.238264], + [112.867036, 25.249632], + [112.854718, 25.337829], + [112.891058, 25.339993], + [112.924319, 25.296714], + [112.93479, 25.325929], + [112.969898, 25.350269], + [113.013014, 25.352432], + [113.078304, 25.382174], + [113.096782, 25.412449], + [113.131274, 25.414611], + [113.11834, 25.445418], + [113.176854, 25.471355], + [113.226129, 25.50971], + [113.248919, 25.514031], + [113.311129, 25.490264], + [113.314208, 25.442716], + [113.341926, 25.448661], + [113.373338, 25.402719], + [113.407215, 25.401637], + [113.449715, 25.359463], + [113.479896, 25.375145], + [113.535946, 25.368656], + [113.579062, 25.34432], + [113.584606, 25.306453], + [113.611707, 25.327552], + [113.680076, 25.334584], + [113.686852, 25.351891], + [113.753373, 25.362707], + [113.76446, 25.333502], + [113.814967, 25.328634], + [113.839605, 25.363248], + [113.877177, 25.380552], + [113.887032, 25.436772], + [113.94493, 25.441635], + [113.962792, 25.528072], + [113.986198, 25.529153], + [113.983118, 25.599336], + [113.957249, 25.611749], + [113.913517, 25.701299], + [113.920293, 25.741197], + [113.961561, 25.77731], + [113.971416, 25.836036], + [114.028082, 25.893119], + [114.028082, 25.98138], + [114.008372, 26.015806], + [114.044096, 26.076564], + [114.087828, 26.06635], + [114.121089, 26.085702], + [114.10569, 26.097526], + [114.188842, 26.121172], + [114.237501, 26.152333], + [114.216559, 26.203355], + [114.181451, 26.214631], + [114.102611, 26.187783], + [114.088444, 26.168448], + [114.013299, 26.184023], + [113.962792, 26.150722], + [113.949242, 26.192616], + [113.972647, 26.20604], + [113.978807, 26.237716], + [114.029314, 26.266163], + [114.021307, 26.288701], + [114.047792, 26.337518], + [114.030546, 26.376664], + [114.062575, 26.406149], + [114.085364, 26.406149], + [114.090292, 26.455988], + [114.110002, 26.482775], + [114.07243, 26.480096], + [114.10877, 26.56952], + [114.019459, 26.587182], + [113.996669, 26.615543], + [113.912901, 26.613938], + [113.860546, 26.664221], + [113.853771, 26.769532], + [113.835909, 26.806394], + [113.877177, 26.859262], + [113.890112, 26.895562], + [113.927068, 26.948922], + [113.892575, 26.964925], + [113.86301, 27.018252], + [113.824206, 27.036378], + [113.803264, 27.099261], + [113.771851, 27.096598], + [113.779242, 27.137081], + [113.846996, 27.222262], + [113.872865, 27.289828], + [113.854387, 27.30525], + [113.872865, 27.346721], + [113.872865, 27.384988], + [113.72812, 27.350442], + [113.699786, 27.331836], + [113.657902, 27.347253], + [113.616635, 27.345658], + [113.605548, 27.38924], + [113.632033, 27.40518], + [113.59754, 27.428554], + [113.591381, 27.467855], + [113.627105, 27.49971], + [113.583374, 27.524657], + [113.579062, 27.545354], + [113.608627, 27.585143], + [113.607395, 27.625449], + [113.652359, 27.663619], + [113.696707, 27.71979], + [113.69917, 27.740979], + [113.763228, 27.799228], + [113.756453, 27.860091], + [113.72812, 27.874904], + [113.752141, 27.93361], + [113.822974, 27.982243], + [113.845148, 27.971672], + [113.864242, 28.004966], + [113.914133, 27.991227], + [113.936307, 28.018703], + [113.966488, 28.017646], + [113.970184, 28.041418], + [114.025618, 28.031382], + [114.047176, 28.057263], + [114.025002, 28.080499], + [113.992357, 28.161255], + [114.012068, 28.174972], + [114.068734, 28.171806], + [114.107538, 28.182885], + [114.109386, 28.205038], + [114.143879, 28.246694], + [114.182067, 28.249858], + [114.198081, 28.29097], + [114.2529, 28.319423], + [114.252284, 28.395787], + [114.214712, 28.403157], + [114.172212, 28.432632], + [114.217175, 28.466308], + [114.218407, 28.48472], + [114.15435, 28.507337], + [114.138335, 28.533629], + [114.08598, 28.558337], + [114.132176, 28.607211], + [114.122321, 28.623497], + [114.157429, 28.761566], + [114.137719, 28.779926], + [114.153734, 28.829221], + [114.124784, 28.843376], + [114.076741, 28.834464], + [114.056415, 28.872204], + [114.060111, 28.902596], + [114.028082, 28.891069], + [114.005292, 28.917788], + [114.008988, 28.955498], + [113.973879, 28.937692], + [113.955401, 28.978536], + [113.961561, 28.999476], + [113.94185, 29.047097], + [113.898119, 29.029307], + [113.876561, 29.038202], + [113.882104, 29.065407], + [113.852539, 29.058606], + [113.816199, 29.105154], + [113.775547, 29.095219], + [113.749677, 29.060699], + [113.722576, 29.104631], + [113.696091, 29.077437], + [113.690547, 29.114566], + [113.66283, 29.16945], + [113.691779, 29.19662], + [113.693011, 29.226394], + [113.651743, 29.225872], + [113.609859, 29.25146], + [113.632033, 29.316186], + [113.660982, 29.333405], + [113.674533, 29.388172], + [113.731199, 29.393907], + [113.755221, 29.446557], + [113.677613, 29.513763], + [113.630801, 29.523137], + [113.710257, 29.555419], + [113.73859, 29.579363], + [113.704098, 29.634518], + [113.680692, 29.64336], + [113.663446, 29.684443], + [113.606164, 29.666764], + [113.547033, 29.675603], + [113.540258, 29.699519], + [113.558736, 29.727067], + [113.550729, 29.768115], + [113.575367, 29.809147], + [113.571671, 29.849123], + [113.37765, 29.703158], + [113.277252, 29.594976], + [113.222433, 29.543965], + [113.181781, 29.485636], + [113.145441, 29.449163], + [113.099861, 29.459585], + [113.078304, 29.438218], + [113.057362, 29.522616], + [113.034572, 29.523658], + [112.950188, 29.473132], + [112.912, 29.606944], + [112.915696, 29.620992], + [113.005007, 29.693801], + [113.025949, 29.772791], + [112.974826, 29.732784], + [112.944645, 29.682883], + [112.926782, 29.692241], + [112.923703, 29.766557], + [112.894138, 29.783699], + [112.861493, 29.78318], + [112.79374, 29.735902], + [112.788812, 29.681323], + [112.733378, 29.645441], + [112.714283, 29.648561], + [112.693957, 29.601741], + [112.650842, 29.592374], + [112.640371, 29.607985], + [112.572001, 29.624113], + [112.54182, 29.60122], + [112.499321, 29.629316], + [112.439574, 29.633997], + [112.424792, 29.598619], + [112.368741, 29.541362], + [112.333017, 29.545007], + [112.291133, 29.517409], + [112.281278, 29.536676], + [112.303452, 29.585609], + [112.233851, 29.61631], + [112.244322, 29.659483], + [112.202438, 29.633997], + [112.178416, 29.656883], + [112.111279, 29.659483], + [112.089721, 29.685482], + [112.065699, 29.681323], + [112.07617, 29.743696], + [112.008417, 29.778505], + [111.95483, 29.796683], + [111.965917, 29.832512], + [111.925881, 29.836665], + [111.899396, 29.855871], + [111.899396, 29.855871], + [111.861207, 29.856909], + [111.8107, 29.901017], + [111.75773, 29.92021], + [111.723853, 29.909317], + [111.723853, 29.909317], + [111.705375, 29.890121], + [111.669034, 29.888565], + [111.669034, 29.888565], + [111.553854, 29.894272], + [111.527368, 29.925916], + [111.475629, 29.918654], + [111.436825, 29.930065], + [111.394325, 29.912948], + [111.382623, 29.95029], + [111.342587, 29.944586], + [111.3315, 29.970512], + [111.266826, 30.01146], + [111.242188, 30.040476], + [111.031537, 30.048765], + [110.929907, 30.063268], + [110.924364, 30.111426], + [110.851067, 30.126439], + [110.746973, 30.112979], + [110.756212, 30.054463], + [110.712481, 30.033223], + [110.650887, 30.07777], + [110.600996, 30.054463], + [110.531394, 30.061197], + [110.497518, 30.055499], + [110.491358, 30.019751], + [110.557264, 29.988137], + [110.517228, 29.961179], + [110.49875, 29.91243], + [110.538786, 29.895828], + [110.549873, 29.848085], + [110.60038, 29.839779], + [110.642879, 29.775907], + [110.562807, 29.712515], + [110.507373, 29.692241], + [110.467337, 29.713034], + [110.447011, 29.664684], + [110.372482, 29.633477], + [110.339221, 29.668324], + [110.302265, 29.661563], + [110.289946, 29.6964], + [110.219729, 29.746814], + [110.160599, 29.753569], + [110.113788, 29.789932], + [110.02386, 29.769674], + [109.941325, 29.774349], + [109.908064, 29.763959], + [109.869876, 29.774869], + [109.779333, 29.757725], + [109.755311, 29.733304], + [109.760238, 29.689122], + [109.714659, 29.673524], + [109.701108, 29.636078], + [109.717739, 29.615269], + [109.664768, 29.599659], + [109.651833, 29.625674], + [109.578536, 29.629836], + [109.558826, 29.606944], + [109.516326, 29.626194], + [109.488609, 29.553336], + [109.467051, 29.560104], + [109.458428, 29.513242], + [109.433791, 29.530948], + [109.436254, 29.488761], + [109.415928, 29.497617], + [109.418392, 29.453332], + [109.368501, 29.413719], + [109.391291, 29.372005], + [109.343863, 29.369398], + [109.352487, 29.284872], + [109.312451, 29.25146], + [109.257632, 29.222738], + [109.275494, 29.202366], + [109.261328, 29.161089], + [109.274262, 29.121885], + [109.232378, 29.119271], + [109.240386, 29.086328], + [109.312451, 29.066453], + [109.319842, 29.042388], + [109.294588, 29.015177], + [109.292741, 28.987436], + [109.261328, 28.952356], + [109.235458, 28.882161], + [109.246545, 28.80143], + [109.241002, 28.776779], + [109.2989, 28.7474], + [109.294588, 28.722211], + [109.252704, 28.691767], + [109.271183, 28.671816], + [109.192958, 28.636104], + [109.201581, 28.597753], + [109.235458, 28.61982], + [109.252089, 28.606685], + [109.306907, 28.62087], + [109.319842, 28.579886], + [109.273646, 28.53836], + [109.274262, 28.494714], + [109.260712, 28.46473], + [109.264407, 28.392628], + [109.289045, 28.373673], + [109.268719, 28.33786], + [109.275494, 28.313101], + [109.317994, 28.277795], + [109.33524, 28.293605], + [109.388211, 28.268307], + [109.367885, 28.254602], + [109.340168, 28.19027], + [109.33832, 28.141731], + [109.314298, 28.103729], + [109.298284, 28.036136], + [109.335856, 28.063073], + [109.378972, 28.034551], + [109.362342, 28.007608], + [109.319842, 27.988585], + [109.30198, 27.956343], + [109.32169, 27.868027], + [109.346943, 27.838396], + [109.332777, 27.782815], + [109.37774, 27.736741], + [109.366653, 27.721909], + [109.414081, 27.725087], + [109.470747, 27.680049], + [109.45658, 27.673689], + [109.470131, 27.62863], + [109.451037, 27.586204], + [109.461508, 27.567637], + [109.404841, 27.55066], + [109.303211, 27.47582], + [109.300132, 27.423774], + [109.245313, 27.41793], + [109.202197, 27.450331], + [109.167089, 27.41793], + [109.141835, 27.448207], + [109.142451, 27.418461], + [109.103647, 27.336621], + [109.044517, 27.331304], + [109.053756, 27.293551], + [108.983539, 27.26802], + [108.963213, 27.235565], + [108.907778, 27.204699], + [108.926873, 27.160512], + [108.878829, 27.106187], + [108.79075, 27.084343], + [108.877597, 27.01612], + [108.942887, 27.017186], + [108.942887, 27.017186], + [108.940423, 27.044907], + [109.007561, 27.08008], + [109.032814, 27.104056], + [109.128901, 27.122701], + [109.101183, 27.06889], + [109.165857, 27.066758], + [109.21698, 27.114711], + [109.239154, 27.14933], + [109.264407, 27.131755], + [109.33524, 27.139212], + [109.358646, 27.153058], + [109.415312, 27.154123], + [109.441182, 27.117907], + [109.472595, 27.134951], + [109.454733, 27.069423], + [109.486761, 27.053968], + [109.497848, 27.079548], + [109.520022, 27.058764], + [109.555131, 26.946788], + [109.436254, 26.892359], + [109.452885, 26.861932], + [109.486761, 26.895562], + [109.509551, 26.877947], + [109.513247, 26.84004], + [109.497232, 26.815474], + [109.522486, 26.749226], + [109.528645, 26.743881], + [109.554515, 26.73533], + [109.597015, 26.756173], + [109.568065, 26.726243], + [109.528645, 26.743881], + [109.52187, 26.749226], + [109.486761, 26.759913], + [109.447957, 26.759913], + [109.407305, 26.719829], + [109.35495, 26.693098], + [109.283501, 26.698445], + [109.306291, 26.661012], + [109.334008, 26.646036], + [109.35495, 26.658873], + [109.390675, 26.598955], + [109.407305, 26.533116], + [109.381436, 26.518659], + [109.385747, 26.493487], + [109.362342, 26.472061], + [109.38082, 26.454381], + [109.319842, 26.418477], + [109.29582, 26.350389], + [109.271183, 26.327863], + [109.285965, 26.295676], + [109.325385, 26.29031], + [109.351255, 26.264016], + [109.369733, 26.277432], + [109.442414, 26.289774], + [109.467051, 26.313917], + [109.439334, 26.238789], + [109.47629, 26.148035], + [109.513863, 26.128157], + [109.502776, 26.096451], + [109.449805, 26.101826], + [109.452885, 26.055598], + [109.48245, 26.029788], + [109.513247, 25.998056], + [109.560058, 26.021184], + [109.588391, 26.019571], + [109.635203, 26.047533], + [109.649369, 26.016882], + [109.730057, 25.989988], + [109.710963, 25.954478], + [109.693717, 25.959321], + [109.67955, 25.921649], + [109.685094, 25.880197], + [109.768246, 25.890427], + [109.779333, 25.866196], + [109.811361, 25.877504], + [109.826144, 25.911422], + [109.806434, 25.973848], + [109.782412, 25.996981], + [109.814441, 26.041081], + [109.864332, 26.027637], + [109.898825, 26.095377], + [109.904368, 26.135679], + [109.970274, 26.195301], + [110.03002, 26.166299], + [110.099005, 26.168985], + [110.100853, 26.132455], + [110.065128, 26.050221], + [110.100853, 26.020108], + [110.168606, 26.028713], + [110.181541, 26.060437], + [110.24991, 26.010965], + [110.257301, 25.961473], + [110.325671, 25.975462], + [110.373098, 26.088927], + [110.437772, 26.153945], + [110.477808, 26.179727], + [110.495054, 26.166299], + [110.546793, 26.233421], + [110.552952, 26.283335], + [110.584365, 26.296749], + [110.612083, 26.333764], + [110.643495, 26.308552], + [110.673676, 26.317135], + [110.721104, 26.294066], + [110.742046, 26.313917], + [110.73527, 26.270993], + [110.759292, 26.248451], + [110.836284, 26.255966], + [110.939762, 26.286554], + [110.926212, 26.320354], + [110.944074, 26.326791], + [110.94469, 26.373447], + [110.974255, 26.385778], + [111.008747, 26.35897], + [111.008132, 26.336982], + [111.090667, 26.308016], + [111.208928, 26.30426], + [111.204616, 26.276359], + [111.228022, 26.261333], + [111.277913, 26.272066], + [111.293311, 26.222148], + [111.271754, 26.217316], + [111.274833, 26.183486], + [111.258203, 26.151796], + [111.26621, 26.095914], + [111.244652, 26.078177], + [111.267442, 26.058824], + [111.235413, 26.048071], + [111.189834, 25.953402], + [111.230486, 25.916267], + [111.251428, 25.864581], + [111.29208, 25.854349], + [111.297007, 25.874274], + [111.346282, 25.906577], + [111.376463, 25.906039], + [111.383239, 25.881812], + [111.460231, 25.885042], + [111.4861, 25.859196], + [111.43313, 25.84627], + [111.442369, 25.77192], + [111.399869, 25.744431], + [111.30871, 25.720171], + [111.309942, 25.645203], + [111.343202, 25.602574], + [111.324724, 25.564249], + [111.32842, 25.521592], + [111.279145, 25.42326], + [111.210776, 25.363248], + [111.184906, 25.367034], + [111.138711, 25.303748], + [111.103602, 25.285351], + [111.112841, 25.21715], + [110.998892, 25.161371], + [110.98411, 25.101772], + [110.951465, 25.04377], + [110.968711, 24.975434], + [111.009363, 24.921172], + [111.100522, 24.945593], + [111.101754, 25.035095], + [111.139943, 25.042144], + [111.200921, 25.074672], + [111.221862, 25.106649], + [111.274833, 25.151078], + [111.321645, 25.105023], + [111.36784, 25.108817], + [111.375231, 25.128324], + [111.435593, 25.093642], + [111.416499, 25.047566], + [111.467622, 25.02208], + [111.460231, 24.992793], + [111.43313, 24.979774], + [111.434977, 24.951562], + [111.470086, 24.92877], + [111.447296, 24.892947], + [111.449144, 24.857113], + [111.479325, 24.797366], + [111.461463, 24.728894], + [111.431282, 24.687574], + [111.451608, 24.665822], + [111.499035, 24.667997], + [111.526752, 24.637538], + [111.570484, 24.64461], + [111.588962, 24.690837], + [111.641933, 24.684856], + [111.637621, 24.715303], + [111.666571, 24.760961], + [111.708455, 24.788673], + [111.783599, 24.785957], + [111.814396, 24.770199], + [111.868599, 24.771829], + [111.875374, 24.756613], + [111.929577, 24.75607], + [111.951135, 24.769655], + [112.024431, 24.740308] + ] + ], + [ + [ + [109.528645, 26.743881], + [109.522486, 26.749226], + [109.52187, 26.749226], + [109.528645, 26.743881] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 440000, + "name": "广东省", + "center": [113.280637, 23.125178], + "centroid": [113.429919, 23.334643], + "childrenNum": 21, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 18, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [113.558736, 22.212244], + [113.594461, 22.228864], + [113.595693, 22.304186], + [113.617866, 22.315259], + [113.604932, 22.339617], + [113.627721, 22.349027], + [113.669605, 22.416539], + [113.66591, 22.438667], + [113.624642, 22.443092], + [113.608627, 22.408793], + [113.573519, 22.41156], + [113.631417, 22.475723], + [113.668373, 22.4807], + [113.691779, 22.514981], + [113.740438, 22.534329], + [113.717033, 22.645391], + [113.678228, 22.726007], + [113.733663, 22.736494], + [113.758301, 22.683496], + [113.765692, 22.665825], + [113.803264, 22.593463], + [113.856851, 22.539857], + [113.869786, 22.459685], + [113.893807, 22.442539], + [113.952937, 22.486783], + [113.954785, 22.491206], + [113.976343, 22.510558], + [114.031778, 22.503923], + [114.082285, 22.512216], + [114.095219, 22.534329], + [114.156813, 22.543726], + [114.166052, 22.559201], + [114.222719, 22.553122], + [114.232574, 22.539857], + [114.294784, 22.563623], + [114.321885, 22.587385], + [114.381631, 22.60175], + [114.427211, 22.589042], + [114.472174, 22.522168], + [114.476486, 22.459132], + [114.506667, 22.438667], + [114.549167, 22.465769], + [114.611377, 22.481806], + [114.628623, 22.513875], + [114.614456, 22.545384], + [114.568261, 22.560859], + [114.559022, 22.583517], + [114.603369, 22.638763], + [114.579964, 22.661407], + [114.51529, 22.655332], + [114.567029, 22.685705], + [114.591666, 22.690122], + [114.601521, 22.730975], + [114.689601, 22.7674], + [114.709927, 22.787817], + [114.749963, 22.764089], + [114.73518, 22.724351], + [114.728405, 22.651466], + [114.743803, 22.632687], + [114.746267, 22.581859], + [114.866375, 22.591805], + [114.88547, 22.538751], + [114.922426, 22.549253], + [114.927969, 22.621639], + [114.945216, 22.645391], + [115.039454, 22.713862], + [115.02344, 22.726007], + [115.053621, 22.747533], + [115.076411, 22.788368], + [115.154635, 22.80161], + [115.190975, 22.77347], + [115.190359, 22.818711], + [115.236555, 22.82533], + [115.230396, 22.776781], + [115.319091, 22.783402], + [115.338185, 22.776781], + [115.349272, 22.712206], + [115.381301, 22.684048], + [115.430576, 22.684048], + [115.471844, 22.697852], + [115.575322, 22.650914], + [115.565467, 22.684048], + [115.609198, 22.753052], + [115.541445, 22.755259], + [115.570394, 22.786713], + [115.583945, 22.82864], + [115.654162, 22.865591], + [115.696046, 22.84298], + [115.760103, 22.834707], + [115.788437, 22.809885], + [115.796444, 22.739254], + [115.829089, 22.734838], + [115.883291, 22.78561], + [115.931334, 22.802713], + [115.965211, 22.800506], + [115.99724, 22.826985], + [116.05637, 22.844635], + [116.104413, 22.816505], + [116.14137, 22.835259], + [116.239304, 22.921275], + [116.259014, 22.932298], + [116.302746, 22.951588], + [116.382818, 22.91907], + [116.449955, 22.936707], + [116.50539, 22.930645], + [116.544194, 22.996769], + [116.576839, 23.014397], + [116.557129, 23.056253], + [116.566368, 23.088738], + [116.550969, 23.109656], + [116.566368, 23.134424], + [116.665534, 23.158086], + [116.701259, 23.198248], + [116.74499, 23.215299], + [116.806584, 23.200998], + [116.821367, 23.240597], + [116.798577, 23.244996], + [116.782563, 23.313714], + [116.871874, 23.4159], + [116.871258, 23.416449], + [116.874338, 23.447199], + [116.874953, 23.447748], + [116.895895, 23.476295], + [116.888504, 23.501543], + [116.92854, 23.530079], + [116.963649, 23.507031], + [117.01046, 23.502641], + [117.044953, 23.539955], + [117.085605, 23.536663], + [117.192778, 23.5619], + [117.192778, 23.629356], + [117.147199, 23.654027], + [117.123793, 23.647448], + [117.055424, 23.694038], + [117.048032, 23.758687], + [117.019083, 23.801952], + [117.012308, 23.855054], + [116.981511, 23.855602], + [116.955642, 23.922359], + [116.976583, 23.931659], + [116.981511, 23.999471], + [116.953178, 24.008218], + [116.930388, 24.064514], + [116.9347, 24.126794], + [116.998757, 24.179217], + [116.956257, 24.216883], + [116.933468, 24.220157], + [116.938395, 24.28127], + [116.914374, 24.287817], + [116.919301, 24.321087], + [116.895895, 24.350533], + [116.903903, 24.369614], + [116.839229, 24.442097], + [116.860787, 24.460075], + [116.83307, 24.496568], + [116.796729, 24.502014], + [116.759157, 24.545572], + [116.761005, 24.583128], + [116.815207, 24.654944], + [116.777635, 24.679418], + [116.667382, 24.658752], + [116.623034, 24.64189], + [116.600861, 24.654401], + [116.570679, 24.621762], + [116.530027, 24.604895], + [116.506622, 24.621218], + [116.517709, 24.652225], + [116.485064, 24.720196], + [116.44626, 24.714216], + [116.416079, 24.744113], + [116.419158, 24.767482], + [116.375427, 24.803885], + [116.381586, 24.82507], + [116.417927, 24.840821], + [116.395137, 24.877746], + [116.363724, 24.87123], + [116.345862, 24.828872], + [116.297202, 24.801712], + [116.244232, 24.793563], + [116.251007, 24.82507], + [116.221442, 24.829959], + [116.191877, 24.877203], + [116.153073, 24.846795], + [116.068073, 24.850053], + [116.015102, 24.905975], + [115.985537, 24.899461], + [115.907929, 24.923343], + [115.89253, 24.936911], + [115.885139, 24.898918], + [115.907313, 24.879917], + [115.861733, 24.863629], + [115.863581, 24.891318], + [115.824161, 24.909232], + [115.807531, 24.862543], + [115.790284, 24.856027], + [115.764415, 24.791933], + [115.776734, 24.774546], + [115.756408, 24.749004], + [115.769342, 24.708236], + [115.801371, 24.705517], + [115.780429, 24.663103], + [115.797676, 24.628834], + [115.840791, 24.584217], + [115.843871, 24.562446], + [115.785357, 24.567345], + [115.752712, 24.546116], + [115.68927, 24.545027], + [115.671408, 24.604895], + [115.605503, 24.62557], + [115.569778, 24.622306], + [115.555611, 24.683768], + [115.522967, 24.702799], + [115.476771, 24.762591], + [115.412714, 24.79302], + [115.372678, 24.774546], + [115.358511, 24.735416], + [115.306772, 24.758787], + [115.269816, 24.749548], + [115.258729, 24.728894], + [115.1842, 24.711498], + [115.104744, 24.667997], + [115.083802, 24.699537], + [115.057317, 24.703343], + [115.024672, 24.669085], + [115.00373, 24.679418], + [114.940288, 24.650049], + [114.909491, 24.661471], + [114.893477, 24.582584], + [114.868839, 24.562446], + [114.846665, 24.602719], + [114.827571, 24.588026], + [114.781376, 24.613057], + [114.729637, 24.608704], + [114.73826, 24.565168], + [114.704999, 24.525973], + [114.664963, 24.583673], + [114.627391, 24.576598], + [114.589819, 24.537406], + [114.534384, 24.559181], + [114.429058, 24.48622], + [114.403189, 24.497657], + [114.391486, 24.563535], + [114.363769, 24.582584], + [114.300943, 24.578775], + [114.289856, 24.619042], + [114.258443, 24.641346], + [114.19069, 24.656576], + [114.169132, 24.689749], + [114.27261, 24.700624], + [114.281849, 24.724001], + [114.336052, 24.749004], + [114.342211, 24.807145], + [114.378551, 24.861457], + [114.403189, 24.877746], + [114.395798, 24.951019], + [114.454928, 24.977062], + [114.45616, 24.99659], + [114.506051, 24.999844], + [114.532536, 25.022623], + [114.561485, 25.077382], + [114.604601, 25.083886], + [114.640326, 25.074129], + [114.664963, 25.10123], + [114.735796, 25.121822], + [114.73518, 25.155954], + [114.685905, 25.173287], + [114.693912, 25.213902], + [114.73518, 25.225813], + [114.743188, 25.274528], + [114.714238, 25.315651], + [114.63663, 25.324306], + [114.599674, 25.385959], + [114.541159, 25.416773], + [114.477718, 25.37136], + [114.438914, 25.376226], + [114.43029, 25.343779], + [114.382863, 25.317274], + [114.31511, 25.33837], + [114.2954, 25.299961], + [114.260291, 25.291845], + [114.204857, 25.29942], + [114.190074, 25.316733], + [114.115545, 25.302125], + [114.083517, 25.275611], + [114.055799, 25.277775], + [114.039785, 25.250714], + [114.017611, 25.273987], + [114.029314, 25.328093], + [114.050256, 25.36433], + [113.983118, 25.415152], + [114.003444, 25.442716], + [113.94493, 25.441635], + [113.887032, 25.436772], + [113.877177, 25.380552], + [113.839605, 25.363248], + [113.814967, 25.328634], + [113.76446, 25.333502], + [113.753373, 25.362707], + [113.686852, 25.351891], + [113.680076, 25.334584], + [113.611707, 25.327552], + [113.584606, 25.306453], + [113.579062, 25.34432], + [113.535946, 25.368656], + [113.479896, 25.375145], + [113.449715, 25.359463], + [113.407215, 25.401637], + [113.373338, 25.402719], + [113.341926, 25.448661], + [113.314208, 25.442716], + [113.311129, 25.490264], + [113.248919, 25.514031], + [113.226129, 25.50971], + [113.176854, 25.471355], + [113.11834, 25.445418], + [113.131274, 25.414611], + [113.096782, 25.412449], + [113.078304, 25.382174], + [113.013014, 25.352432], + [112.969898, 25.350269], + [112.93479, 25.325929], + [112.924319, 25.296714], + [112.891058, 25.339993], + [112.854718, 25.337829], + [112.867036, 25.249632], + [112.897833, 25.238264], + [112.958195, 25.254503], + [112.992688, 25.247467], + [113.034572, 25.198199], + [112.97421, 25.168412], + [112.96805, 25.141869], + [113.004391, 25.089306], + [112.979137, 25.03401], + [113.009934, 24.977604], + [112.994536, 24.927142], + [112.941565, 24.915745], + [112.904609, 24.921715], + [112.873812, 24.896747], + [112.780805, 24.896747], + [112.778341, 24.947764], + [112.743233, 24.959701], + [112.742001, 24.99876], + [112.714899, 25.025876], + [112.712436, 25.083344], + [112.660081, 25.132658], + [112.628052, 25.140785], + [112.562762, 25.124531], + [112.458053, 25.152162], + [112.44327, 25.185744], + [112.414937, 25.14241], + [112.365046, 25.191701], + [112.315771, 25.175453], + [112.302836, 25.157037], + [112.256025, 25.159204], + [112.246785, 25.185202], + [112.187039, 25.182494], + [112.177184, 25.106649], + [112.151931, 25.055698], + [112.155626, 25.026419], + [112.12175, 24.989538], + [112.119902, 24.963499], + [112.175337, 24.927685], + [112.167329, 24.859828], + [112.149467, 24.837019], + [112.124214, 24.841364], + [112.03367, 24.771286], + [112.024431, 24.740308], + [111.961606, 24.721283], + [111.939432, 24.686487], + [111.953598, 24.64733], + [111.927729, 24.629378], + [111.936968, 24.595645], + [111.972077, 24.578775], + [112.007185, 24.534684], + [112.009649, 24.503103], + [111.985011, 24.467701], + [112.025047, 24.438828], + [112.057692, 24.387057], + [112.05954, 24.339628], + [112.026279, 24.294908], + [111.990555, 24.279634], + [111.986243, 24.25672], + [111.958526, 24.263813], + [111.912946, 24.221795], + [111.877222, 24.227252], + [111.871062, 24.176487], + [111.886461, 24.163929], + [111.878454, 24.109862], + [111.92157, 24.012045], + [111.940664, 23.987989], + [111.911714, 23.943693], + [111.854432, 23.947521], + [111.845809, 23.904305], + [111.812548, 23.887343], + [111.824867, 23.832612], + [111.8107, 23.80688], + [111.722621, 23.823305], + [111.683201, 23.822758], + [111.683201, 23.822758], + [111.654868, 23.833159], + [111.627766, 23.78881], + [111.621607, 23.725819], + [111.666571, 23.718696], + [111.614832, 23.65896], + [111.615448, 23.639225], + [111.555702, 23.64087], + [111.487332, 23.626615], + [111.479941, 23.532822], + [111.428818, 23.466414], + [111.399869, 23.469159], + [111.383239, 23.399423], + [111.389398, 23.375804], + [111.363528, 23.340641], + [111.376463, 23.30437], + [111.353058, 23.284582], + [111.36476, 23.240047], + [111.388782, 23.210349], + [111.38447, 23.16744], + [111.365992, 23.14488], + [111.377695, 23.082132], + [111.402333, 23.066165], + [111.43313, 23.073322], + [111.433746, 23.036428], + [111.389398, 23.005583], + [111.403565, 22.99126], + [111.362913, 22.967568], + [111.374615, 22.938361], + [111.358601, 22.889301], + [111.218167, 22.748085], + [111.185522, 22.735942], + [111.118385, 22.744773], + [111.058023, 22.729871], + [111.089435, 22.695643], + [111.055559, 22.648705], + [110.997045, 22.631582], + [110.958856, 22.636553], + [110.950233, 22.61059], + [110.896031, 22.613352], + [110.897878, 22.591805], + [110.812263, 22.576333], + [110.778386, 22.585174], + [110.749437, 22.556991], + [110.762988, 22.518298], + [110.740198, 22.498947], + [110.74143, 22.464109], + [110.688459, 22.477935], + [110.712481, 22.440879], + [110.711249, 22.369506], + [110.74143, 22.361757], + [110.749437, 22.329653], + [110.787009, 22.28259], + [110.759292, 22.274837], + [110.725415, 22.29588], + [110.687843, 22.249914], + [110.646575, 22.220554], + [110.678604, 22.172901], + [110.629329, 22.149068], + [110.598532, 22.162924], + [110.602843, 22.18343], + [110.55788, 22.196175], + [110.505525, 22.14297], + [110.456866, 22.189526], + [110.414366, 22.208365], + [110.378026, 22.164587], + [110.34846, 22.195621], + [110.326287, 22.152393], + [110.364475, 22.125785], + [110.35154, 22.097508], + [110.359547, 22.015973], + [110.352772, 21.97602], + [110.374946, 21.967695], + [110.374946, 21.967695], + [110.378642, 21.939942], + [110.378642, 21.939942], + [110.391576, 21.89386], + [110.337374, 21.887751], + [110.290562, 21.917736], + [110.283787, 21.892194], + [110.224041, 21.882198], + [110.224041, 21.882198], + [110.212338, 21.886085], + [110.212338, 21.886085], + [110.196323, 21.899968], + [110.12857, 21.902744], + [110.101469, 21.86998], + [110.050962, 21.857205], + [109.999839, 21.881643], + [109.94502, 21.84443], + [109.940093, 21.769419], + [109.916071, 21.668787], + [109.888354, 21.652101], + [109.888354, 21.652101], + [109.839695, 21.636525], + [109.786108, 21.637638], + [109.778101, 21.670455], + [109.742992, 21.616497], + [109.754695, 21.556396], + [109.788572, 21.490702], + [109.785492, 21.45673], + [109.819369, 21.445033], + [109.894513, 21.442248], + [109.904368, 21.429992], + [109.868644, 21.365913], + [109.770709, 21.359783], + [109.757775, 21.346963], + [109.763934, 21.226514], + [109.674623, 21.136671], + [109.674007, 21.067997], + [109.655529, 20.929435], + [109.664768, 20.862343], + [109.711579, 20.774519], + [109.730057, 20.719673], + [109.74484, 20.621124], + [109.793499, 20.615522], + [109.813825, 20.574627], + [109.811977, 20.541566], + [109.839695, 20.489439], + [109.888354, 20.475423], + [109.895745, 20.42776], + [109.864948, 20.40196], + [109.861252, 20.376717], + [109.916071, 20.316677], + [109.909296, 20.236961], + [109.929006, 20.211691], + [109.993679, 20.254368], + [110.082375, 20.258859], + [110.118099, 20.219553], + [110.168606, 20.219553], + [110.220345, 20.25156], + [110.296722, 20.249314], + [110.349076, 20.258859], + [110.384185, 20.293103], + [110.425453, 20.291419], + [110.452554, 20.311064], + [110.491358, 20.373912], + [110.54125, 20.42047], + [110.550489, 20.47262], + [110.499982, 20.572386], + [110.487047, 20.640167], + [110.466105, 20.680485], + [110.411286, 20.670966], + [110.392192, 20.682724], + [110.407591, 20.731987], + [110.393424, 20.816479], + [110.350924, 20.84165], + [110.327519, 20.847802], + [110.269004, 20.839972], + [110.209874, 20.860106], + [110.184005, 20.891979], + [110.180925, 20.98197], + [110.204947, 21.003202], + [110.208642, 21.050684], + [110.241903, 21.016051], + [110.24991, 21.045098], + [110.296722, 21.093684], + [110.39096, 21.124949], + [110.422373, 21.190807], + [110.451322, 21.186343], + [110.501213, 21.217588], + [110.534474, 21.204198], + [110.626249, 21.215915], + [110.65951, 21.239902], + [110.713097, 21.3124], + [110.768531, 21.364799], + [110.796248, 21.37483], + [110.888639, 21.367585], + [110.929291, 21.375945], + [111.034617, 21.438906], + [111.103602, 21.455616], + [111.171355, 21.458401], + [111.28284, 21.485691], + [111.276065, 21.443362], + [111.250196, 21.45116], + [111.257587, 21.41495], + [111.28592, 21.41885], + [111.353058, 21.464528], + [111.382623, 21.495714], + [111.444217, 21.514088], + [111.494724, 21.501282], + [111.521825, 21.517429], + [111.560629, 21.50518], + [111.609904, 21.530234], + [111.650556, 21.512418], + [111.677658, 21.529677], + [111.693672, 21.590345], + [111.736788, 21.609821], + [111.794686, 21.61149], + [111.832258, 21.578659], + [111.810084, 21.555283], + [111.887693, 21.578659], + [111.941896, 21.607039], + [111.972692, 21.603144], + [112.026895, 21.633744], + [111.997946, 21.657107], + [111.954214, 21.667674], + [111.956062, 21.710494], + [112.036134, 21.761637], + [112.136532, 21.793871], + [112.192583, 21.789425], + [112.196894, 21.736624], + [112.236315, 21.727173], + [112.238778, 21.702153], + [112.353343, 21.707157], + [112.415553, 21.734956], + [112.427256, 21.789981], + [112.445734, 21.803317], + [112.497473, 21.785535], + [112.535661, 21.753856], + [112.647146, 21.758302], + [112.68595, 21.810541], + [112.792508, 21.921067], + [112.841167, 21.920512], + [112.893522, 21.84443], + [112.929862, 21.838875], + [112.989608, 21.869424], + [113.047507, 21.956595], + [113.053666, 22.012089], + [113.032108, 22.04593], + [113.045659, 22.088636], + [113.086927, 22.12634], + [113.091854, 22.065344], + [113.142977, 22.012089], + [113.1516, 21.979905], + [113.235368, 21.887751], + [113.266781, 21.871646], + [113.319752, 21.909407], + [113.330223, 21.96159], + [113.442324, 22.009315], + [113.45957, 22.043711], + [113.527939, 22.073663], + [113.567359, 22.075327], + [113.554425, 22.107489], + [113.554425, 22.142416], + [113.534715, 22.174009], + [113.53841, 22.209473], + [113.558736, 22.212244] + ] + ], + [ + [ + [117.024627, 23.437865], + [116.982743, 23.460924], + [116.944555, 23.440061], + [116.951946, 23.419744], + [117.027091, 23.41535], + [117.050496, 23.400522], + [117.081909, 23.409309], + [117.124409, 23.389537], + [117.142887, 23.400522], + [117.142887, 23.459826], + [117.129336, 23.483431], + [117.093612, 23.459277], + [117.058503, 23.47355], + [117.029554, 23.443356], + [117.024627, 23.437865] + ] + ], + [ + [ + [112.853486, 21.740515], + [112.876275, 21.772753], + [112.840551, 21.776644], + [112.782653, 21.739959], + [112.724138, 21.719945], + [112.70566, 21.679354], + [112.734609, 21.666562], + [112.780189, 21.671568], + [112.730914, 21.613715], + [112.775261, 21.564189], + [112.817145, 21.590345], + [112.798667, 21.610933], + [112.821457, 21.655994], + [112.804826, 21.686583], + [112.83316, 21.736624], + [112.853486, 21.740515] + ] + ], + [ + [ + [112.530733, 21.583667], + [112.563378, 21.591458], + [112.571385, 21.619835], + [112.621277, 21.606482], + [112.665624, 21.642644], + [112.639139, 21.67268], + [112.66624, 21.683803], + [112.663776, 21.714386], + [112.592327, 21.693256], + [112.560299, 21.666562], + [112.57077, 21.645982], + [112.535045, 21.628737], + [112.530733, 21.583667] + ] + ], + [ + [ + [114.231342, 22.016528], + [114.311414, 22.041493], + [114.302791, 22.050368], + [114.239965, 22.03539], + [114.231342, 22.016528] + ] + ], + [ + [ + [110.43346, 21.171276], + [110.489511, 21.138904], + [110.508605, 21.140579], + [110.544945, 21.083633], + [110.582517, 21.094801], + [110.632409, 21.210893], + [110.589293, 21.194713], + [110.525235, 21.190249], + [110.499366, 21.213125], + [110.445163, 21.184669], + [110.431612, 21.180763], + [110.43346, 21.171276] + ] + ], + [ + [ + [112.435263, 21.663781], + [112.456205, 21.648763], + [112.458669, 21.68992], + [112.435263, 21.663781] + ] + ], + [ + [ + [110.517844, 21.079166], + [110.459946, 21.062971], + [110.398352, 21.096476], + [110.352772, 21.079724], + [110.305961, 21.0881], + [110.27578, 21.033369], + [110.211106, 20.986999], + [110.201251, 20.938378], + [110.309656, 20.963529], + [110.347845, 20.984763], + [110.407591, 20.990351], + [110.47288, 20.983087], + [110.511684, 20.916578], + [110.535706, 20.922727], + [110.539402, 20.987557], + [110.560344, 21.061295], + [110.517844, 21.079166] + ] + ], + [ + [ + [113.765076, 21.962145], + [113.774315, 21.998218], + [113.74167, 21.991559], + [113.765076, 21.962145] + ] + ], + [ + [ + [113.723192, 21.922177], + [113.742902, 21.950489], + [113.71888, 21.951599], + [113.723192, 21.922177] + ] + ], + [ + [ + [113.142977, 21.831653], + [113.162071, 21.853873], + [113.203955, 21.861093], + [113.167615, 21.876644], + [113.136818, 21.868869], + [113.142977, 21.831653] + ] + ], + [ + [ + [113.819894, 22.396068], + [113.813735, 22.419858], + [113.786634, 22.413773], + [113.819894, 22.396068] + ] + ], + [ + [ + [114.190074, 21.986564], + [114.229494, 21.995443], + [114.180835, 22.00987], + [114.190074, 21.986564] + ] + ], + [ + [ + [114.153734, 21.97491], + [114.171596, 22.000437], + [114.124169, 21.985455], + [114.153734, 21.97491] + ] + ], + [ + [ + [116.769628, 20.771721], + [116.761005, 20.750456], + [116.87249, 20.738143], + [116.889736, 20.683284], + [116.849084, 20.628405], + [116.749302, 20.600958], + [116.796113, 20.582471], + [116.862635, 20.588633], + [116.905135, 20.619443], + [116.934084, 20.676565], + [116.925461, 20.726949], + [116.88604, 20.775638], + [116.820135, 20.780674], + [116.769628, 20.771721] + ] + ], + [ + [ + [113.025333, 21.847762], + [113.045659, 21.882753], + [113.007471, 21.869424], + [113.025333, 21.847762] + ] + ], + [ + [ + [110.405127, 20.678245], + [110.437772, 20.677685], + [110.414366, 20.710157], + [110.405127, 20.678245] + ] + ], + [ + [ + [110.644727, 20.935584], + [110.584365, 20.948998], + [110.548641, 20.908752], + [110.562807, 20.861224], + [110.611467, 20.860106], + [110.646575, 20.917137], + [110.644727, 20.935584] + ] + ], + [ + [ + [110.556648, 20.32734], + [110.593604, 20.360447], + [110.586213, 20.381205], + [110.556648, 20.32734] + ] + ], + [ + [ + [115.943037, 21.097592], + [115.953508, 21.064088], + [115.989233, 21.035603], + [116.040356, 21.02052], + [116.067457, 21.04063], + [116.044051, 21.110434], + [116.024341, 21.12439], + [115.965211, 21.123832], + [115.943037, 21.097592] + ] + ], + [ + [ + [115.926407, 20.981411], + [115.939342, 20.945644], + [115.970139, 20.919373], + [115.999088, 20.922727], + [116.000936, 20.948439], + [115.954124, 20.99985], + [115.926407, 20.981411] + ] + ], + [ + [ + [115.834632, 22.722695], + [115.834632, 22.722143], + [115.835248, 22.722695], + [115.834632, 22.722695] + ] + ], + [ + [ + [115.834632, 22.723247], + [115.834632, 22.722695], + [115.835248, 22.722695], + [115.834632, 22.723247] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 450000, + "name": "广西壮族自治区", + "center": [108.320004, 22.82402], + "centroid": [108.7944, 23.833381], + "childrenNum": 14, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 19, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [109.48245, 26.029788], + [109.473211, 26.006663], + [109.408537, 25.967392], + [109.435022, 25.93349], + [109.396834, 25.900117], + [109.359262, 25.836036], + [109.339552, 25.83442], + [109.327849, 25.76168], + [109.340168, 25.731493], + [109.296436, 25.71424], + [109.207125, 25.740119], + [109.206509, 25.788087], + [109.147995, 25.741736], + [109.13198, 25.762758], + [109.143683, 25.795092], + [109.095024, 25.80533], + [109.077778, 25.776771], + [109.048213, 25.790781], + [108.989698, 25.778926], + [108.999553, 25.765453], + [108.963829, 25.732572], + [108.940423, 25.740119], + [108.896076, 25.71424], + [108.900387, 25.682423], + [108.953974, 25.686738], + [108.953974, 25.686738], + [109.007561, 25.734728], + [109.043285, 25.738502], + [109.07901, 25.72071], + [109.075314, 25.693749], + [109.030966, 25.629556], + [109.051908, 25.566949], + [109.088249, 25.550752], + [109.024807, 25.51241], + [108.949046, 25.557231], + [108.8893, 25.543193], + [108.890532, 25.556151], + [108.826474, 25.550212], + [108.814772, 25.526992], + [108.781511, 25.554531], + [108.799989, 25.576666], + [108.783975, 25.628477], + [108.724844, 25.634952], + [108.68912, 25.623081], + [108.68604, 25.587462], + [108.660787, 25.584763], + [108.658323, 25.550212], + [108.68912, 25.533473], + [108.634917, 25.520512], + [108.6072, 25.491885], + [108.600425, 25.432448], + [108.62999, 25.335666], + [108.625062, 25.308076], + [108.589338, 25.335125], + [108.585642, 25.365952], + [108.471693, 25.458928], + [108.418723, 25.443257], + [108.400244, 25.491344], + [108.359592, 25.513491], + [108.348506, 25.536173], + [108.308469, 25.525912], + [108.280752, 25.48], + [108.241332, 25.46217], + [108.251803, 25.430286], + [108.192673, 25.458928], + [108.162492, 25.444878], + [108.193289, 25.405421], + [108.142782, 25.390825], + [108.152021, 25.324306], + [108.143398, 25.269658], + [108.115065, 25.210112], + [108.080572, 25.193867], + [108.001732, 25.196574], + [107.928435, 25.155954], + [107.872384, 25.141327], + [107.839124, 25.115861], + [107.762747, 25.125073], + [107.789233, 25.15487], + [107.760283, 25.188451], + [107.762131, 25.229061], + [107.741805, 25.24043], + [107.700537, 25.194408], + [107.696226, 25.219858], + [107.661733, 25.258833], + [107.659885, 25.316192], + [107.632168, 25.310241], + [107.599523, 25.250714], + [107.576734, 25.256668], + [107.512676, 25.209029], + [107.472024, 25.213902], + [107.489886, 25.276693], + [107.481263, 25.299961], + [107.432604, 25.289139], + [107.409198, 25.347024], + [107.420901, 25.392987], + [107.375937, 25.411908], + [107.358691, 25.393528], + [107.318039, 25.401637], + [107.308184, 25.432988], + [107.336517, 25.461089], + [107.263836, 25.543193], + [107.232423, 25.556691], + [107.228728, 25.604733], + [107.205322, 25.607971], + [107.185612, 25.578825], + [107.064272, 25.559391], + [107.066736, 25.50917], + [107.015613, 25.495666], + [106.996519, 25.442716], + [106.963874, 25.437852], + [106.987896, 25.358922], + [107.012533, 25.352973], + [107.013765, 25.275611], + [106.975577, 25.232851], + [106.933077, 25.250714], + [106.904128, 25.231768], + [106.888113, 25.181953], + [106.853005, 25.186827], + [106.787715, 25.17112], + [106.764926, 25.183036], + [106.732281, 25.162454], + [106.691013, 25.179245], + [106.644817, 25.164621], + [106.63989, 25.132658], + [106.590615, 25.08768], + [106.551195, 25.082802], + [106.519782, 25.054072], + [106.450181, 25.033468], + [106.442173, 25.019369], + [106.332536, 24.988454], + [106.304819, 24.973807], + [106.253696, 24.971094], + [106.215508, 24.981944], + [106.191486, 24.95319], + [106.145291, 24.954275], + [106.197645, 24.885889], + [106.206269, 24.851139], + [106.173008, 24.760417], + [106.150218, 24.762591], + [106.113878, 24.714216], + [106.047356, 24.684312], + [106.024566, 24.633186], + [105.961741, 24.677786], + [105.942031, 24.725088], + [105.863806, 24.729437], + [105.827466, 24.702799], + [105.767104, 24.719109], + [105.70551, 24.768569], + [105.617431, 24.78161], + [105.607576, 24.803885], + [105.573083, 24.797366], + [105.497322, 24.809318], + [105.493011, 24.833217], + [105.457286, 24.87123], + [105.428337, 24.930941], + [105.365511, 24.943423], + [105.334099, 24.9266], + [105.267577, 24.929313], + [105.251563, 24.967296], + [105.212758, 24.995505], + [105.178266, 24.985199], + [105.157324, 24.958616], + [105.131454, 24.959701], + [105.09573, 24.92877], + [105.096346, 24.928228], + [105.082179, 24.915745], + [105.077868, 24.918459], + [105.039064, 24.872859], + [105.026745, 24.815836], + [105.03352, 24.787586], + [104.899245, 24.752809], + [104.865985, 24.730524], + [104.841963, 24.676155], + [104.771746, 24.659839], + [104.729246, 24.617953], + [104.703377, 24.645698], + [104.628848, 24.660927], + [104.595587, 24.709323], + [104.529682, 24.731611], + [104.489646, 24.653313], + [104.520443, 24.535228], + [104.550008, 24.518894], + [104.575877, 24.424661], + [104.616529, 24.421937], + [104.63008, 24.397958], + [104.610986, 24.377246], + [104.641783, 24.367979], + [104.70892, 24.321087], + [104.721239, 24.340173], + [104.703377, 24.419757], + [104.715695, 24.441552], + [104.74834, 24.435559], + [104.765587, 24.45953], + [104.784681, 24.443732], + [104.83642, 24.446456], + [104.914028, 24.426296], + [104.930042, 24.411038], + [104.979933, 24.412673], + [105.042759, 24.442097], + [105.106817, 24.414853], + [105.111744, 24.37234], + [105.138846, 24.376701], + [105.188121, 24.347261], + [105.196744, 24.326541], + [105.164715, 24.288362], + [105.215222, 24.214699], + [105.24294, 24.208695], + [105.229389, 24.165567], + [105.182577, 24.167205], + [105.20044, 24.105491], + [105.260186, 24.061236], + [105.292831, 24.074896], + [105.273121, 24.092927], + [105.320548, 24.116416], + [105.334099, 24.094566], + [105.395692, 24.065607], + [105.406163, 24.043748], + [105.493011, 24.016965], + [105.533663, 24.130071], + [105.594641, 24.137718], + [105.628518, 24.126794], + [105.649459, 24.032816], + [105.704278, 24.0667], + [105.739387, 24.059596], + [105.765256, 24.073804], + [105.802212, 24.051945], + [105.796669, 24.023524], + [105.841633, 24.03063], + [105.859495, 24.056864], + [105.89214, 24.040468], + [105.908154, 24.069432], + [105.901995, 24.099482], + [105.919241, 24.122425], + [105.963589, 24.110954], + [105.998081, 24.120786], + [106.011632, 24.099482], + [106.04982, 24.089649], + [106.053516, 24.051399], + [106.096631, 24.018058], + [106.091088, 23.998924], + [106.128044, 23.956819], + [106.157609, 23.891174], + [106.192718, 23.879135], + [106.173008, 23.861622], + [106.192102, 23.824947], + [106.136667, 23.795381], + [106.157609, 23.724175], + [106.149602, 23.665538], + [106.120653, 23.605229], + [106.141595, 23.569579], + [106.08616, 23.524043], + [106.071994, 23.495506], + [106.039965, 23.484529], + [105.999929, 23.447748], + [105.986378, 23.489469], + [105.935871, 23.508678], + [105.913081, 23.499348], + [105.89214, 23.52514], + [105.852103, 23.526786], + [105.815763, 23.507031], + [105.805908, 23.467512], + [105.758481, 23.459826], + [105.699966, 23.40162], + [105.637757, 23.404366], + [105.694423, 23.363168], + [105.699966, 23.327453], + [105.649459, 23.346136], + [105.593409, 23.312614], + [105.560148, 23.257093], + [105.526272, 23.234548], + [105.542902, 23.184495], + [105.558916, 23.177893], + [105.574931, 23.066165], + [105.625438, 23.064513], + [105.648844, 23.078828], + [105.724604, 23.06231], + [105.74185, 23.030921], + [105.780039, 23.022659], + [105.805908, 22.994565], + [105.839169, 22.987403], + [105.879205, 22.916865], + [105.893987, 22.936707], + [105.959277, 22.948832], + [105.994385, 22.93781], + [106.019639, 22.990709], + [106.08616, 22.996218], + [106.106486, 22.980792], + [106.153914, 22.988505], + [106.206885, 22.978588], + [106.270326, 22.907494], + [106.258007, 22.889852], + [106.286957, 22.867245], + [106.366413, 22.857871], + [106.37134, 22.878273], + [106.41384, 22.877171], + [106.504383, 22.91025], + [106.525941, 22.946628], + [106.562282, 22.923479], + [106.606013, 22.925684], + [106.631267, 22.88103], + [106.657136, 22.863385], + [106.674998, 22.891506], + [106.716882, 22.881582], + [106.709491, 22.866142], + [106.774781, 22.812643], + [106.776012, 22.813746], + [106.778476, 22.814298], + [106.779092, 22.813746], + [106.779708, 22.813195], + [106.78094, 22.813195], + [106.784636, 22.812643], + [106.796338, 22.812091], + [106.801882, 22.815401], + [106.804346, 22.816505], + [106.808657, 22.817608], + [106.813585, 22.817608], + [106.838838, 22.803265], + [106.820976, 22.768504], + [106.768621, 22.739254], + [106.780324, 22.708894], + [106.756302, 22.68957], + [106.711955, 22.575228], + [106.650361, 22.575228], + [106.61402, 22.602303], + [106.585071, 22.517192], + [106.588151, 22.472958], + [106.560434, 22.455813], + [106.588767, 22.374486], + [106.562897, 22.345706], + [106.663296, 22.33076], + [106.670071, 22.283144], + [106.688549, 22.260438], + [106.7021, 22.207257], + [106.673151, 22.182322], + [106.706411, 22.160707], + [106.691629, 22.13521], + [106.71565, 22.089745], + [106.706411, 22.021521], + [106.683006, 21.999882], + [106.698404, 21.959925], + [106.73844, 22.008205], + [106.790179, 22.004876], + [106.802498, 21.98157], + [106.859164, 21.986009], + [106.926302, 21.967695], + [106.935541, 21.933836], + [106.974345, 21.923288], + [106.999598, 21.947714], + [107.05996, 21.914959], + [107.058729, 21.887196], + [107.018693, 21.859427], + [107.018077, 21.81943], + [107.093837, 21.803317], + [107.148656, 21.758858], + [107.194851, 21.736624], + [107.199163, 21.718833], + [107.242279, 21.703265], + [107.271844, 21.727173], + [107.310648, 21.733844], + [107.356843, 21.667674], + [107.363619, 21.602031], + [107.388256, 21.594241], + [107.431372, 21.642088], + [107.477567, 21.659888], + [107.500973, 21.613715], + [107.486806, 21.59591], + [107.547168, 21.58645], + [107.584741, 21.614828], + [107.603219, 21.597579], + [107.712856, 21.616497], + [107.807711, 21.655438], + [107.837892, 21.640419], + [107.863761, 21.650988], + [107.892095, 21.622617], + [107.893942, 21.596466], + [107.929051, 21.585893], + [107.958, 21.534131], + [108.034376, 21.545821], + [108.108289, 21.508521], + [108.193905, 21.519656], + [108.156332, 21.55083], + [108.205608, 21.597579], + [108.241332, 21.599805], + [108.249955, 21.561406], + [108.210535, 21.505737], + [108.230245, 21.491259], + [108.330027, 21.540254], + [108.397781, 21.533017], + [108.492635, 21.554727], + [108.591802, 21.677129], + [108.626294, 21.67991], + [108.658939, 21.643757], + [108.678033, 21.659331], + [108.735931, 21.628181], + [108.734084, 21.626512], + [108.745786, 21.602587], + [108.801837, 21.626512], + [108.83325, 21.610933], + [108.881293, 21.627068], + [108.937959, 21.589789], + [109.093792, 21.579215], + [109.09872, 21.571424], + [109.110422, 21.568085], + [109.138756, 21.567528], + [109.142451, 21.511861], + [109.074698, 21.489589], + [109.039589, 21.457844], + [109.046365, 21.424421], + [109.095024, 21.419407], + [109.138756, 21.388762], + [109.186183, 21.390991], + [109.245929, 21.425536], + [109.41716, 21.438906], + [109.484914, 21.453388], + [109.529877, 21.437234], + [109.540964, 21.466199], + [109.576689, 21.493487], + [109.604406, 21.523553], + [109.612413, 21.556953], + [109.654913, 21.493487], + [109.704188, 21.462857], + [109.785492, 21.45673], + [109.788572, 21.490702], + [109.754695, 21.556396], + [109.742992, 21.616497], + [109.778101, 21.670455], + [109.786108, 21.637638], + [109.839695, 21.636525], + [109.888354, 21.652101], + [109.888354, 21.652101], + [109.916071, 21.668787], + [109.940093, 21.769419], + [109.94502, 21.84443], + [109.999839, 21.881643], + [110.050962, 21.857205], + [110.101469, 21.86998], + [110.12857, 21.902744], + [110.196323, 21.899968], + [110.212338, 21.886085], + [110.212338, 21.886085], + [110.224041, 21.882198], + [110.224041, 21.882198], + [110.283787, 21.892194], + [110.290562, 21.917736], + [110.337374, 21.887751], + [110.391576, 21.89386], + [110.378642, 21.939942], + [110.378642, 21.939942], + [110.374946, 21.967695], + [110.374946, 21.967695], + [110.352772, 21.97602], + [110.359547, 22.015973], + [110.35154, 22.097508], + [110.364475, 22.125785], + [110.326287, 22.152393], + [110.34846, 22.195621], + [110.378026, 22.164587], + [110.414366, 22.208365], + [110.456866, 22.189526], + [110.505525, 22.14297], + [110.55788, 22.196175], + [110.602843, 22.18343], + [110.598532, 22.162924], + [110.629329, 22.149068], + [110.678604, 22.172901], + [110.646575, 22.220554], + [110.687843, 22.249914], + [110.725415, 22.29588], + [110.759292, 22.274837], + [110.787009, 22.28259], + [110.749437, 22.329653], + [110.74143, 22.361757], + [110.711249, 22.369506], + [110.712481, 22.440879], + [110.688459, 22.477935], + [110.74143, 22.464109], + [110.740198, 22.498947], + [110.762988, 22.518298], + [110.749437, 22.556991], + [110.778386, 22.585174], + [110.812263, 22.576333], + [110.897878, 22.591805], + [110.896031, 22.613352], + [110.950233, 22.61059], + [110.958856, 22.636553], + [110.997045, 22.631582], + [111.055559, 22.648705], + [111.089435, 22.695643], + [111.058023, 22.729871], + [111.118385, 22.744773], + [111.185522, 22.735942], + [111.218167, 22.748085], + [111.358601, 22.889301], + [111.374615, 22.938361], + [111.362913, 22.967568], + [111.403565, 22.99126], + [111.389398, 23.005583], + [111.433746, 23.036428], + [111.43313, 23.073322], + [111.402333, 23.066165], + [111.377695, 23.082132], + [111.365992, 23.14488], + [111.38447, 23.16744], + [111.388782, 23.210349], + [111.36476, 23.240047], + [111.353058, 23.284582], + [111.376463, 23.30437], + [111.363528, 23.340641], + [111.389398, 23.375804], + [111.383239, 23.399423], + [111.399869, 23.469159], + [111.428818, 23.466414], + [111.479941, 23.532822], + [111.487332, 23.626615], + [111.555702, 23.64087], + [111.615448, 23.639225], + [111.614832, 23.65896], + [111.666571, 23.718696], + [111.621607, 23.725819], + [111.627766, 23.78881], + [111.654868, 23.833159], + [111.683201, 23.822758], + [111.683201, 23.822758], + [111.722621, 23.823305], + [111.8107, 23.80688], + [111.824867, 23.832612], + [111.812548, 23.887343], + [111.845809, 23.904305], + [111.854432, 23.947521], + [111.911714, 23.943693], + [111.940664, 23.987989], + [111.92157, 24.012045], + [111.878454, 24.109862], + [111.886461, 24.163929], + [111.871062, 24.176487], + [111.877222, 24.227252], + [111.912946, 24.221795], + [111.958526, 24.263813], + [111.986243, 24.25672], + [111.990555, 24.279634], + [112.026279, 24.294908], + [112.05954, 24.339628], + [112.057692, 24.387057], + [112.025047, 24.438828], + [111.985011, 24.467701], + [112.009649, 24.503103], + [112.007185, 24.534684], + [111.972077, 24.578775], + [111.936968, 24.595645], + [111.927729, 24.629378], + [111.953598, 24.64733], + [111.939432, 24.686487], + [111.961606, 24.721283], + [112.024431, 24.740308], + [111.951135, 24.769655], + [111.929577, 24.75607], + [111.875374, 24.756613], + [111.868599, 24.771829], + [111.814396, 24.770199], + [111.783599, 24.785957], + [111.708455, 24.788673], + [111.666571, 24.760961], + [111.637621, 24.715303], + [111.641933, 24.684856], + [111.588962, 24.690837], + [111.570484, 24.64461], + [111.526752, 24.637538], + [111.499035, 24.667997], + [111.451608, 24.665822], + [111.431282, 24.687574], + [111.461463, 24.728894], + [111.479325, 24.797366], + [111.449144, 24.857113], + [111.447296, 24.892947], + [111.470086, 24.92877], + [111.434977, 24.951562], + [111.43313, 24.979774], + [111.460231, 24.992793], + [111.467622, 25.02208], + [111.416499, 25.047566], + [111.435593, 25.093642], + [111.375231, 25.128324], + [111.36784, 25.108817], + [111.321645, 25.105023], + [111.274833, 25.151078], + [111.221862, 25.106649], + [111.200921, 25.074672], + [111.139943, 25.042144], + [111.101754, 25.035095], + [111.100522, 24.945593], + [111.009363, 24.921172], + [110.968711, 24.975434], + [110.951465, 25.04377], + [110.98411, 25.101772], + [110.998892, 25.161371], + [111.112841, 25.21715], + [111.103602, 25.285351], + [111.138711, 25.303748], + [111.184906, 25.367034], + [111.210776, 25.363248], + [111.279145, 25.42326], + [111.32842, 25.521592], + [111.324724, 25.564249], + [111.343202, 25.602574], + [111.309942, 25.645203], + [111.30871, 25.720171], + [111.399869, 25.744431], + [111.442369, 25.77192], + [111.43313, 25.84627], + [111.4861, 25.859196], + [111.460231, 25.885042], + [111.383239, 25.881812], + [111.376463, 25.906039], + [111.346282, 25.906577], + [111.297007, 25.874274], + [111.29208, 25.854349], + [111.251428, 25.864581], + [111.230486, 25.916267], + [111.189834, 25.953402], + [111.235413, 26.048071], + [111.267442, 26.058824], + [111.244652, 26.078177], + [111.26621, 26.095914], + [111.258203, 26.151796], + [111.274833, 26.183486], + [111.271754, 26.217316], + [111.293311, 26.222148], + [111.277913, 26.272066], + [111.228022, 26.261333], + [111.204616, 26.276359], + [111.208928, 26.30426], + [111.090667, 26.308016], + [111.008132, 26.336982], + [111.008747, 26.35897], + [110.974255, 26.385778], + [110.94469, 26.373447], + [110.944074, 26.326791], + [110.926212, 26.320354], + [110.939762, 26.286554], + [110.836284, 26.255966], + [110.759292, 26.248451], + [110.73527, 26.270993], + [110.742046, 26.313917], + [110.721104, 26.294066], + [110.673676, 26.317135], + [110.643495, 26.308552], + [110.612083, 26.333764], + [110.584365, 26.296749], + [110.552952, 26.283335], + [110.546793, 26.233421], + [110.495054, 26.166299], + [110.477808, 26.179727], + [110.437772, 26.153945], + [110.373098, 26.088927], + [110.325671, 25.975462], + [110.257301, 25.961473], + [110.24991, 26.010965], + [110.181541, 26.060437], + [110.168606, 26.028713], + [110.100853, 26.020108], + [110.065128, 26.050221], + [110.100853, 26.132455], + [110.099005, 26.168985], + [110.03002, 26.166299], + [109.970274, 26.195301], + [109.904368, 26.135679], + [109.898825, 26.095377], + [109.864332, 26.027637], + [109.814441, 26.041081], + [109.782412, 25.996981], + [109.806434, 25.973848], + [109.826144, 25.911422], + [109.811361, 25.877504], + [109.779333, 25.866196], + [109.768246, 25.890427], + [109.685094, 25.880197], + [109.67955, 25.921649], + [109.693717, 25.959321], + [109.710963, 25.954478], + [109.730057, 25.989988], + [109.649369, 26.016882], + [109.635203, 26.047533], + [109.588391, 26.019571], + [109.560058, 26.021184], + [109.513247, 25.998056], + [109.48245, 26.029788] + ] + ], + [ + [ + [105.096346, 24.928228], + [105.09573, 24.92877], + [105.077868, 24.918459], + [105.082179, 24.915745], + [105.096346, 24.928228] + ] + ], + [ + [ + [109.088249, 21.014934], + [109.11227, 21.02499], + [109.117814, 21.017727], + [109.144299, 21.041189], + [109.138756, 21.067439], + [109.09256, 21.057386], + [109.088865, 21.031134], + [109.088249, 21.014934] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 460000, + "name": "海南省", + "center": [110.33119, 20.031971], + "centroid": [109.754859, 19.189767], + "childrenNum": 19, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 20, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [110.106396, 20.026812], + [110.042339, 19.991384], + [109.997375, 19.980136], + [109.965346, 19.993634], + [109.898825, 19.994196], + [109.855093, 19.984073], + [109.814441, 19.993072], + [109.76147, 19.981261], + [109.712195, 20.017253], + [109.657993, 20.01163], + [109.585312, 19.98801], + [109.526797, 19.943573], + [109.498464, 19.873236], + [109.411001, 19.895184], + [109.349407, 19.898561], + [109.300748, 19.917693], + [109.25948, 19.898561], + [109.255784, 19.867045], + [109.231147, 19.863105], + [109.159082, 19.79048], + [109.169553, 19.736411], + [109.147379, 19.704863], + [109.093792, 19.68965], + [109.048829, 19.619764], + [108.993394, 19.587065], + [108.92872, 19.524468], + [108.855424, 19.469182], + [108.806148, 19.450561], + [108.765496, 19.400894], + [108.694047, 19.387346], + [108.644772, 19.349518], + [108.609048, 19.276661], + [108.591186, 19.141592], + [108.598577, 19.055633], + [108.630606, 19.003017], + [108.637997, 18.924346], + [108.595497, 18.872256], + [108.593033, 18.809386], + [108.65278, 18.740258], + [108.663866, 18.67337], + [108.641077, 18.565614], + [108.644772, 18.486738], + [108.68912, 18.447571], + [108.776583, 18.441894], + [108.881293, 18.416344], + [108.905315, 18.389087], + [108.944735, 18.314107], + [109.006329, 18.323198], + [109.108575, 18.323766], + [109.138756, 18.268081], + [109.17448, 18.260125], + [109.287813, 18.264671], + [109.355566, 18.215221], + [109.441182, 18.199303], + [109.467051, 18.173718], + [109.527413, 18.169169], + [109.584696, 18.143579], + [109.661688, 18.175424], + [109.726362, 18.177698], + [109.749767, 18.193618], + [109.785492, 18.339672], + [109.919767, 18.375457], + [110.022629, 18.360121], + [110.070672, 18.376025], + [110.090382, 18.399309], + [110.116867, 18.506602], + [110.214186, 18.578662], + [110.246215, 18.609859], + [110.329366, 18.642185], + [110.367555, 18.631977], + [110.499366, 18.651824], + [110.499366, 18.751592], + [110.578206, 18.784458], + [110.590525, 18.838841], + [110.585597, 18.88075], + [110.619474, 19.152334], + [110.676756, 19.286264], + [110.706321, 19.320153], + [110.729727, 19.378878], + [110.787009, 19.399765], + [110.844292, 19.449996], + [110.888023, 19.518827], + [110.920668, 19.552668], + [111.008747, 19.60398], + [111.061718, 19.612436], + [111.071573, 19.628784], + [111.043856, 19.763448], + [111.013675, 19.850159], + [110.966248, 20.018377], + [110.940994, 20.028499], + [110.871393, 20.01163], + [110.808567, 20.035808], + [110.778386, 20.068415], + [110.744509, 20.074036], + [110.717408, 20.148778], + [110.687843, 20.163947], + [110.655814, 20.134169], + [110.562191, 20.110006], + [110.526467, 20.07516], + [110.495054, 20.077408], + [110.387265, 20.113378], + [110.318279, 20.108882], + [110.28933, 20.056047], + [110.243135, 20.077408], + [110.144585, 20.074598], + [110.106396, 20.026812] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 500000, + "name": "重庆市", + "center": [106.504962, 29.533155], + "centroid": [107.8839, 30.067297], + "childrenNum": 38, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 21, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [106.37442, 28.525742], + [106.403369, 28.569901], + [106.477282, 28.530474], + [106.504999, 28.544669], + [106.466811, 28.586193], + [106.49268, 28.591448], + [106.502535, 28.661313], + [106.528405, 28.677591], + [106.492064, 28.742153], + [106.461883, 28.761041], + [106.45326, 28.817162], + [106.474202, 28.832891], + [106.561666, 28.756319], + [106.56105, 28.719062], + [106.587535, 28.691767], + [106.6171, 28.691242], + [106.617716, 28.66709], + [106.651593, 28.649235], + [106.618332, 28.645033], + [106.63681, 28.622972], + [106.606629, 28.593024], + [106.615252, 28.549401], + [106.567825, 28.523638], + [106.564745, 28.485247], + [106.632499, 28.503655], + [106.697788, 28.47683], + [106.708259, 28.450524], + [106.747063, 28.467361], + [106.726121, 28.51838], + [106.73844, 28.554657], + [106.77786, 28.563068], + [106.756918, 28.607211], + [106.784636, 28.626649], + [106.807425, 28.589346], + [106.830831, 28.623497], + [106.866556, 28.624548], + [106.889345, 28.695966], + [106.86594, 28.690192], + [106.824056, 28.756319], + [106.845614, 28.780975], + [106.872099, 28.777304], + [106.923222, 28.809821], + [106.951555, 28.766812], + [106.988512, 28.776254], + [106.983584, 28.851239], + [107.019308, 28.861722], + [107.016229, 28.882685], + [107.14188, 28.887925], + [107.206554, 28.868535], + [107.194851, 28.838134], + [107.227496, 28.836037], + [107.210866, 28.817686], + [107.219489, 28.772582], + [107.24659, 28.76209], + [107.261373, 28.792514], + [107.327894, 28.810869], + [107.339597, 28.845997], + [107.383945, 28.848618], + [107.41351, 28.911502], + [107.441227, 28.943977], + [107.412894, 28.960211], + [107.396879, 28.993718], + [107.364235, 29.00942], + [107.395647, 29.041341], + [107.369778, 29.091558], + [107.412278, 29.094696], + [107.427676, 29.128682], + [107.408582, 29.138091], + [107.401807, 29.184603], + [107.441227, 29.203934], + [107.486806, 29.174153], + [107.570574, 29.218037], + [107.589052, 29.150113], + [107.605683, 29.164747], + [107.659885, 29.162656], + [107.700537, 29.141228], + [107.749197, 29.199754], + [107.810791, 29.139137], + [107.784921, 29.048143], + [107.823725, 29.034016], + [107.810175, 28.984295], + [107.867457, 28.960211], + [107.882855, 29.00628], + [107.908725, 29.007327], + [107.925971, 29.032446], + [108.026369, 29.039772], + [108.070717, 29.086328], + [108.150173, 29.053375], + [108.193289, 29.072207], + [108.256115, 29.040295], + [108.277673, 29.091558], + [108.306622, 29.079006], + [108.297999, 29.045527], + [108.319556, 28.961258], + [108.345426, 28.943453], + [108.357745, 28.893165], + [108.346658, 28.859625], + [108.352817, 28.815589], + [108.386078, 28.803003], + [108.385462, 28.772058], + [108.347274, 28.736381], + [108.332491, 28.679166], + [108.439049, 28.634003], + [108.501258, 28.626649], + [108.50249, 28.63768], + [108.575787, 28.659738], + [108.636149, 28.621396], + [108.604736, 28.590922], + [108.610896, 28.539412], + [108.573939, 28.531], + [108.586874, 28.463678], + [108.609664, 28.43579], + [108.609048, 28.407368], + [108.576403, 28.38631], + [108.580099, 28.343128], + [108.611512, 28.324691], + [108.667562, 28.334173], + [108.656475, 28.359981], + [108.697127, 28.401051], + [108.688504, 28.422106], + [108.640461, 28.456838], + [108.657091, 28.47683], + [108.700207, 28.48209], + [108.709446, 28.501026], + [108.746402, 28.45105], + [108.780279, 28.42579], + [108.759953, 28.389995], + [108.783359, 28.380518], + [108.761801, 28.304143], + [108.726692, 28.282011], + [108.738395, 28.228241], + [108.772888, 28.212949], + [108.821547, 28.245113], + [108.855424, 28.199764], + [108.89546, 28.219804], + [108.923793, 28.217167], + [108.929952, 28.19027], + [109.005713, 28.162837], + [109.026655, 28.220331], + [109.086401, 28.184467], + [109.101799, 28.202401], + [109.081473, 28.247749], + [109.117198, 28.277795], + [109.152306, 28.349975], + [109.153538, 28.417369], + [109.191726, 28.471043], + [109.23361, 28.474726], + [109.274262, 28.494714], + [109.273646, 28.53836], + [109.319842, 28.579886], + [109.306907, 28.62087], + [109.252089, 28.606685], + [109.235458, 28.61982], + [109.201581, 28.597753], + [109.192958, 28.636104], + [109.271183, 28.671816], + [109.252704, 28.691767], + [109.294588, 28.722211], + [109.2989, 28.7474], + [109.241002, 28.776779], + [109.246545, 28.80143], + [109.235458, 28.882161], + [109.261328, 28.952356], + [109.292741, 28.987436], + [109.294588, 29.015177], + [109.319842, 29.042388], + [109.312451, 29.066453], + [109.240386, 29.086328], + [109.232378, 29.119271], + [109.215748, 29.145409], + [109.162777, 29.180946], + [109.139372, 29.168927], + [109.110422, 29.21647], + [109.141835, 29.270256], + [109.106727, 29.288526], + [109.11227, 29.361053], + [109.060531, 29.403292], + [109.034662, 29.360531], + [108.999553, 29.36366], + [108.983539, 29.332883], + [108.919481, 29.3261], + [108.934264, 29.399643], + [108.927488, 29.435612], + [108.884373, 29.440824], + [108.866511, 29.470527], + [108.888684, 29.502305], + [108.878213, 29.539279], + [108.913322, 29.574679], + [108.901003, 29.604863], + [108.870206, 29.596537], + [108.888068, 29.628795], + [108.844337, 29.658443], + [108.781511, 29.635558], + [108.797525, 29.660003], + [108.786438, 29.691721], + [108.752562, 29.649082], + [108.690968, 29.689642], + [108.676801, 29.749412], + [108.680497, 29.800319], + [108.658939, 29.854833], + [108.601041, 29.863656], + [108.556077, 29.818493], + [108.52528, 29.770713], + [108.548686, 29.749412], + [108.504954, 29.728626], + [108.504338, 29.707836], + [108.460606, 29.741098], + [108.437201, 29.741098], + [108.442744, 29.778505], + [108.422418, 29.772791], + [108.424266, 29.815897], + [108.371295, 29.841337], + [108.433505, 29.880262], + [108.467998, 29.864175], + [108.516041, 29.885451], + [108.517889, 29.9394], + [108.536367, 29.983472], + [108.532055, 30.051873], + [108.513577, 30.057571], + [108.546222, 30.104178], + [108.56778, 30.157491], + [108.551766, 30.1637], + [108.581947, 30.255759], + [108.54499, 30.269716], + [108.524048, 30.309506], + [108.501258, 30.314673], + [108.460606, 30.35961], + [108.431041, 30.354446], + [108.402092, 30.376649], + [108.430425, 30.416397], + [108.411331, 30.438586], + [108.42673, 30.492233], + [108.472925, 30.487076], + [108.512961, 30.501515], + [108.556077, 30.487592], + [108.56778, 30.468508], + [108.6497, 30.53915], + [108.642925, 30.578831], + [108.688504, 30.58759], + [108.698975, 30.54482], + [108.743939, 30.494812], + [108.789518, 30.513374], + [108.808612, 30.491202], + [108.838793, 30.503062], + [108.893612, 30.565434], + [108.971836, 30.627766], + [109.006329, 30.626736], + [109.042669, 30.655571], + [109.071002, 30.640125], + [109.111654, 30.646303], + [109.106111, 30.61077], + [109.105495, 30.585529], + [109.102415, 30.580377], + [109.101183, 30.579346], + [109.106111, 30.570587], + [109.103647, 30.565949], + [109.143683, 30.521108], + [109.191726, 30.545851], + [109.191726, 30.545851], + [109.245313, 30.580892], + [109.299516, 30.630341], + [109.314298, 30.599953], + [109.36111, 30.551004], + [109.337088, 30.521623], + [109.35495, 30.487076], + [109.418392, 30.559766], + [109.435638, 30.595832], + [109.535421, 30.664837], + [109.543428, 30.63961], + [109.574225, 30.646818], + [109.590855, 30.69366], + [109.625348, 30.702923], + [109.661072, 30.738936], + [109.656761, 30.760538], + [109.701724, 30.783677], + [109.780564, 30.848437], + [109.828608, 30.864364], + [109.894513, 30.899803], + [109.943788, 30.878746], + [110.008462, 30.883369], + [110.019549, 30.829425], + [110.048498, 30.800642], + [110.082375, 30.799614], + [110.151976, 30.911613], + [110.153824, 30.953708], + [110.172918, 30.978853], + [110.140889, 30.987062], + [110.140273, 31.030661], + [110.120563, 31.0322], + [110.119947, 31.088592], + [110.147048, 31.116776], + [110.180309, 31.121899], + [110.200019, 31.158779], + [110.180309, 31.179774], + [110.155671, 31.279564], + [110.161831, 31.314338], + [110.118715, 31.409899], + [110.054042, 31.410921], + [110.036795, 31.436966], + [109.98752, 31.474744], + [109.94502, 31.47066], + [109.969658, 31.508935], + [109.894513, 31.519139], + [109.837847, 31.555354], + [109.727594, 31.548214], + [109.745456, 31.598182], + [109.76455, 31.602769], + [109.737449, 31.628761], + [109.731289, 31.700582], + [109.683246, 31.719929], + [109.622268, 31.711783], + [109.585928, 31.726546], + [109.549587, 31.73011], + [109.502776, 31.716365], + [109.446109, 31.722983], + [109.381436, 31.705165], + [109.281654, 31.716874], + [109.282885, 31.743343], + [109.253936, 31.759628], + [109.279806, 31.776418], + [109.27611, 31.79931], + [109.195422, 31.817618], + [109.191111, 31.85575], + [109.123357, 31.892851], + [109.085785, 31.929428], + [108.986619, 31.980205], + [108.902235, 31.984774], + [108.837561, 32.039072], + [108.78767, 32.04871], + [108.75133, 32.076098], + [108.734084, 32.106519], + [108.676801, 32.10297], + [108.585026, 32.17189], + [108.543758, 32.177969], + [108.509882, 32.201266], + [108.480317, 32.182527], + [108.399013, 32.194176], + [108.370063, 32.172397], + [108.379918, 32.154158], + [108.379918, 32.154158], + [108.379303, 32.153652], + [108.379303, 32.153652], + [108.399628, 32.147065], + [108.452599, 32.090296], + [108.42981, 32.061391], + [108.372527, 32.077112], + [108.344194, 32.067477], + [108.362056, 32.035521], + [108.329411, 32.020299], + [108.370063, 31.988835], + [108.351585, 31.971575], + [108.307238, 31.997463], + [108.259194, 31.967006], + [108.343578, 31.860834], + [108.386078, 31.854226], + [108.391005, 31.829822], + [108.429194, 31.809482], + [108.455063, 31.814059], + [108.462454, 31.780488], + [108.535135, 31.757592], + [108.50557, 31.734182], + [108.514809, 31.693963], + [108.546838, 31.665442], + [108.519121, 31.665952], + [108.468614, 31.636404], + [108.442744, 31.633856], + [108.390389, 31.591555], + [108.386078, 31.544134], + [108.339266, 31.539033], + [108.344194, 31.512506], + [108.254883, 31.49873], + [108.233941, 31.506894], + [108.191441, 31.492096], + [108.193289, 31.467598], + [108.224086, 31.464024], + [108.216079, 31.41041], + [108.153869, 31.371073], + [108.185898, 31.336831], + [108.095354, 31.268311], + [108.038688, 31.252964], + [108.031297, 31.217144], + [108.07626, 31.231985], + [108.089811, 31.204859], + [108.025753, 31.116263], + [108.009123, 31.109602], + [108.026985, 31.061938], + [108.060246, 31.052197], + [108.00358, 31.025533], + [107.983254, 30.983983], + [107.942602, 30.989114], + [107.948145, 30.918802], + [107.994956, 30.908533], + [107.956152, 30.882855], + [107.851443, 30.792931], + [107.788001, 30.81966], + [107.763979, 30.817091], + [107.760899, 30.862823], + [107.739957, 30.884396], + [107.693146, 30.875665], + [107.645103, 30.821202], + [107.57735, 30.847924], + [107.515756, 30.854603], + [107.483111, 30.838675], + [107.498509, 30.809381], + [107.454162, 30.771851], + [107.454162, 30.771851], + [107.424597, 30.74048], + [107.458473, 30.704981], + [107.477567, 30.664837], + [107.516987, 30.644759], + [107.485575, 30.598408], + [107.427676, 30.547397], + [107.443075, 30.53348], + [107.408582, 30.521623], + [107.368546, 30.468508], + [107.338981, 30.386459], + [107.288474, 30.337402], + [107.257677, 30.267131], + [107.221337, 30.213878], + [107.103076, 30.090198], + [107.080286, 30.094341], + [107.084598, 30.063786], + [107.058113, 30.043066], + [107.055649, 30.040476], + [107.054417, 30.040994], + [107.053801, 30.043584], + [107.02054, 30.036849], + [106.981736, 30.08502], + [106.976193, 30.083467], + [106.94478, 30.037367], + [106.913367, 30.025451], + [106.862244, 30.033223], + [106.83699, 30.049801], + [106.825904, 30.03115], + [106.825904, 30.03115], + [106.785252, 30.01716], + [106.732281, 30.027005], + [106.724274, 30.058607], + [106.699636, 30.074145], + [106.700252, 30.111944], + [106.672535, 30.122297], + [106.677462, 30.156974], + [106.631883, 30.186464], + [106.611557, 30.235596], + [106.612173, 30.235596], + [106.611557, 30.235596], + [106.612173, 30.235596], + [106.612173, 30.235596], + [106.612789, 30.235596], + [106.612789, 30.235596], + [106.642354, 30.246454], + [106.611557, 30.292455], + [106.560434, 30.31519], + [106.545035, 30.296589], + [106.49884, 30.295556], + [106.43971, 30.308473], + [106.428623, 30.254725], + [106.401521, 30.242318], + [106.349167, 30.24542], + [106.334384, 30.225772], + [106.306667, 30.238182], + [106.296196, 30.205603], + [106.264167, 30.20974], + [106.260471, 30.19681], + [106.232754, 30.185947], + [106.180399, 30.233011], + [106.168696, 30.303823], + [106.132356, 30.323972], + [106.132972, 30.30279], + [106.07261, 30.333786], + [106.031958, 30.373551], + [105.943263, 30.372002], + [105.900763, 30.405042], + [105.84656, 30.410203], + [105.825618, 30.436006], + [105.792357, 30.427234], + [105.760329, 30.384393], + [105.754785, 30.342567], + [105.714749, 30.322939], + [105.720292, 30.252657], + [105.720292, 30.252657], + [105.670401, 30.254208], + [105.624822, 30.275918], + [105.619894, 30.234045], + [105.662394, 30.210258], + [105.642684, 30.186464], + [105.56138, 30.183878], + [105.550909, 30.179222], + [105.536127, 30.152834], + [105.596489, 30.159043], + [105.574315, 30.130579], + [105.580474, 30.129544], + [105.582938, 30.127474], + [105.582938, 30.12385], + [105.642068, 30.101072], + [105.638988, 30.076216], + [105.676561, 30.06793], + [105.687032, 30.038922], + [105.719677, 30.042548], + [105.753553, 30.018196], + [105.723372, 29.975177], + [105.730763, 29.95755], + [105.70243, 29.924879], + [105.717213, 29.893753], + [105.738771, 29.891159], + [105.707974, 29.840818], + [105.610655, 29.837184], + [105.582938, 29.819013], + [105.574931, 29.744216], + [105.529351, 29.707836], + [105.481924, 29.718232], + [105.476996, 29.674564], + [105.419714, 29.688082], + [105.38091, 29.628275], + [105.347649, 29.621512], + [105.332867, 29.592374], + [105.296526, 29.571035], + [105.305149, 29.53199], + [105.337794, 29.459064], + [105.334099, 29.441345], + [105.387069, 29.455416], + [105.387069, 29.455416], + [105.399388, 29.43874], + [105.372903, 29.421018], + [105.426489, 29.419454], + [105.441888, 29.400686], + [105.418482, 29.352185], + [105.42033, 29.31149], + [105.465294, 29.322969], + [105.459134, 29.288526], + [105.513337, 29.283306], + [105.521344, 29.264513], + [105.557684, 29.278608], + [105.631597, 29.280174], + [105.647612, 29.253027], + [105.695039, 29.287482], + [105.712285, 29.219082], + [105.703662, 29.176766], + [105.728916, 29.134432], + [105.752321, 29.129727], + [105.728916, 29.1062], + [105.757865, 29.069068], + [105.74185, 29.039249], + [105.766488, 29.013607], + [105.762176, 28.9911], + [105.801596, 28.958116], + [105.797285, 28.936121], + [105.830546, 28.944501], + [105.852719, 28.927217], + [105.910002, 28.920407], + [105.969132, 28.965971], + [106.001161, 28.973824], + [106.040581, 28.955498], + [106.049204, 28.906263], + [106.070762, 28.919884], + [106.101559, 28.898928], + [106.14837, 28.901548], + [106.173008, 28.920407], + [106.206885, 28.904691], + [106.264783, 28.845997], + [106.245689, 28.817686], + [106.267863, 28.779402], + [106.274022, 28.739004], + [106.305435, 28.704365], + [106.304203, 28.64976], + [106.346703, 28.583565], + [106.33192, 28.55308], + [106.37442, 28.525742] + ] + ], + [ + [ + [109.105495, 30.585529], + [109.106111, 30.61077], + [109.09256, 30.578831], + [109.09872, 30.579346], + [109.101183, 30.579346], + [109.102415, 30.580377], + [109.105495, 30.585529] + ] + ], + [ + [ + [105.582938, 30.12385], + [105.582938, 30.127474], + [105.580474, 30.129544], + [105.574315, 30.130579], + [105.582938, 30.12385] + ] + ], + [ + [ + [109.09872, 30.579346], + [109.09256, 30.578831], + [109.103647, 30.565949], + [109.106111, 30.570587], + [109.09872, 30.579346] + ] + ], + [ + [ + [107.058113, 30.043066], + [107.053801, 30.043584], + [107.054417, 30.040994], + [107.055649, 30.040476], + [107.058113, 30.043066] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 510000, + "name": "四川省", + "center": [104.065735, 30.659462], + "centroid": [102.693453, 30.674545], + "childrenNum": 21, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 22, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [101.167885, 27.198311], + [101.170349, 27.175421], + [101.145095, 27.103523], + [101.157414, 27.094999], + [101.136472, 27.023584], + [101.228863, 26.981992], + [101.227015, 26.959057], + [101.264587, 26.955323], + [101.267667, 26.903034], + [101.311399, 26.903034], + [101.365602, 26.883819], + [101.399478, 26.841642], + [101.358826, 26.771669], + [101.387159, 26.753501], + [101.389623, 26.723036], + [101.435819, 26.740675], + [101.458608, 26.731054], + [101.445674, 26.77434], + [101.466, 26.786629], + [101.513427, 26.768463], + [101.453065, 26.692563], + [101.481398, 26.673313], + [101.461072, 26.640687], + [101.461688, 26.606447], + [101.402558, 26.604841], + [101.395783, 26.591998], + [101.422884, 26.53151], + [101.458608, 26.49563], + [101.506652, 26.499915], + [101.530057, 26.467239], + [101.565782, 26.454381], + [101.637847, 26.388995], + [101.635383, 26.357361], + [101.660636, 26.346635], + [101.64031, 26.318745], + [101.597195, 26.303187], + [101.586108, 26.279579], + [101.630455, 26.224832], + [101.690202, 26.241473], + [101.737013, 26.219463], + [101.773353, 26.168448], + [101.807846, 26.156093], + [101.796759, 26.114723], + [101.839875, 26.082477], + [101.835563, 26.04592], + [101.857737, 26.049146], + [101.899621, 26.099139], + [101.929186, 26.105588], + [101.954439, 26.084627], + [102.020961, 26.096451], + [102.080091, 26.065275], + [102.107808, 26.068501], + [102.152156, 26.10935], + [102.174946, 26.146961], + [102.242699, 26.190468], + [102.245163, 26.212483], + [102.349257, 26.244694], + [102.392372, 26.296749], + [102.440416, 26.300505], + [102.542046, 26.338591], + [102.570995, 26.362723], + [102.629509, 26.336982], + [102.638748, 26.307479], + [102.60056, 26.250598], + [102.659074, 26.221611], + [102.709581, 26.210336], + [102.739762, 26.268846], + [102.785342, 26.298895], + [102.833385, 26.306406], + [102.878964, 26.364332], + [102.893131, 26.338591], + [102.975667, 26.340736], + [102.998457, 26.371839], + [102.988602, 26.413117], + [102.989833, 26.482775], + [103.030485, 26.485989], + [103.052659, 26.514374], + [103.052659, 26.555602], + [103.035413, 26.556673], + [103.026174, 26.664221], + [103.005232, 26.679195], + [103.008312, 26.710741], + [102.983674, 26.76686], + [102.991681, 26.775409], + [102.966428, 26.837904], + [102.949181, 26.843244], + [102.896211, 26.91264], + [102.894979, 27.001724], + [102.870957, 27.026782], + [102.913457, 27.133886], + [102.904218, 27.227584], + [102.883276, 27.258444], + [102.883892, 27.299401], + [102.899906, 27.317481], + [102.941174, 27.405711], + [102.989833, 27.367983], + [103.055739, 27.40943], + [103.080992, 27.396679], + [103.141355, 27.420586], + [103.144434, 27.450331], + [103.19063, 27.523596], + [103.232514, 27.56976], + [103.2861, 27.561802], + [103.29226, 27.632872], + [103.349542, 27.678459], + [103.369868, 27.708664], + [103.393274, 27.709194], + [103.461027, 27.779638], + [103.487512, 27.794992], + [103.509686, 27.843687], + [103.502295, 27.910343], + [103.55465, 27.978543], + [103.515846, 27.965329], + [103.486281, 28.033495], + [103.459179, 28.021345], + [103.430846, 28.044587], + [103.470266, 28.122204], + [103.533092, 28.168641], + [103.573128, 28.230877], + [103.643961, 28.260401], + [103.692004, 28.232459], + [103.701859, 28.198709], + [103.740048, 28.23615], + [103.770845, 28.233514], + [103.828743, 28.285173], + [103.877402, 28.316262], + [103.85338, 28.356822], + [103.860156, 28.383677], + [103.828743, 28.44], + [103.829975, 28.459995], + [103.781931, 28.525216], + [103.802873, 28.563068], + [103.838598, 28.587244], + [103.833054, 28.605109], + [103.850917, 28.66709], + [103.887873, 28.61982], + [103.910047, 28.631377], + [103.953779, 28.600906], + [104.05972, 28.6277], + [104.09606, 28.603533], + [104.117618, 28.634003], + [104.170589, 28.642932], + [104.230951, 28.635579], + [104.252509, 28.660788], + [104.277147, 28.631902], + [104.314719, 28.615617], + [104.372617, 28.649235], + [104.425588, 28.626649], + [104.417581, 28.598279], + [104.375697, 28.5946], + [104.355987, 28.555183], + [104.323342, 28.540989], + [104.260516, 28.536257], + [104.267908, 28.499448], + [104.254357, 28.403683], + [104.282074, 28.343128], + [104.314103, 28.306778], + [104.343052, 28.334173], + [104.384936, 28.329959], + [104.392943, 28.291497], + [104.420045, 28.269889], + [104.44961, 28.269889], + [104.462544, 28.241422], + [104.442834, 28.211366], + [104.402182, 28.202928], + [104.406494, 28.173389], + [104.444682, 28.16231], + [104.448994, 28.113758], + [104.40095, 28.091586], + [104.373233, 28.051454], + [104.304248, 28.050926], + [104.30856, 28.036136], + [104.362762, 28.012891], + [104.40095, 27.952114], + [104.44961, 27.927794], + [104.508124, 27.878078], + [104.52537, 27.889187], + [104.573413, 27.840512], + [104.607906, 27.857974], + [104.63316, 27.850567], + [104.676275, 27.880723], + [104.743413, 27.901881], + [104.761891, 27.884426], + [104.796999, 27.901352], + [104.842579, 27.900294], + [104.888158, 27.914574], + [104.918339, 27.938897], + [104.903557, 27.962158], + [104.975006, 28.020816], + [104.980549, 28.063073], + [105.002107, 28.064129], + [105.061853, 28.096866], + [105.119752, 28.07205], + [105.168411, 28.071522], + [105.186889, 28.054623], + [105.167795, 28.021345], + [105.186273, 27.995454], + [105.218302, 27.990698], + [105.247867, 28.009193], + [105.270657, 27.99704], + [105.284823, 27.935725], + [105.233084, 27.895534], + [105.25957, 27.827811], + [105.313157, 27.810874], + [105.273736, 27.794992], + [105.293447, 27.770637], + [105.290367, 27.712373], + [105.308229, 27.704955], + [105.353809, 27.748924], + [105.44004, 27.775402], + [105.508409, 27.769048], + [105.560148, 27.71979], + [105.605112, 27.715552], + [105.62359, 27.666269], + [105.664242, 27.683759], + [105.720292, 27.683759], + [105.722756, 27.706015], + [105.76772, 27.7182], + [105.848408, 27.707074], + [105.868118, 27.732504], + [105.922937, 27.746805], + [105.92848, 27.729855], + [105.985146, 27.749983], + [106.023335, 27.746805], + [106.063987, 27.776991], + [106.120653, 27.779638], + [106.193334, 27.75422], + [106.242609, 27.767459], + [106.306667, 27.808756], + [106.337464, 27.859033], + [106.325145, 27.898708], + [106.304819, 27.899237], + [106.307899, 27.936782], + [106.328225, 27.952643], + [106.286341, 28.007079], + [106.246305, 28.011835], + [106.266631, 28.066769], + [106.206885, 28.134343], + [106.145291, 28.162837], + [106.093552, 28.162837], + [105.975907, 28.107952], + [105.943878, 28.143314], + [105.895219, 28.119565], + [105.860727, 28.159672], + [105.889676, 28.237732], + [105.848408, 28.255656], + [105.824386, 28.306251], + [105.78743, 28.335753], + [105.76464, 28.308359], + [105.76464, 28.308359], + [105.737539, 28.30309], + [105.730147, 28.271997], + [105.68888, 28.284119], + [105.639604, 28.324164], + [105.655003, 28.362615], + [105.643916, 28.431053], + [105.612503, 28.438947], + [105.62359, 28.517854], + [105.68272, 28.534154], + [105.693191, 28.58882], + [105.712901, 28.586718], + [105.74493, 28.616668], + [105.757249, 28.590397], + [105.78435, 28.610889], + [105.808372, 28.599855], + [105.884748, 28.595126], + [105.889676, 28.670765], + [105.937719, 28.686517], + [105.966668, 28.761041], + [106.001161, 28.743727], + [106.030726, 28.694917], + [106.085544, 28.681792], + [106.103407, 28.636104], + [106.14837, 28.642932], + [106.17116, 28.629275], + [106.184711, 28.58882], + [106.254928, 28.539412], + [106.2925, 28.537309], + [106.304819, 28.505233], + [106.349167, 28.473674], + [106.379348, 28.479986], + [106.37442, 28.525742], + [106.33192, 28.55308], + [106.346703, 28.583565], + [106.304203, 28.64976], + [106.305435, 28.704365], + [106.274022, 28.739004], + [106.267863, 28.779402], + [106.245689, 28.817686], + [106.264783, 28.845997], + [106.206885, 28.904691], + [106.173008, 28.920407], + [106.14837, 28.901548], + [106.101559, 28.898928], + [106.070762, 28.919884], + [106.049204, 28.906263], + [106.040581, 28.955498], + [106.001161, 28.973824], + [105.969132, 28.965971], + [105.910002, 28.920407], + [105.852719, 28.927217], + [105.830546, 28.944501], + [105.797285, 28.936121], + [105.801596, 28.958116], + [105.762176, 28.9911], + [105.766488, 29.013607], + [105.74185, 29.039249], + [105.757865, 29.069068], + [105.728916, 29.1062], + [105.752321, 29.129727], + [105.728916, 29.134432], + [105.703662, 29.176766], + [105.712285, 29.219082], + [105.695039, 29.287482], + [105.647612, 29.253027], + [105.631597, 29.280174], + [105.557684, 29.278608], + [105.521344, 29.264513], + [105.513337, 29.283306], + [105.459134, 29.288526], + [105.465294, 29.322969], + [105.42033, 29.31149], + [105.418482, 29.352185], + [105.441888, 29.400686], + [105.426489, 29.419454], + [105.372903, 29.421018], + [105.399388, 29.43874], + [105.387069, 29.455416], + [105.387069, 29.455416], + [105.334099, 29.441345], + [105.337794, 29.459064], + [105.305149, 29.53199], + [105.296526, 29.571035], + [105.332867, 29.592374], + [105.347649, 29.621512], + [105.38091, 29.628275], + [105.419714, 29.688082], + [105.476996, 29.674564], + [105.481924, 29.718232], + [105.529351, 29.707836], + [105.574931, 29.744216], + [105.582938, 29.819013], + [105.610655, 29.837184], + [105.707974, 29.840818], + [105.738771, 29.891159], + [105.717213, 29.893753], + [105.70243, 29.924879], + [105.730763, 29.95755], + [105.723372, 29.975177], + [105.753553, 30.018196], + [105.719677, 30.042548], + [105.687032, 30.038922], + [105.676561, 30.06793], + [105.638988, 30.076216], + [105.642068, 30.101072], + [105.582938, 30.12385], + [105.574315, 30.130579], + [105.596489, 30.159043], + [105.536127, 30.152834], + [105.550909, 30.179222], + [105.556453, 30.187499], + [105.558916, 30.18543], + [105.56138, 30.183878], + [105.642684, 30.186464], + [105.662394, 30.210258], + [105.619894, 30.234045], + [105.624822, 30.275918], + [105.670401, 30.254208], + [105.720292, 30.252657], + [105.720292, 30.252657], + [105.714749, 30.322939], + [105.754785, 30.342567], + [105.760329, 30.384393], + [105.792357, 30.427234], + [105.825618, 30.436006], + [105.84656, 30.410203], + [105.900763, 30.405042], + [105.943263, 30.372002], + [106.031958, 30.373551], + [106.07261, 30.333786], + [106.132972, 30.30279], + [106.132356, 30.323972], + [106.168696, 30.303823], + [106.180399, 30.233011], + [106.232754, 30.185947], + [106.260471, 30.19681], + [106.260471, 30.204051], + [106.260471, 30.207672], + [106.264167, 30.20974], + [106.296196, 30.205603], + [106.306667, 30.238182], + [106.334384, 30.225772], + [106.349167, 30.24542], + [106.401521, 30.242318], + [106.428623, 30.254725], + [106.43971, 30.308473], + [106.49884, 30.295556], + [106.545035, 30.296589], + [106.560434, 30.31519], + [106.611557, 30.292455], + [106.642354, 30.246454], + [106.612789, 30.235596], + [106.612789, 30.235596], + [106.612173, 30.235596], + [106.612173, 30.235596], + [106.611557, 30.235596], + [106.612173, 30.235596], + [106.611557, 30.235596], + [106.631883, 30.186464], + [106.677462, 30.156974], + [106.672535, 30.122297], + [106.700252, 30.111944], + [106.699636, 30.074145], + [106.724274, 30.058607], + [106.732281, 30.027005], + [106.785252, 30.01716], + [106.825904, 30.03115], + [106.825904, 30.03115], + [106.83699, 30.049801], + [106.862244, 30.033223], + [106.913367, 30.025451], + [106.94478, 30.037367], + [106.976193, 30.083467], + [106.975577, 30.088127], + [106.976809, 30.088127], + [106.977425, 30.087609], + [106.978656, 30.087609], + [106.979888, 30.088127], + [106.980504, 30.087609], + [106.981736, 30.08502], + [107.02054, 30.036849], + [107.053801, 30.043584], + [107.058113, 30.043066], + [107.084598, 30.063786], + [107.080286, 30.094341], + [107.103076, 30.090198], + [107.221337, 30.213878], + [107.257677, 30.267131], + [107.288474, 30.337402], + [107.338981, 30.386459], + [107.368546, 30.468508], + [107.408582, 30.521623], + [107.443075, 30.53348], + [107.427676, 30.547397], + [107.485575, 30.598408], + [107.516987, 30.644759], + [107.477567, 30.664837], + [107.458473, 30.704981], + [107.424597, 30.74048], + [107.454162, 30.771851], + [107.454162, 30.771851], + [107.498509, 30.809381], + [107.483111, 30.838675], + [107.515756, 30.854603], + [107.57735, 30.847924], + [107.645103, 30.821202], + [107.693146, 30.875665], + [107.739957, 30.884396], + [107.760899, 30.862823], + [107.763979, 30.817091], + [107.788001, 30.81966], + [107.851443, 30.792931], + [107.956152, 30.882855], + [107.994956, 30.908533], + [107.948145, 30.918802], + [107.942602, 30.989114], + [107.983254, 30.983983], + [108.00358, 31.025533], + [108.060246, 31.052197], + [108.026985, 31.061938], + [108.009123, 31.109602], + [108.025753, 31.116263], + [108.089811, 31.204859], + [108.07626, 31.231985], + [108.031297, 31.217144], + [108.038688, 31.252964], + [108.095354, 31.268311], + [108.185898, 31.336831], + [108.153869, 31.371073], + [108.216079, 31.41041], + [108.224086, 31.464024], + [108.193289, 31.467598], + [108.191441, 31.492096], + [108.233941, 31.506894], + [108.254883, 31.49873], + [108.344194, 31.512506], + [108.339266, 31.539033], + [108.386078, 31.544134], + [108.390389, 31.591555], + [108.442744, 31.633856], + [108.468614, 31.636404], + [108.519121, 31.665952], + [108.546838, 31.665442], + [108.514809, 31.693963], + [108.50557, 31.734182], + [108.535135, 31.757592], + [108.462454, 31.780488], + [108.455063, 31.814059], + [108.429194, 31.809482], + [108.391005, 31.829822], + [108.386078, 31.854226], + [108.343578, 31.860834], + [108.259194, 31.967006], + [108.307238, 31.997463], + [108.351585, 31.971575], + [108.370063, 31.988835], + [108.329411, 32.020299], + [108.362056, 32.035521], + [108.344194, 32.067477], + [108.372527, 32.077112], + [108.42981, 32.061391], + [108.452599, 32.090296], + [108.399628, 32.147065], + [108.379303, 32.153652], + [108.379303, 32.153652], + [108.379918, 32.154158], + [108.379918, 32.154158], + [108.370063, 32.172397], + [108.399013, 32.194176], + [108.480317, 32.182527], + [108.509882, 32.201266], + [108.507418, 32.245819], + [108.469846, 32.270618], + [108.414411, 32.252399], + [108.389773, 32.263533], + [108.310933, 32.232152], + [108.240716, 32.274666], + [108.179738, 32.221521], + [108.156948, 32.239239], + [108.143398, 32.219495], + [108.086731, 32.233165], + [108.018362, 32.2119], + [108.024521, 32.177462], + [107.979558, 32.146051], + [107.924739, 32.197215], + [107.890247, 32.214432], + [107.864377, 32.201266], + [107.812022, 32.247844], + [107.753508, 32.338399], + [107.707929, 32.331826], + [107.680827, 32.397035], + [107.648183, 32.413709], + [107.598291, 32.411688], + [107.527458, 32.38238], + [107.489886, 32.425328], + [107.456625, 32.41775], + [107.460937, 32.453612], + [107.438763, 32.465732], + [107.436299, 32.529835], + [107.382097, 32.54043], + [107.356843, 32.506622], + [107.313727, 32.489965], + [107.287858, 32.457147], + [107.263836, 32.403099], + [107.212097, 32.428864], + [107.189924, 32.468256], + [107.127098, 32.482393], + [107.080286, 32.542448], + [107.108004, 32.600951], + [107.098765, 32.649338], + [107.05996, 32.686115], + [107.066736, 32.708779], + [107.012533, 32.721367], + [106.912751, 32.704247], + [106.903512, 32.721367], + [106.854853, 32.724388], + [106.82344, 32.705254], + [106.793259, 32.712807], + [106.783404, 32.735967], + [106.733513, 32.739491], + [106.670071, 32.694678], + [106.626955, 32.682086], + [106.585687, 32.68813], + [106.517934, 32.668485], + [106.498224, 32.649338], + [106.451412, 32.65992], + [106.421231, 32.616579], + [106.389203, 32.62666], + [106.347935, 32.671003], + [106.301123, 32.680071], + [106.267863, 32.673522], + [106.254928, 32.693671], + [106.17424, 32.6977], + [106.120037, 32.719856], + [106.071378, 32.758114], + [106.07261, 32.76365], + [106.093552, 32.82402], + [106.071378, 32.828546], + [106.044277, 32.864747], + [106.011632, 32.829552], + [105.969132, 32.849162], + [105.93156, 32.826032], + [105.893371, 32.838603], + [105.849024, 32.817985], + [105.825002, 32.824523], + [105.822538, 32.770192], + [105.779423, 32.750061], + [105.768952, 32.767676], + [105.719061, 32.759624], + [105.677793, 32.726402], + [105.596489, 32.69921], + [105.585402, 32.728919], + [105.563844, 32.724891], + [105.555221, 32.794343], + [105.534279, 32.790822], + [105.524424, 32.847654], + [105.495475, 32.873292], + [105.49917, 32.911986], + [105.467757, 32.930071], + [105.414171, 32.922034], + [105.408011, 32.885857], + [105.38091, 32.876307], + [105.396308, 32.85067], + [105.396308, 32.85067], + [105.427721, 32.784281], + [105.454207, 32.767173], + [105.448663, 32.732946], + [105.368591, 32.712807], + [105.347033, 32.68259], + [105.297758, 32.656897], + [105.263265, 32.652362], + [105.219534, 32.666469], + [105.215222, 32.63674], + [105.185041, 32.617587], + [105.111128, 32.593893], + [105.0791, 32.637244], + [105.026745, 32.650346], + [104.925115, 32.607505], + [104.881999, 32.600951], + [104.845659, 32.653873], + [104.820405, 32.662943], + [104.795768, 32.643292], + [104.739717, 32.635228], + [104.696601, 32.673522], + [104.643015, 32.661935], + [104.592508, 32.695685], + [104.582653, 32.722374], + [104.526602, 32.728416], + [104.51182, 32.753585], + [104.458849, 32.748551], + [104.363994, 32.822511], + [104.294393, 32.835586], + [104.277147, 32.90244], + [104.288234, 32.942628], + [104.345516, 32.940117], + [104.378161, 32.953174], + [104.383704, 32.994343], + [104.426204, 33.010906], + [104.391711, 33.035493], + [104.337509, 33.038002], + [104.378161, 33.109214], + [104.351059, 33.158828], + [104.32827, 33.223934], + [104.323958, 33.26898], + [104.303632, 33.304499], + [104.333813, 33.315502], + [104.386168, 33.298497], + [104.420045, 33.327004], + [104.373849, 33.345004], + [104.292545, 33.336505], + [104.272219, 33.391486], + [104.22048, 33.404477], + [104.213089, 33.446932], + [104.180444, 33.472895], + [104.155191, 33.542755], + [104.176749, 33.5996], + [104.103452, 33.663381], + [104.046169, 33.686291], + [103.980264, 33.670852], + [103.861388, 33.682307], + [103.778236, 33.658898], + [103.690772, 33.69376], + [103.667983, 33.685793], + [103.645809, 33.708697], + [103.593454, 33.716164], + [103.563889, 33.699735], + [103.552186, 33.671351], + [103.520157, 33.678323], + [103.545411, 33.719649], + [103.518309, 33.807213], + [103.464723, 33.80224], + [103.434542, 33.752993], + [103.35447, 33.743539], + [103.278709, 33.774387], + [103.284868, 33.80224], + [103.24976, 33.814175], + [103.228202, 33.79478], + [103.165376, 33.805721], + [103.153673, 33.819147], + [103.181391, 33.900649], + [103.16476, 33.929454], + [103.1315, 33.931937], + [103.120413, 33.953286], + [103.157369, 33.998944], + [103.147514, 34.036644], + [103.119797, 34.03466], + [103.129652, 34.065899], + [103.178927, 34.079779], + [103.121644, 34.112487], + [103.124108, 34.162022], + [103.100087, 34.181828], + [103.052043, 34.195194], + [103.005848, 34.184798], + [102.973203, 34.205588], + [102.977515, 34.252595], + [102.949181, 34.292159], + [102.911609, 34.312923], + [102.85987, 34.301058], + [102.856791, 34.270895], + [102.798276, 34.272874], + [102.779798, 34.236764], + [102.728675, 34.235774], + [102.694799, 34.198659], + [102.664002, 34.192719], + [102.651067, 34.165983], + [102.598712, 34.14766], + [102.655994, 34.113478], + [102.649219, 34.080275], + [102.615958, 34.099604], + [102.511865, 34.086222], + [102.471213, 34.072839], + [102.437336, 34.087214], + [102.406539, 34.033172], + [102.392372, 33.971651], + [102.345561, 33.969666], + [102.315996, 33.993983], + [102.287047, 33.977607], + [102.248858, 33.98654], + [102.226069, 33.963214], + [102.16817, 33.983066], + [102.136142, 33.965199], + [102.25317, 33.861399], + [102.261177, 33.821136], + [102.243315, 33.786823], + [102.296286, 33.783838], + [102.324619, 33.754486], + [102.284583, 33.719151], + [102.342481, 33.725622], + [102.31538, 33.665374], + [102.346793, 33.605582], + [102.440416, 33.574673], + [102.477988, 33.543254], + [102.446575, 33.53228], + [102.461358, 33.501345], + [102.462589, 33.449429], + [102.447807, 33.454922], + [102.392988, 33.404477], + [102.368967, 33.41247], + [102.310452, 33.397982], + [102.296286, 33.413969], + [102.258098, 33.409472], + [102.218062, 33.349503], + [102.192192, 33.337005], + [102.217446, 33.247961], + [102.200815, 33.223434], + [102.160163, 33.242956], + [102.144765, 33.273983], + [102.117047, 33.288492], + [102.08933, 33.227439], + [102.08933, 33.204908], + [102.054838, 33.189884], + [101.99386, 33.1999], + [101.935345, 33.186879], + [101.921795, 33.153817], + [101.887302, 33.135778], + [101.865744, 33.103198], + [101.825708, 33.119239], + [101.841723, 33.184876], + [101.83002, 33.213921], + [101.770274, 33.248962], + [101.769658, 33.26898], + [101.877447, 33.314502], + [101.887302, 33.383991], + [101.915635, 33.425957], + [101.946432, 33.442937], + [101.906396, 33.48188], + [101.907012, 33.539264], + [101.884222, 33.578163], + [101.844186, 33.602591], + [101.831252, 33.554726], + [101.783208, 33.556721], + [101.769042, 33.538765], + [101.777665, 33.533776], + [101.769042, 33.45592], + [101.695745, 33.433948], + [101.663716, 33.383991], + [101.64955, 33.323004], + [101.677883, 33.297497], + [101.735781, 33.279987], + [101.709912, 33.21292], + [101.653861, 33.162835], + [101.661252, 33.135778], + [101.633535, 33.101193], + [101.557775, 33.167344], + [101.515275, 33.192889], + [101.487557, 33.226938], + [101.403174, 33.225436], + [101.386543, 33.207412], + [101.393935, 33.157826], + [101.381616, 33.153316], + [101.297232, 33.262475], + [101.217776, 33.256469], + [101.182668, 33.26948], + [101.156798, 33.236449], + [101.124769, 33.221431], + [101.11553, 33.194893], + [101.169733, 33.10019], + [101.143863, 33.086151], + [101.146327, 33.056563], + [101.184515, 33.041514], + [101.171581, 33.009902], + [101.183899, 32.984304], + [101.129081, 32.989324], + [101.134624, 32.95217], + [101.124153, 32.909976], + [101.178356, 32.892892], + [101.223935, 32.855698], + [101.237486, 32.825026], + [101.22332, 32.725898], + [101.157414, 32.661431], + [101.124769, 32.658408], + [101.077342, 32.68259], + [101.030531, 32.660424], + [100.99727, 32.627668], + [100.956618, 32.621116], + [100.93198, 32.600447], + [100.887633, 32.632708], + [100.834046, 32.648835], + [100.77122, 32.643795], + [100.690532, 32.678056], + [100.71209, 32.645307], + [100.710242, 32.610026], + [100.673286, 32.628172], + [100.661583, 32.616075], + [100.657887, 32.546484], + [100.645568, 32.526303], + [100.603069, 32.553547], + [100.54517, 32.569687], + [100.516837, 32.632204], + [100.470026, 32.694678], + [100.450932, 32.694678], + [100.420135, 32.73194], + [100.378251, 32.698707], + [100.399193, 32.756101], + [100.339447, 32.719353], + [100.258759, 32.742511], + [100.231041, 32.696189], + [100.229809, 32.650346], + [100.208252, 32.606497], + [100.189773, 32.630692], + [100.109701, 32.640268], + [100.088143, 32.668988], + [100.139266, 32.724388], + [100.117093, 32.802392], + [100.123252, 32.837095], + [100.064738, 32.895907], + [100.029629, 32.895907], + [100.038252, 32.929066], + [99.956332, 32.948152], + [99.947709, 32.986814], + [99.877492, 33.045527], + [99.877492, 32.993339], + [99.851007, 32.941623], + [99.805427, 32.940619], + [99.788181, 32.956689], + [99.764159, 32.924545], + [99.791877, 32.883344], + [99.766623, 32.826032], + [99.760464, 32.769689], + [99.717964, 32.732443], + [99.700718, 32.76667], + [99.646515, 32.774721], + [99.640355, 32.790822], + [99.589233, 32.789312], + [99.558436, 32.839106], + [99.45311, 32.862233], + [99.376118, 32.899927], + [99.353944, 32.885354], + [99.268944, 32.878318], + [99.24677, 32.924043], + [99.235067, 32.982296], + [99.214741, 32.991332], + [99.196263, 33.035493], + [99.124814, 33.046028], + [99.090322, 33.079131], + [99.024416, 33.094675], + [99.014561, 33.081137], + [98.971445, 33.098185], + [98.967134, 33.115229], + [98.92217, 33.118738], + [98.858728, 33.150811], + [98.804526, 33.219428], + [98.802062, 33.270481], + [98.759562, 33.276985], + [98.779888, 33.370497], + [98.736157, 33.406975], + [98.742316, 33.477887], + [98.725686, 33.503341], + [98.678258, 33.522801], + [98.648077, 33.548741], + [98.652389, 33.595114], + [98.622824, 33.610067], + [98.61728, 33.637476], + [98.6567, 33.64744], + [98.610505, 33.682805], + [98.582788, 33.731595], + [98.539672, 33.746525], + [98.51873, 33.77389], + [98.494092, 33.768915], + [98.492861, 33.796272], + [98.463295, 33.848477], + [98.434962, 33.843009], + [98.407245, 33.867362], + [98.425723, 33.913066], + [98.415252, 33.956761], + [98.440506, 33.981577], + [98.428187, 34.029204], + [98.396774, 34.053008], + [98.399854, 34.085231], + [98.344419, 34.094648], + [98.258188, 34.083249], + [98.206449, 34.08424], + [98.158405, 34.107037], + [98.098043, 34.122892], + [98.028442, 34.122892], + [97.95453, 34.190739], + [97.898479, 34.209548], + [97.8104, 34.207568], + [97.796849, 34.199154], + [97.796849, 34.199154], + [97.789458, 34.182818], + [97.789458, 34.182818], + [97.766668, 34.158555], + [97.665654, 34.126855], + [97.70261, 34.036644], + [97.652719, 33.998448], + [97.660111, 33.956264], + [97.629314, 33.919523], + [97.601596, 33.929951], + [97.52214, 33.903133], + [97.503662, 33.912073], + [97.460546, 33.887236], + [97.395257, 33.889224], + [97.398336, 33.848477], + [97.371851, 33.842015], + [97.373083, 33.817655], + [97.406344, 33.795278], + [97.422974, 33.754984], + [97.418046, 33.728608], + [97.435293, 33.682307], + [97.415583, 33.605582], + [97.450075, 33.582152], + [97.523372, 33.577166], + [97.511669, 33.520805], + [97.552321, 33.465906], + [97.625618, 33.461412], + [97.674893, 33.432949], + [97.754349, 33.409972], + [97.676125, 33.341004], + [97.622538, 33.337005], + [97.607756, 33.263976], + [97.548626, 33.203907], + [97.487648, 33.168346], + [97.498119, 33.137783], + [97.487032, 33.107209], + [97.517213, 33.097683], + [97.542466, 33.035995], + [97.499966, 33.011408], + [97.523988, 32.988822], + [97.438372, 32.976271], + [97.375547, 32.956689], + [97.347829, 32.895907], + [97.376163, 32.886359], + [97.392793, 32.828546], + [97.386018, 32.77925], + [97.429133, 32.714318], + [97.42359, 32.70475], + [97.48272, 32.654377], + [97.535075, 32.638252], + [97.543698, 32.62162], + [97.607756, 32.614059], + [97.616995, 32.586329], + [97.700763, 32.53488], + [97.730944, 32.527312], + [97.795617, 32.521257], + [97.80732, 32.50006], + [97.863986, 32.499051], + [97.880001, 32.486431], + [97.940363, 32.482393], + [98.079565, 32.415224], + [98.107283, 32.391476], + [98.125145, 32.401077], + [98.218768, 32.342444], + [98.208913, 32.318171], + [98.23047, 32.262521], + [98.218768, 32.234683], + [98.260035, 32.208862], + [98.303151, 32.121726], + [98.357354, 32.087253], + [98.404781, 32.045159], + [98.402933, 32.026896], + [98.434962, 32.007613], + [98.432498, 31.922825], + [98.399238, 31.895899], + [98.426339, 31.856767], + [98.414636, 31.832365], + [98.461448, 31.800327], + [98.508875, 31.751995], + [98.516882, 31.717383], + [98.545831, 31.717383], + [98.553839, 31.660349], + [98.619128, 31.591555], + [98.651157, 31.57881], + [98.696736, 31.538523], + [98.714599, 31.508935], + [98.844562, 31.429817], + [98.84333, 31.416028], + [98.887062, 31.37465], + [98.810685, 31.306668], + [98.805758, 31.279052], + [98.773113, 31.249382], + [98.691809, 31.333253], + [98.643766, 31.338876], + [98.616048, 31.3036], + [98.60373, 31.257568], + [98.62344, 31.221238], + [98.602498, 31.192062], + [98.675179, 31.15417], + [98.710287, 31.1178], + [98.712135, 31.082954], + [98.736772, 31.049121], + [98.774961, 31.031174], + [98.806374, 30.995783], + [98.797135, 30.948575], + [98.774345, 30.908019], + [98.797135, 30.87926], + [98.850105, 30.849465], + [98.904924, 30.782649], + [98.957895, 30.765166], + [98.963438, 30.728134], + [98.907388, 30.698292], + [98.92217, 30.609225], + [98.939417, 30.598923], + [98.926482, 30.569556], + [98.932025, 30.521623], + [98.965286, 30.449937], + [98.967134, 30.33482], + [98.986844, 30.280569], + [98.970829, 30.260928], + [98.993003, 30.215429], + [98.9813, 30.182843], + [98.989308, 30.151799], + [99.044742, 30.079842], + [99.036735, 30.053945], + [99.055213, 29.958587], + [99.068148, 29.931621], + [99.0238, 29.846009], + [99.018873, 29.792009], + [98.992387, 29.677163], + [99.014561, 29.607464], + [99.052133, 29.563748], + [99.044742, 29.520013], + [99.066916, 29.421018], + [99.058909, 29.417368], + [99.075539, 29.316186], + [99.114343, 29.243628], + [99.113727, 29.221171], + [99.105104, 29.162656], + [99.118039, 29.100971], + [99.113727, 29.07273], + [99.132206, 28.94869], + [99.123582, 28.890021], + [99.103872, 28.841803], + [99.114343, 28.765763], + [99.134053, 28.734806], + [99.126662, 28.698066], + [99.147604, 28.640831], + [99.183944, 28.58882], + [99.170394, 28.566221], + [99.191952, 28.494714], + [99.187024, 28.44], + [99.16485, 28.425264], + [99.200575, 28.365774], + [99.229524, 28.350502], + [99.237531, 28.317842], + [99.28927, 28.286227], + [99.306516, 28.227714], + [99.374886, 28.18183], + [99.412458, 28.295186], + [99.392748, 28.318369], + [99.437095, 28.398419], + [99.404451, 28.44421], + [99.426625, 28.454207], + [99.396444, 28.491032], + [99.403219, 28.546246], + [99.463581, 28.549401], + [99.466045, 28.579886], + [99.504233, 28.619294], + [99.540573, 28.623497], + [99.53195, 28.677591], + [99.553508, 28.710664], + [99.614486, 28.740054], + [99.609559, 28.784122], + [99.625573, 28.81454], + [99.676696, 28.810345], + [99.717964, 28.846521], + [99.722275, 28.757369], + [99.755536, 28.701216], + [99.79434, 28.699116], + [99.834992, 28.660788], + [99.834376, 28.628225], + [99.873181, 28.631902], + [99.875644, 28.611939], + [99.91876, 28.599329], + [99.985281, 28.529422], + [99.990209, 28.47683], + [100.073977, 28.426317], + [100.057346, 28.368934], + [100.136803, 28.349975], + [100.176223, 28.325218], + [100.147274, 28.288862], + [100.188541, 28.252493], + [100.153433, 28.208202], + [100.102926, 28.201873], + [100.091223, 28.181302], + [100.062274, 28.193962], + [100.033325, 28.184467], + [100.021006, 28.147008], + [100.05673, 28.097922], + [100.088759, 28.029269], + [100.120788, 28.018703], + [100.196549, 27.936254], + [100.170063, 27.907699], + [100.210715, 27.87702], + [100.30865, 27.861149], + [100.30865, 27.830457], + [100.28586, 27.80611], + [100.304954, 27.788639], + [100.311729, 27.724028], + [100.327744, 27.72032], + [100.350534, 27.755809], + [100.412127, 27.816167], + [100.442924, 27.86644], + [100.504518, 27.852154], + [100.511294, 27.827811], + [100.54517, 27.809286], + [100.609228, 27.859033], + [100.634482, 27.915631], + [100.681293, 27.923035], + [100.719481, 27.858503], + [100.707162, 27.800816], + [100.757053, 27.770107], + [100.775532, 27.743098], + [100.782307, 27.691708], + [100.848212, 27.672099], + [100.827886, 27.615904], + [100.854988, 27.623858], + [100.91227, 27.521473], + [100.901183, 27.453517], + [100.936908, 27.469448], + [100.95169, 27.426961], + [101.021907, 27.332899], + [101.026219, 27.270679], + [101.042233, 27.22173], + [101.071798, 27.194585], + [101.119226, 27.208957], + [101.167885, 27.198311], + [101.167885, 27.198311] + ] + ], + [ + [ + [106.264167, 30.20974], + [106.260471, 30.207672], + [106.260471, 30.204051], + [106.260471, 30.19681], + [106.264167, 30.20974] + ] + ], + [ + [ + [106.976809, 30.088127], + [106.975577, 30.088127], + [106.976193, 30.083467], + [106.981736, 30.08502], + [106.980504, 30.087609], + [106.979888, 30.088127], + [106.978656, 30.087609], + [106.977425, 30.087609], + [106.976809, 30.088127] + ] + ], + [ + [ + [105.558916, 30.18543], + [105.556453, 30.187499], + [105.550909, 30.179222], + [105.56138, 30.183878], + [105.558916, 30.18543] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 520000, + "name": "贵州省", + "center": [106.713478, 26.578343], + "centroid": [106.880455, 26.826368], + "childrenNum": 9, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 23, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [109.274262, 28.494714], + [109.23361, 28.474726], + [109.191726, 28.471043], + [109.153538, 28.417369], + [109.152306, 28.349975], + [109.117198, 28.277795], + [109.081473, 28.247749], + [109.101799, 28.202401], + [109.086401, 28.184467], + [109.026655, 28.220331], + [109.005713, 28.162837], + [108.929952, 28.19027], + [108.923793, 28.217167], + [108.89546, 28.219804], + [108.855424, 28.199764], + [108.821547, 28.245113], + [108.772888, 28.212949], + [108.738395, 28.228241], + [108.726692, 28.282011], + [108.761801, 28.304143], + [108.783359, 28.380518], + [108.759953, 28.389995], + [108.780279, 28.42579], + [108.746402, 28.45105], + [108.709446, 28.501026], + [108.700207, 28.48209], + [108.657091, 28.47683], + [108.640461, 28.456838], + [108.688504, 28.422106], + [108.697127, 28.401051], + [108.656475, 28.359981], + [108.667562, 28.334173], + [108.611512, 28.324691], + [108.580099, 28.343128], + [108.576403, 28.38631], + [108.609048, 28.407368], + [108.609664, 28.43579], + [108.586874, 28.463678], + [108.573939, 28.531], + [108.610896, 28.539412], + [108.604736, 28.590922], + [108.636149, 28.621396], + [108.575787, 28.659738], + [108.50249, 28.63768], + [108.501258, 28.626649], + [108.439049, 28.634003], + [108.332491, 28.679166], + [108.347274, 28.736381], + [108.385462, 28.772058], + [108.386078, 28.803003], + [108.352817, 28.815589], + [108.346658, 28.859625], + [108.357745, 28.893165], + [108.345426, 28.943453], + [108.319556, 28.961258], + [108.297999, 29.045527], + [108.306622, 29.079006], + [108.277673, 29.091558], + [108.256115, 29.040295], + [108.193289, 29.072207], + [108.150173, 29.053375], + [108.070717, 29.086328], + [108.026369, 29.039772], + [107.925971, 29.032446], + [107.908725, 29.007327], + [107.882855, 29.00628], + [107.867457, 28.960211], + [107.810175, 28.984295], + [107.823725, 29.034016], + [107.784921, 29.048143], + [107.810791, 29.139137], + [107.749197, 29.199754], + [107.700537, 29.141228], + [107.659885, 29.162656], + [107.605683, 29.164747], + [107.589052, 29.150113], + [107.570574, 29.218037], + [107.486806, 29.174153], + [107.441227, 29.203934], + [107.401807, 29.184603], + [107.408582, 29.138091], + [107.427676, 29.128682], + [107.412278, 29.094696], + [107.369778, 29.091558], + [107.395647, 29.041341], + [107.364235, 29.00942], + [107.396879, 28.993718], + [107.412894, 28.960211], + [107.441227, 28.943977], + [107.41351, 28.911502], + [107.383945, 28.848618], + [107.339597, 28.845997], + [107.327894, 28.810869], + [107.261373, 28.792514], + [107.24659, 28.76209], + [107.219489, 28.772582], + [107.210866, 28.817686], + [107.227496, 28.836037], + [107.194851, 28.838134], + [107.206554, 28.868535], + [107.14188, 28.887925], + [107.016229, 28.882685], + [107.019308, 28.861722], + [106.983584, 28.851239], + [106.988512, 28.776254], + [106.951555, 28.766812], + [106.923222, 28.809821], + [106.872099, 28.777304], + [106.845614, 28.780975], + [106.824056, 28.756319], + [106.86594, 28.690192], + [106.889345, 28.695966], + [106.866556, 28.624548], + [106.830831, 28.623497], + [106.807425, 28.589346], + [106.784636, 28.626649], + [106.756918, 28.607211], + [106.77786, 28.563068], + [106.73844, 28.554657], + [106.726121, 28.51838], + [106.747063, 28.467361], + [106.708259, 28.450524], + [106.697788, 28.47683], + [106.632499, 28.503655], + [106.564745, 28.485247], + [106.567825, 28.523638], + [106.615252, 28.549401], + [106.606629, 28.593024], + [106.63681, 28.622972], + [106.618332, 28.645033], + [106.651593, 28.649235], + [106.617716, 28.66709], + [106.6171, 28.691242], + [106.587535, 28.691767], + [106.56105, 28.719062], + [106.561666, 28.756319], + [106.474202, 28.832891], + [106.45326, 28.817162], + [106.461883, 28.761041], + [106.492064, 28.742153], + [106.528405, 28.677591], + [106.502535, 28.661313], + [106.49268, 28.591448], + [106.466811, 28.586193], + [106.504999, 28.544669], + [106.477282, 28.530474], + [106.403369, 28.569901], + [106.37442, 28.525742], + [106.379348, 28.479986], + [106.349167, 28.473674], + [106.304819, 28.505233], + [106.2925, 28.537309], + [106.254928, 28.539412], + [106.184711, 28.58882], + [106.17116, 28.629275], + [106.14837, 28.642932], + [106.103407, 28.636104], + [106.085544, 28.681792], + [106.030726, 28.694917], + [106.001161, 28.743727], + [105.966668, 28.761041], + [105.937719, 28.686517], + [105.889676, 28.670765], + [105.884748, 28.595126], + [105.808372, 28.599855], + [105.78435, 28.610889], + [105.757249, 28.590397], + [105.74493, 28.616668], + [105.712901, 28.586718], + [105.693191, 28.58882], + [105.68272, 28.534154], + [105.62359, 28.517854], + [105.612503, 28.438947], + [105.643916, 28.431053], + [105.655003, 28.362615], + [105.639604, 28.324164], + [105.68888, 28.284119], + [105.730147, 28.271997], + [105.737539, 28.30309], + [105.76464, 28.308359], + [105.76464, 28.308359], + [105.78743, 28.335753], + [105.824386, 28.306251], + [105.848408, 28.255656], + [105.889676, 28.237732], + [105.860727, 28.159672], + [105.895219, 28.119565], + [105.943878, 28.143314], + [105.975907, 28.107952], + [106.093552, 28.162837], + [106.145291, 28.162837], + [106.206885, 28.134343], + [106.266631, 28.066769], + [106.246305, 28.011835], + [106.286341, 28.007079], + [106.328225, 27.952643], + [106.307899, 27.936782], + [106.304819, 27.899237], + [106.325145, 27.898708], + [106.337464, 27.859033], + [106.306667, 27.808756], + [106.242609, 27.767459], + [106.193334, 27.75422], + [106.120653, 27.779638], + [106.063987, 27.776991], + [106.023335, 27.746805], + [105.985146, 27.749983], + [105.92848, 27.729855], + [105.922937, 27.746805], + [105.868118, 27.732504], + [105.848408, 27.707074], + [105.76772, 27.7182], + [105.722756, 27.706015], + [105.720292, 27.683759], + [105.664242, 27.683759], + [105.62359, 27.666269], + [105.605112, 27.715552], + [105.560148, 27.71979], + [105.508409, 27.769048], + [105.44004, 27.775402], + [105.353809, 27.748924], + [105.308229, 27.704955], + [105.29591, 27.631811], + [105.304533, 27.611661], + [105.25649, 27.582491], + [105.232469, 27.546945], + [105.260186, 27.514573], + [105.234316, 27.489093], + [105.233084, 27.436522], + [105.182577, 27.367451], + [105.184425, 27.392959], + [105.120984, 27.418461], + [105.068013, 27.418461], + [105.01073, 27.379143], + [104.913412, 27.327051], + [104.871528, 27.290891], + [104.851818, 27.299401], + [104.856746, 27.332368], + [104.824717, 27.3531], + [104.77113, 27.317481], + [104.7545, 27.345658], + [104.611602, 27.306846], + [104.570334, 27.331836], + [104.539537, 27.327583], + [104.497037, 27.414743], + [104.467472, 27.414211], + [104.363378, 27.467855], + [104.30856, 27.407305], + [104.295625, 27.37436], + [104.247582, 27.336621], + [104.248813, 27.291955], + [104.210625, 27.297273], + [104.173053, 27.263232], + [104.113923, 27.338216], + [104.084358, 27.330773], + [104.01722, 27.383926], + [104.015372, 27.429086], + [103.956242, 27.425367], + [103.932221, 27.443958], + [103.905119, 27.38552], + [103.903271, 27.347785], + [103.874322, 27.331304], + [103.865699, 27.28185], + [103.80041, 27.26536], + [103.801641, 27.250464], + [103.748671, 27.210021], + [103.696316, 27.126429], + [103.63349, 27.12057], + [103.620555, 27.096598], + [103.652584, 27.092868], + [103.659975, 27.065692], + [103.614396, 27.079548], + [103.601461, 27.061962], + [103.623635, 27.035312], + [103.623019, 27.007056], + [103.675374, 27.051836], + [103.704939, 27.049171], + [103.73204, 27.018785], + [103.753598, 26.963858], + [103.775156, 26.951056], + [103.763453, 26.905702], + [103.779468, 26.87421], + [103.722185, 26.851253], + [103.705555, 26.794642], + [103.725265, 26.742812], + [103.773308, 26.716621], + [103.759142, 26.689355], + [103.748671, 26.623568], + [103.763453, 26.585041], + [103.815808, 26.55239], + [103.819504, 26.529903], + [103.865699, 26.512232], + [103.953163, 26.521336], + [104.008597, 26.511697], + [104.067727, 26.51491], + [104.068343, 26.573266], + [104.121314, 26.638012], + [104.160734, 26.646571], + [104.222328, 26.620358], + [104.268524, 26.617683], + [104.274683, 26.633733], + [104.313487, 26.612867], + [104.353523, 26.620893], + [104.398487, 26.686147], + [104.424356, 26.709137], + [104.468088, 26.644431], + [104.459465, 26.602701], + [104.488414, 26.579689], + [104.556783, 26.590393], + [104.579573, 26.568449], + [104.57095, 26.524549], + [104.598667, 26.520801], + [104.638703, 26.477954], + [104.631928, 26.451702], + [104.665804, 26.434019], + [104.664572, 26.397572], + [104.684283, 26.3772], + [104.659645, 26.335373], + [104.592508, 26.317672], + [104.542616, 26.253282], + [104.548776, 26.226979], + [104.518595, 26.165762], + [104.52845, 26.114186], + [104.499501, 26.070651], + [104.460081, 26.085702], + [104.470552, 26.009352], + [104.438523, 25.92757], + [104.414501, 25.909807], + [104.441602, 25.868889], + [104.42374, 25.841961], + [104.397871, 25.76168], + [104.370769, 25.730415], + [104.328886, 25.760602], + [104.310407, 25.647901], + [104.332581, 25.598796], + [104.389248, 25.595558], + [104.428668, 25.576126], + [104.436059, 25.520512], + [104.418813, 25.499447], + [104.434827, 25.472436], + [104.44961, 25.495126], + [104.483486, 25.494585], + [104.524138, 25.526992], + [104.556783, 25.524832], + [104.543232, 25.400556], + [104.566638, 25.402719], + [104.615913, 25.364871], + [104.646094, 25.356759], + [104.639935, 25.295632], + [104.689826, 25.296173], + [104.736021, 25.268034], + [104.816094, 25.262622], + [104.826565, 25.235558], + [104.806854, 25.224189], + [104.822869, 25.170037], + [104.801927, 25.163537], + [104.753884, 25.214443], + [104.724319, 25.195491], + [104.732326, 25.167871], + [104.695369, 25.122364], + [104.685514, 25.078466], + [104.619609, 25.060577], + [104.684898, 25.054072], + [104.713232, 24.996048], + [104.663957, 24.964584], + [104.635623, 24.903803], + [104.586964, 24.872859], + [104.539537, 24.813663], + [104.542616, 24.75607], + [104.529682, 24.731611], + [104.595587, 24.709323], + [104.628848, 24.660927], + [104.703377, 24.645698], + [104.729246, 24.617953], + [104.771746, 24.659839], + [104.841963, 24.676155], + [104.865985, 24.730524], + [104.899245, 24.752809], + [105.03352, 24.787586], + [105.026745, 24.815836], + [105.039064, 24.872859], + [105.077868, 24.918459], + [105.09573, 24.92877], + [105.131454, 24.959701], + [105.157324, 24.958616], + [105.178266, 24.985199], + [105.212758, 24.995505], + [105.251563, 24.967296], + [105.267577, 24.929313], + [105.334099, 24.9266], + [105.365511, 24.943423], + [105.428337, 24.930941], + [105.457286, 24.87123], + [105.493011, 24.833217], + [105.497322, 24.809318], + [105.573083, 24.797366], + [105.607576, 24.803885], + [105.617431, 24.78161], + [105.70551, 24.768569], + [105.767104, 24.719109], + [105.827466, 24.702799], + [105.863806, 24.729437], + [105.942031, 24.725088], + [105.961741, 24.677786], + [106.024566, 24.633186], + [106.047356, 24.684312], + [106.113878, 24.714216], + [106.150218, 24.762591], + [106.173008, 24.760417], + [106.206269, 24.851139], + [106.197645, 24.885889], + [106.145291, 24.954275], + [106.191486, 24.95319], + [106.215508, 24.981944], + [106.253696, 24.971094], + [106.304819, 24.973807], + [106.332536, 24.988454], + [106.442173, 25.019369], + [106.450181, 25.033468], + [106.519782, 25.054072], + [106.551195, 25.082802], + [106.590615, 25.08768], + [106.63989, 25.132658], + [106.644817, 25.164621], + [106.691013, 25.179245], + [106.732281, 25.162454], + [106.764926, 25.183036], + [106.787715, 25.17112], + [106.853005, 25.186827], + [106.888113, 25.181953], + [106.904128, 25.231768], + [106.933077, 25.250714], + [106.975577, 25.232851], + [107.013765, 25.275611], + [107.012533, 25.352973], + [106.987896, 25.358922], + [106.963874, 25.437852], + [106.996519, 25.442716], + [107.015613, 25.495666], + [107.066736, 25.50917], + [107.064272, 25.559391], + [107.185612, 25.578825], + [107.205322, 25.607971], + [107.228728, 25.604733], + [107.232423, 25.556691], + [107.263836, 25.543193], + [107.336517, 25.461089], + [107.308184, 25.432988], + [107.318039, 25.401637], + [107.358691, 25.393528], + [107.375937, 25.411908], + [107.420901, 25.392987], + [107.409198, 25.347024], + [107.432604, 25.289139], + [107.481263, 25.299961], + [107.489886, 25.276693], + [107.472024, 25.213902], + [107.512676, 25.209029], + [107.576734, 25.256668], + [107.599523, 25.250714], + [107.632168, 25.310241], + [107.659885, 25.316192], + [107.661733, 25.258833], + [107.696226, 25.219858], + [107.700537, 25.194408], + [107.741805, 25.24043], + [107.762131, 25.229061], + [107.760283, 25.188451], + [107.789233, 25.15487], + [107.762747, 25.125073], + [107.839124, 25.115861], + [107.872384, 25.141327], + [107.928435, 25.155954], + [108.001732, 25.196574], + [108.080572, 25.193867], + [108.115065, 25.210112], + [108.143398, 25.269658], + [108.152021, 25.324306], + [108.142782, 25.390825], + [108.193289, 25.405421], + [108.162492, 25.444878], + [108.192673, 25.458928], + [108.251803, 25.430286], + [108.241332, 25.46217], + [108.280752, 25.48], + [108.308469, 25.525912], + [108.348506, 25.536173], + [108.359592, 25.513491], + [108.400244, 25.491344], + [108.418723, 25.443257], + [108.471693, 25.458928], + [108.585642, 25.365952], + [108.589338, 25.335125], + [108.625062, 25.308076], + [108.62999, 25.335666], + [108.600425, 25.432448], + [108.6072, 25.491885], + [108.634917, 25.520512], + [108.68912, 25.533473], + [108.658323, 25.550212], + [108.660787, 25.584763], + [108.68604, 25.587462], + [108.68912, 25.623081], + [108.724844, 25.634952], + [108.783975, 25.628477], + [108.799989, 25.576666], + [108.781511, 25.554531], + [108.814772, 25.526992], + [108.826474, 25.550212], + [108.890532, 25.556151], + [108.8893, 25.543193], + [108.949046, 25.557231], + [109.024807, 25.51241], + [109.088249, 25.550752], + [109.051908, 25.566949], + [109.030966, 25.629556], + [109.075314, 25.693749], + [109.07901, 25.72071], + [109.043285, 25.738502], + [109.007561, 25.734728], + [108.953974, 25.686738], + [108.953974, 25.686738], + [108.900387, 25.682423], + [108.896076, 25.71424], + [108.940423, 25.740119], + [108.963829, 25.732572], + [108.999553, 25.765453], + [108.989698, 25.778926], + [109.048213, 25.790781], + [109.077778, 25.776771], + [109.095024, 25.80533], + [109.143683, 25.795092], + [109.13198, 25.762758], + [109.147995, 25.741736], + [109.206509, 25.788087], + [109.207125, 25.740119], + [109.296436, 25.71424], + [109.340168, 25.731493], + [109.327849, 25.76168], + [109.339552, 25.83442], + [109.359262, 25.836036], + [109.396834, 25.900117], + [109.435022, 25.93349], + [109.408537, 25.967392], + [109.473211, 26.006663], + [109.48245, 26.029788], + [109.452885, 26.055598], + [109.449805, 26.101826], + [109.502776, 26.096451], + [109.513863, 26.128157], + [109.47629, 26.148035], + [109.439334, 26.238789], + [109.467051, 26.313917], + [109.442414, 26.289774], + [109.369733, 26.277432], + [109.351255, 26.264016], + [109.325385, 26.29031], + [109.285965, 26.295676], + [109.271183, 26.327863], + [109.29582, 26.350389], + [109.319842, 26.418477], + [109.38082, 26.454381], + [109.362342, 26.472061], + [109.385747, 26.493487], + [109.381436, 26.518659], + [109.407305, 26.533116], + [109.390675, 26.598955], + [109.35495, 26.658873], + [109.334008, 26.646036], + [109.306291, 26.661012], + [109.283501, 26.698445], + [109.35495, 26.693098], + [109.407305, 26.719829], + [109.447957, 26.759913], + [109.486761, 26.759913], + [109.47629, 26.829894], + [109.467051, 26.83203], + [109.452885, 26.861932], + [109.436254, 26.892359], + [109.555131, 26.946788], + [109.520022, 27.058764], + [109.497848, 27.079548], + [109.486761, 27.053968], + [109.454733, 27.069423], + [109.472595, 27.134951], + [109.441182, 27.117907], + [109.415312, 27.154123], + [109.358646, 27.153058], + [109.33524, 27.139212], + [109.264407, 27.131755], + [109.239154, 27.14933], + [109.21698, 27.114711], + [109.165857, 27.066758], + [109.101183, 27.06889], + [109.128901, 27.122701], + [109.032814, 27.104056], + [109.007561, 27.08008], + [108.940423, 27.044907], + [108.942887, 27.017186], + [108.942887, 27.017186], + [108.877597, 27.01612], + [108.79075, 27.084343], + [108.878829, 27.106187], + [108.926873, 27.160512], + [108.907778, 27.204699], + [108.963213, 27.235565], + [108.983539, 27.26802], + [109.053756, 27.293551], + [109.044517, 27.331304], + [109.103647, 27.336621], + [109.142451, 27.418461], + [109.141835, 27.448207], + [109.167089, 27.41793], + [109.202197, 27.450331], + [109.245313, 27.41793], + [109.300132, 27.423774], + [109.303211, 27.47582], + [109.404841, 27.55066], + [109.461508, 27.567637], + [109.451037, 27.586204], + [109.470131, 27.62863], + [109.45658, 27.673689], + [109.470747, 27.680049], + [109.414081, 27.725087], + [109.366653, 27.721909], + [109.37774, 27.736741], + [109.332777, 27.782815], + [109.346943, 27.838396], + [109.32169, 27.868027], + [109.30198, 27.956343], + [109.319842, 27.988585], + [109.362342, 28.007608], + [109.378972, 28.034551], + [109.335856, 28.063073], + [109.298284, 28.036136], + [109.314298, 28.103729], + [109.33832, 28.141731], + [109.340168, 28.19027], + [109.367885, 28.254602], + [109.388211, 28.268307], + [109.33524, 28.293605], + [109.317994, 28.277795], + [109.275494, 28.313101], + [109.268719, 28.33786], + [109.289045, 28.373673], + [109.264407, 28.392628], + [109.260712, 28.46473], + [109.274262, 28.494714] + ] + ], + [ + [ + [109.47629, 26.829894], + [109.486761, 26.759913], + [109.52187, 26.749226], + [109.522486, 26.749226], + [109.497232, 26.815474], + [109.513247, 26.84004], + [109.509551, 26.877947], + [109.486761, 26.895562], + [109.452885, 26.861932], + [109.467051, 26.83203], + [109.47629, 26.829894] + ] + ], + [ + [ + [109.528645, 26.743881], + [109.568065, 26.726243], + [109.597015, 26.756173], + [109.554515, 26.73533], + [109.528645, 26.743881] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 530000, + "name": "云南省", + "center": [102.712251, 25.040609], + "centroid": [101.485106, 25.008643], + "childrenNum": 16, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 24, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [105.308229, 27.704955], + [105.290367, 27.712373], + [105.293447, 27.770637], + [105.273736, 27.794992], + [105.313157, 27.810874], + [105.25957, 27.827811], + [105.233084, 27.895534], + [105.284823, 27.935725], + [105.270657, 27.99704], + [105.247867, 28.009193], + [105.218302, 27.990698], + [105.186273, 27.995454], + [105.167795, 28.021345], + [105.186889, 28.054623], + [105.168411, 28.071522], + [105.119752, 28.07205], + [105.061853, 28.096866], + [105.002107, 28.064129], + [104.980549, 28.063073], + [104.975006, 28.020816], + [104.903557, 27.962158], + [104.918339, 27.938897], + [104.888158, 27.914574], + [104.842579, 27.900294], + [104.796999, 27.901352], + [104.761891, 27.884426], + [104.743413, 27.901881], + [104.676275, 27.880723], + [104.63316, 27.850567], + [104.607906, 27.857974], + [104.573413, 27.840512], + [104.52537, 27.889187], + [104.508124, 27.878078], + [104.44961, 27.927794], + [104.40095, 27.952114], + [104.362762, 28.012891], + [104.30856, 28.036136], + [104.304248, 28.050926], + [104.373233, 28.051454], + [104.40095, 28.091586], + [104.448994, 28.113758], + [104.444682, 28.16231], + [104.406494, 28.173389], + [104.402182, 28.202928], + [104.442834, 28.211366], + [104.462544, 28.241422], + [104.44961, 28.269889], + [104.420045, 28.269889], + [104.392943, 28.291497], + [104.384936, 28.329959], + [104.343052, 28.334173], + [104.314103, 28.306778], + [104.282074, 28.343128], + [104.254357, 28.403683], + [104.267908, 28.499448], + [104.260516, 28.536257], + [104.323342, 28.540989], + [104.355987, 28.555183], + [104.375697, 28.5946], + [104.417581, 28.598279], + [104.425588, 28.626649], + [104.372617, 28.649235], + [104.314719, 28.615617], + [104.277147, 28.631902], + [104.252509, 28.660788], + [104.230951, 28.635579], + [104.170589, 28.642932], + [104.117618, 28.634003], + [104.09606, 28.603533], + [104.05972, 28.6277], + [103.953779, 28.600906], + [103.910047, 28.631377], + [103.887873, 28.61982], + [103.850917, 28.66709], + [103.833054, 28.605109], + [103.838598, 28.587244], + [103.802873, 28.563068], + [103.781931, 28.525216], + [103.829975, 28.459995], + [103.828743, 28.44], + [103.860156, 28.383677], + [103.85338, 28.356822], + [103.877402, 28.316262], + [103.828743, 28.285173], + [103.770845, 28.233514], + [103.740048, 28.23615], + [103.701859, 28.198709], + [103.692004, 28.232459], + [103.643961, 28.260401], + [103.573128, 28.230877], + [103.533092, 28.168641], + [103.470266, 28.122204], + [103.430846, 28.044587], + [103.459179, 28.021345], + [103.486281, 28.033495], + [103.515846, 27.965329], + [103.55465, 27.978543], + [103.502295, 27.910343], + [103.509686, 27.843687], + [103.487512, 27.794992], + [103.461027, 27.779638], + [103.393274, 27.709194], + [103.369868, 27.708664], + [103.349542, 27.678459], + [103.29226, 27.632872], + [103.2861, 27.561802], + [103.232514, 27.56976], + [103.19063, 27.523596], + [103.144434, 27.450331], + [103.141355, 27.420586], + [103.080992, 27.396679], + [103.055739, 27.40943], + [102.989833, 27.367983], + [102.941174, 27.405711], + [102.899906, 27.317481], + [102.883892, 27.299401], + [102.883276, 27.258444], + [102.904218, 27.227584], + [102.913457, 27.133886], + [102.870957, 27.026782], + [102.894979, 27.001724], + [102.896211, 26.91264], + [102.949181, 26.843244], + [102.966428, 26.837904], + [102.991681, 26.775409], + [102.983674, 26.76686], + [103.008312, 26.710741], + [103.005232, 26.679195], + [103.026174, 26.664221], + [103.035413, 26.556673], + [103.052659, 26.555602], + [103.052659, 26.514374], + [103.030485, 26.485989], + [102.989833, 26.482775], + [102.988602, 26.413117], + [102.998457, 26.371839], + [102.975667, 26.340736], + [102.893131, 26.338591], + [102.878964, 26.364332], + [102.833385, 26.306406], + [102.785342, 26.298895], + [102.739762, 26.268846], + [102.709581, 26.210336], + [102.659074, 26.221611], + [102.60056, 26.250598], + [102.638748, 26.307479], + [102.629509, 26.336982], + [102.570995, 26.362723], + [102.542046, 26.338591], + [102.440416, 26.300505], + [102.392372, 26.296749], + [102.349257, 26.244694], + [102.245163, 26.212483], + [102.242699, 26.190468], + [102.174946, 26.146961], + [102.152156, 26.10935], + [102.107808, 26.068501], + [102.080091, 26.065275], + [102.020961, 26.096451], + [101.954439, 26.084627], + [101.929186, 26.105588], + [101.899621, 26.099139], + [101.857737, 26.049146], + [101.835563, 26.04592], + [101.839875, 26.082477], + [101.796759, 26.114723], + [101.807846, 26.156093], + [101.773353, 26.168448], + [101.737013, 26.219463], + [101.690202, 26.241473], + [101.630455, 26.224832], + [101.586108, 26.279579], + [101.597195, 26.303187], + [101.64031, 26.318745], + [101.660636, 26.346635], + [101.635383, 26.357361], + [101.637847, 26.388995], + [101.565782, 26.454381], + [101.530057, 26.467239], + [101.506652, 26.499915], + [101.458608, 26.49563], + [101.422884, 26.53151], + [101.395783, 26.591998], + [101.402558, 26.604841], + [101.461688, 26.606447], + [101.461072, 26.640687], + [101.481398, 26.673313], + [101.453065, 26.692563], + [101.513427, 26.768463], + [101.466, 26.786629], + [101.445674, 26.77434], + [101.458608, 26.731054], + [101.435819, 26.740675], + [101.389623, 26.723036], + [101.387159, 26.753501], + [101.358826, 26.771669], + [101.399478, 26.841642], + [101.365602, 26.883819], + [101.311399, 26.903034], + [101.267667, 26.903034], + [101.264587, 26.955323], + [101.227015, 26.959057], + [101.228863, 26.981992], + [101.136472, 27.023584], + [101.157414, 27.094999], + [101.145095, 27.103523], + [101.170349, 27.175421], + [101.167885, 27.198311], + [101.167885, 27.198311], + [101.119226, 27.208957], + [101.071798, 27.194585], + [101.042233, 27.22173], + [101.026219, 27.270679], + [101.021907, 27.332899], + [100.95169, 27.426961], + [100.936908, 27.469448], + [100.901183, 27.453517], + [100.91227, 27.521473], + [100.854988, 27.623858], + [100.827886, 27.615904], + [100.848212, 27.672099], + [100.782307, 27.691708], + [100.775532, 27.743098], + [100.757053, 27.770107], + [100.707162, 27.800816], + [100.719481, 27.858503], + [100.681293, 27.923035], + [100.634482, 27.915631], + [100.609228, 27.859033], + [100.54517, 27.809286], + [100.511294, 27.827811], + [100.504518, 27.852154], + [100.442924, 27.86644], + [100.412127, 27.816167], + [100.350534, 27.755809], + [100.327744, 27.72032], + [100.311729, 27.724028], + [100.304954, 27.788639], + [100.28586, 27.80611], + [100.30865, 27.830457], + [100.30865, 27.861149], + [100.210715, 27.87702], + [100.170063, 27.907699], + [100.196549, 27.936254], + [100.120788, 28.018703], + [100.088759, 28.029269], + [100.05673, 28.097922], + [100.021006, 28.147008], + [100.033325, 28.184467], + [100.062274, 28.193962], + [100.091223, 28.181302], + [100.102926, 28.201873], + [100.153433, 28.208202], + [100.188541, 28.252493], + [100.147274, 28.288862], + [100.176223, 28.325218], + [100.136803, 28.349975], + [100.057346, 28.368934], + [100.073977, 28.426317], + [99.990209, 28.47683], + [99.985281, 28.529422], + [99.91876, 28.599329], + [99.875644, 28.611939], + [99.873181, 28.631902], + [99.834376, 28.628225], + [99.834992, 28.660788], + [99.79434, 28.699116], + [99.755536, 28.701216], + [99.722275, 28.757369], + [99.717964, 28.846521], + [99.676696, 28.810345], + [99.625573, 28.81454], + [99.609559, 28.784122], + [99.614486, 28.740054], + [99.553508, 28.710664], + [99.53195, 28.677591], + [99.540573, 28.623497], + [99.504233, 28.619294], + [99.466045, 28.579886], + [99.463581, 28.549401], + [99.403219, 28.546246], + [99.396444, 28.491032], + [99.426625, 28.454207], + [99.404451, 28.44421], + [99.437095, 28.398419], + [99.392748, 28.318369], + [99.412458, 28.295186], + [99.374886, 28.18183], + [99.306516, 28.227714], + [99.28927, 28.286227], + [99.237531, 28.317842], + [99.229524, 28.350502], + [99.200575, 28.365774], + [99.16485, 28.425264], + [99.187024, 28.44], + [99.191952, 28.494714], + [99.170394, 28.566221], + [99.183944, 28.58882], + [99.147604, 28.640831], + [99.126662, 28.698066], + [99.134053, 28.734806], + [99.114343, 28.765763], + [99.103872, 28.841803], + [99.123582, 28.890021], + [99.132206, 28.94869], + [99.113727, 29.07273], + [99.118039, 29.100971], + [99.105104, 29.162656], + [99.113727, 29.221171], + [99.037351, 29.20759], + [99.024416, 29.188783], + [98.9813, 29.204978], + [98.960974, 29.165792], + [98.967134, 29.128159], + [98.991771, 29.105677], + [99.013329, 29.036632], + [98.925866, 28.978536], + [98.917859, 28.886877], + [98.973909, 28.864867], + [98.972677, 28.832367], + [98.922786, 28.823978], + [98.912931, 28.800906], + [98.852569, 28.798283], + [98.827932, 28.821356], + [98.821772, 28.920931], + [98.786048, 28.998952], + [98.757714, 29.004186], + [98.70228, 28.9644], + [98.655469, 28.976966], + [98.624056, 28.95864], + [98.6567, 28.910454], + [98.643766, 28.895261], + [98.668403, 28.843376], + [98.652389, 28.817162], + [98.683802, 28.740054], + [98.666555, 28.712239], + [98.594491, 28.667615], + [98.637606, 28.552029], + [98.619128, 28.50944], + [98.625903, 28.489455], + [98.673947, 28.478934], + [98.693041, 28.43158], + [98.740468, 28.348395], + [98.746628, 28.321003], + [98.710287, 28.288862], + [98.712135, 28.229296], + [98.649925, 28.200291], + [98.625903, 28.165475], + [98.559382, 28.182885], + [98.494092, 28.141203], + [98.464527, 28.151229], + [98.428803, 28.104785], + [98.389383, 28.114814], + [98.389999, 28.16442], + [98.370289, 28.18394], + [98.37768, 28.246167], + [98.353042, 28.293078], + [98.317934, 28.324691], + [98.301303, 28.384204], + [98.208913, 28.358401], + [98.207681, 28.330486], + [98.231702, 28.314681], + [98.266811, 28.242477], + [98.21692, 28.212949], + [98.169492, 28.206093], + [98.17442, 28.163365], + [98.139311, 28.142259], + [98.160253, 28.101089], + [98.133152, 27.990698], + [98.143007, 27.948942], + [98.187355, 27.939426], + [98.205217, 27.889716], + [98.169492, 27.851096], + [98.215688, 27.810874], + [98.234166, 27.690648], + [98.283441, 27.654608], + [98.310542, 27.583552], + [98.317318, 27.51935], + [98.337644, 27.508734], + [98.388767, 27.515104], + [98.429419, 27.549068], + [98.430035, 27.653547], + [98.444201, 27.665209], + [98.474998, 27.634462], + [98.53536, 27.620676], + [98.554454, 27.646126], + [98.587099, 27.587265], + [98.583404, 27.571351], + [98.650541, 27.567637], + [98.662244, 27.586734], + [98.706591, 27.553313], + [98.685034, 27.484315], + [98.704744, 27.462014], + [98.686881, 27.425367], + [98.702896, 27.412618], + [98.706591, 27.362136], + [98.741084, 27.330241], + [98.734925, 27.287168], + [98.717062, 27.271211], + [98.723222, 27.221198], + [98.696121, 27.211086], + [98.713983, 27.139744], + [98.712751, 27.075817], + [98.765722, 27.05077], + [98.762642, 27.018252], + [98.732461, 27.002257], + [98.757098, 26.877947], + [98.730613, 26.851253], + [98.762026, 26.798916], + [98.746012, 26.696841], + [98.770033, 26.690424], + [98.762642, 26.660478], + [98.781736, 26.620893], + [98.773113, 26.578083], + [98.753403, 26.559349], + [98.757098, 26.491881], + [98.741084, 26.432947], + [98.750323, 26.424372], + [98.733693, 26.350926], + [98.681338, 26.308016], + [98.672715, 26.239863], + [98.713367, 26.231274], + [98.735541, 26.185097], + [98.712751, 26.156093], + [98.720142, 26.127082], + [98.661012, 26.087852], + [98.656084, 26.139977], + [98.632679, 26.145887], + [98.575396, 26.118485], + [98.602498, 26.054523], + [98.614201, 25.968468], + [98.637606, 25.971696], + [98.686881, 25.925955], + [98.705976, 25.855426], + [98.677642, 25.816105], + [98.640686, 25.798864], + [98.553839, 25.845731], + [98.529201, 25.840884], + [98.476846, 25.77731], + [98.461448, 25.735267], + [98.457752, 25.682963], + [98.409709, 25.664084], + [98.402317, 25.593939], + [98.326557, 25.566409], + [98.314854, 25.543193], + [98.247717, 25.607971], + [98.170724, 25.620383], + [98.189818, 25.569108], + [98.163949, 25.524292], + [98.131304, 25.51025], + [98.15779, 25.457307], + [98.137464, 25.381633], + [98.101123, 25.388662], + [98.099891, 25.354055], + [98.06971, 25.311864], + [98.006884, 25.298338], + [98.0075, 25.279399], + [97.940363, 25.214985], + [97.904023, 25.216609], + [97.875689, 25.25721], + [97.839349, 25.27074], + [97.796233, 25.155954], + [97.743262, 25.078466], + [97.719857, 25.080634], + [97.727864, 25.04377], + [97.716777, 24.978147], + [97.729712, 24.908689], + [97.785762, 24.876117], + [97.797465, 24.845709], + [97.765436, 24.823984], + [97.680437, 24.827243], + [97.652103, 24.790846], + [97.569567, 24.765852], + [97.547394, 24.739221], + [97.569567, 24.708236], + [97.570799, 24.602719], + [97.554785, 24.490577], + [97.530147, 24.443187], + [97.588662, 24.435559], + [97.669966, 24.452993], + [97.679821, 24.401228], + [97.716161, 24.358711], + [97.662574, 24.339083], + [97.665038, 24.296544], + [97.721089, 24.295999], + [97.767284, 24.258357], + [97.729712, 24.227252], + [97.72848, 24.183585], + [97.754349, 24.163929], + [97.748806, 24.160653], + [97.743262, 24.159561], + [97.730944, 24.113685], + [97.700763, 24.093473], + [97.697067, 24.092927], + [97.637321, 24.04812], + [97.628698, 24.004938], + [97.572647, 23.983068], + [97.529531, 23.943146], + [97.5283, 23.926736], + [97.618227, 23.888438], + [97.640401, 23.866001], + [97.647176, 23.840823], + [97.684132, 23.876946], + [97.718009, 23.867643], + [97.72848, 23.895551], + [97.763588, 23.907041], + [97.795617, 23.951897], + [97.8104, 23.943146], + [97.863371, 23.978693], + [97.896015, 23.974319], + [97.902175, 24.014231], + [97.984095, 24.031177], + [97.995182, 24.04648], + [98.091268, 24.085824], + [98.096196, 24.08637], + [98.123297, 24.092927], + [98.125761, 24.092927], + [98.132536, 24.09238], + [98.19721, 24.09839], + [98.219999, 24.113685], + [98.343187, 24.098936], + [98.37768, 24.114232], + [98.48239, 24.122425], + [98.487933, 24.123517], + [98.547063, 24.128433], + [98.593875, 24.08036], + [98.646229, 24.106038], + [98.681954, 24.100029], + [98.71891, 24.127887], + [98.818692, 24.133348], + [98.841482, 24.126794], + [98.876591, 24.15137], + [98.895069, 24.098936], + [98.807606, 24.025164], + [98.773729, 24.022431], + [98.727533, 23.970491], + [98.701048, 23.981427], + [98.673331, 23.960647], + [98.701048, 23.946427], + [98.68565, 23.90157], + [98.701664, 23.834254], + [98.669019, 23.800857], + [98.696121, 23.784429], + [98.784816, 23.781691], + [98.824236, 23.727462], + [98.811917, 23.703354], + [98.835939, 23.683625], + [98.847026, 23.632097], + [98.882134, 23.620035], + [98.882134, 23.595358], + [98.844562, 23.578904], + [98.80391, 23.540504], + [98.826084, 23.470257], + [98.874743, 23.483431], + [98.912315, 23.426333], + [98.920938, 23.360971], + [98.872895, 23.329651], + [98.906772, 23.331849], + [98.936953, 23.309866], + [98.928946, 23.26589], + [98.889525, 23.209249], + [98.906772, 23.185595], + [99.002242, 23.160287], + [99.057677, 23.164689], + [99.048438, 23.11461], + [99.106336, 23.086536], + [99.187024, 23.100299], + [99.255393, 23.077727], + [99.281879, 23.101399], + [99.3484, 23.12892], + [99.380429, 23.099748], + [99.440791, 23.079379], + [99.477747, 23.083233], + [99.528255, 23.065614], + [99.517168, 23.006685], + [99.533798, 22.961507], + [99.563363, 22.925684], + [99.531334, 22.897019], + [99.446951, 22.934503], + [99.43648, 22.913557], + [99.462965, 22.844635], + [99.401371, 22.826434], + [99.385357, 22.761882], + [99.326842, 22.751396], + [99.31514, 22.737598], + [99.339777, 22.708894], + [99.385973, 22.57136], + [99.359487, 22.535435], + [99.382277, 22.493418], + [99.297277, 22.41156], + [99.251698, 22.393301], + [99.278183, 22.34626], + [99.233836, 22.296434], + [99.235683, 22.250468], + [99.207966, 22.232188], + [99.175321, 22.185647], + [99.188256, 22.162924], + [99.156227, 22.159599], + [99.219669, 22.110816], + [99.294814, 22.109152], + [99.35456, 22.095845], + [99.400139, 22.100281], + [99.486987, 22.128557], + [99.516552, 22.099726], + [99.562747, 22.113034], + [99.578762, 22.098617], + [99.581841, 22.103053], + [99.648979, 22.100835], + [99.696406, 22.067562], + [99.762927, 22.068117], + [99.870101, 22.029288], + [99.871333, 22.067007], + [99.972347, 22.053141], + [99.965571, 22.014309], + [100.000064, 21.973245], + [99.982202, 21.919401], + [99.960028, 21.907186], + [99.944014, 21.821097], + [99.991441, 21.703821], + [100.049339, 21.669899], + [100.094303, 21.702709], + [100.131875, 21.699929], + [100.169447, 21.663225], + [100.107853, 21.585337], + [100.123252, 21.565302], + [100.131259, 21.504066], + [100.168831, 21.482906], + [100.184846, 21.516315], + [100.206404, 21.509634], + [100.235353, 21.466756], + [100.298795, 21.477894], + [100.349302, 21.528564], + [100.437381, 21.533017], + [100.48296, 21.458958], + [100.526692, 21.471211], + [100.579047, 21.451717], + [100.691764, 21.510748], + [100.730568, 21.518542], + [100.753358, 21.555283], + [100.789082, 21.570867], + [100.804481, 21.609821], + [100.847597, 21.634856], + [100.870386, 21.67268], + [100.896872, 21.68269], + [100.899335, 21.684915], + [100.936292, 21.694368], + [100.937524, 21.693812], + [101.015132, 21.707157], + [101.089661, 21.773865], + [101.123537, 21.771642], + [101.111835, 21.746074], + [101.116762, 21.691032], + [101.153102, 21.669343], + [101.169117, 21.590345], + [101.146943, 21.560293], + [101.209153, 21.55751], + [101.210385, 21.509077], + [101.225167, 21.499055], + [101.193138, 21.473996], + [101.194986, 21.424979], + [101.142631, 21.409379], + [101.183899, 21.334699], + [101.244877, 21.302364], + [101.246725, 21.275598], + [101.222088, 21.234324], + [101.290457, 21.17853], + [101.387775, 21.225956], + [101.439514, 21.227072], + [101.532521, 21.252174], + [101.601506, 21.233208], + [101.588572, 21.191365], + [101.605818, 21.172392], + [101.672339, 21.194713], + [101.703136, 21.14616], + [101.76473, 21.147835], + [101.794911, 21.208104], + [101.834331, 21.204756], + [101.833715, 21.252731], + [101.791832, 21.285636], + [101.745636, 21.297345], + [101.730238, 21.336929], + [101.749948, 21.409379], + [101.741324, 21.482906], + [101.772737, 21.512975], + [101.755491, 21.538027], + [101.754875, 21.58478], + [101.804766, 21.577546], + [101.828788, 21.617054], + [101.807846, 21.644313], + [101.780129, 21.640975], + [101.76781, 21.716054], + [101.747484, 21.729953], + [101.771506, 21.833319], + [101.740093, 21.845541], + [101.735165, 21.875534], + [101.700057, 21.897191], + [101.701288, 21.938832], + [101.666796, 21.934391], + [101.606434, 21.967695], + [101.626144, 22.005986], + [101.573789, 22.115251], + [101.602738, 22.131883], + [101.596579, 22.161262], + [101.547304, 22.238282], + [101.56455, 22.269299], + [101.625528, 22.28259], + [101.671723, 22.372826], + [101.648318, 22.400494], + [101.672339, 22.47517], + [101.715455, 22.477935], + [101.774585, 22.506135], + [101.824476, 22.45692], + [101.823244, 22.42705], + [101.862665, 22.389427], + [101.901469, 22.384447], + [101.907628, 22.437007], + [101.978461, 22.427603], + [102.046214, 22.458026], + [102.131214, 22.430922], + [102.145381, 22.397727], + [102.179257, 22.430369], + [102.270416, 22.419858], + [102.25625, 22.457473], + [102.322771, 22.554227], + [102.356648, 22.563623], + [102.404691, 22.629925], + [102.384365, 22.679631], + [102.43672, 22.699508], + [102.45951, 22.762986], + [102.510633, 22.774574], + [102.551285, 22.743669], + [102.569763, 22.701164], + [102.607335, 22.730975], + [102.657226, 22.687913], + [102.688639, 22.70006], + [102.80074, 22.620534], + [102.82353, 22.623296], + [102.880196, 22.586832], + [102.892515, 22.533223], + [102.930703, 22.482359], + [102.986754, 22.477935], + [103.030485, 22.441432], + [103.081608, 22.454154], + [103.071753, 22.488441], + [103.183238, 22.558649], + [103.161065, 22.590147], + [103.195557, 22.648153], + [103.220195, 22.643734], + [103.283021, 22.678526], + [103.288564, 22.732078], + [103.321209, 22.777885], + [103.323057, 22.807678], + [103.375411, 22.794989], + [103.441317, 22.753052], + [103.436389, 22.6973], + [103.457947, 22.658646], + [103.50907, 22.601198], + [103.529396, 22.59291], + [103.580519, 22.66693], + [103.567585, 22.701164], + [103.642113, 22.794989], + [103.740048, 22.709446], + [103.743127, 22.697852], + [103.766533, 22.688465], + [103.825047, 22.615562], + [103.863851, 22.584069], + [103.875554, 22.565833], + [103.894032, 22.564728], + [103.964865, 22.502265], + [104.009213, 22.517745], + [104.009213, 22.575228], + [104.022148, 22.593463], + [104.04309, 22.67687], + [104.045553, 22.728215], + [104.089901, 22.768504], + [104.117618, 22.808781], + [104.224176, 22.826434], + [104.261748, 22.841877], + [104.274067, 22.828088], + [104.256821, 22.77347], + [104.272835, 22.73815], + [104.323342, 22.728767], + [104.375697, 22.690122], + [104.422508, 22.734838], + [104.498885, 22.774574], + [104.527834, 22.814298], + [104.596203, 22.846289], + [104.674428, 22.817056], + [104.737869, 22.825882], + [104.732942, 22.852356], + [104.760659, 22.862282], + [104.772362, 22.893711], + [104.846275, 22.926235], + [104.860441, 22.970874], + [104.821021, 23.032022], + [104.804391, 23.110207], + [104.874608, 23.123417], + [104.882615, 23.163589], + [104.912796, 23.175693], + [104.949136, 23.152033], + [104.958991, 23.188896], + [105.093266, 23.260942], + [105.122215, 23.247745], + [105.181962, 23.279084], + [105.238012, 23.26424], + [105.260186, 23.31811], + [105.325475, 23.390086], + [105.353809, 23.362069], + [105.372903, 23.317561], + [105.416018, 23.283482], + [105.445584, 23.292827], + [105.50225, 23.202648], + [105.542902, 23.184495], + [105.526272, 23.234548], + [105.560148, 23.257093], + [105.593409, 23.312614], + [105.649459, 23.346136], + [105.699966, 23.327453], + [105.694423, 23.363168], + [105.637757, 23.404366], + [105.699966, 23.40162], + [105.758481, 23.459826], + [105.805908, 23.467512], + [105.815763, 23.507031], + [105.852103, 23.526786], + [105.89214, 23.52514], + [105.913081, 23.499348], + [105.935871, 23.508678], + [105.986378, 23.489469], + [105.999929, 23.447748], + [106.039965, 23.484529], + [106.071994, 23.495506], + [106.08616, 23.524043], + [106.141595, 23.569579], + [106.120653, 23.605229], + [106.149602, 23.665538], + [106.157609, 23.724175], + [106.136667, 23.795381], + [106.192102, 23.824947], + [106.173008, 23.861622], + [106.192718, 23.879135], + [106.157609, 23.891174], + [106.128044, 23.956819], + [106.091088, 23.998924], + [106.096631, 24.018058], + [106.053516, 24.051399], + [106.04982, 24.089649], + [106.011632, 24.099482], + [105.998081, 24.120786], + [105.963589, 24.110954], + [105.919241, 24.122425], + [105.901995, 24.099482], + [105.908154, 24.069432], + [105.89214, 24.040468], + [105.859495, 24.056864], + [105.841633, 24.03063], + [105.796669, 24.023524], + [105.802212, 24.051945], + [105.765256, 24.073804], + [105.739387, 24.059596], + [105.704278, 24.0667], + [105.649459, 24.032816], + [105.628518, 24.126794], + [105.594641, 24.137718], + [105.533663, 24.130071], + [105.493011, 24.016965], + [105.406163, 24.043748], + [105.395692, 24.065607], + [105.334099, 24.094566], + [105.320548, 24.116416], + [105.273121, 24.092927], + [105.292831, 24.074896], + [105.260186, 24.061236], + [105.20044, 24.105491], + [105.182577, 24.167205], + [105.229389, 24.165567], + [105.24294, 24.208695], + [105.215222, 24.214699], + [105.164715, 24.288362], + [105.196744, 24.326541], + [105.188121, 24.347261], + [105.138846, 24.376701], + [105.111744, 24.37234], + [105.106817, 24.414853], + [105.042759, 24.442097], + [104.979933, 24.412673], + [104.930042, 24.411038], + [104.914028, 24.426296], + [104.83642, 24.446456], + [104.784681, 24.443732], + [104.765587, 24.45953], + [104.74834, 24.435559], + [104.715695, 24.441552], + [104.703377, 24.419757], + [104.721239, 24.340173], + [104.70892, 24.321087], + [104.641783, 24.367979], + [104.610986, 24.377246], + [104.63008, 24.397958], + [104.616529, 24.421937], + [104.575877, 24.424661], + [104.550008, 24.518894], + [104.520443, 24.535228], + [104.489646, 24.653313], + [104.529682, 24.731611], + [104.542616, 24.75607], + [104.539537, 24.813663], + [104.586964, 24.872859], + [104.635623, 24.903803], + [104.663957, 24.964584], + [104.713232, 24.996048], + [104.684898, 25.054072], + [104.619609, 25.060577], + [104.685514, 25.078466], + [104.695369, 25.122364], + [104.732326, 25.167871], + [104.724319, 25.195491], + [104.753884, 25.214443], + [104.801927, 25.163537], + [104.822869, 25.170037], + [104.806854, 25.224189], + [104.826565, 25.235558], + [104.816094, 25.262622], + [104.736021, 25.268034], + [104.689826, 25.296173], + [104.639935, 25.295632], + [104.646094, 25.356759], + [104.615913, 25.364871], + [104.566638, 25.402719], + [104.543232, 25.400556], + [104.556783, 25.524832], + [104.524138, 25.526992], + [104.483486, 25.494585], + [104.44961, 25.495126], + [104.434827, 25.472436], + [104.418813, 25.499447], + [104.436059, 25.520512], + [104.428668, 25.576126], + [104.389248, 25.595558], + [104.332581, 25.598796], + [104.310407, 25.647901], + [104.328886, 25.760602], + [104.370769, 25.730415], + [104.397871, 25.76168], + [104.42374, 25.841961], + [104.441602, 25.868889], + [104.414501, 25.909807], + [104.438523, 25.92757], + [104.470552, 26.009352], + [104.460081, 26.085702], + [104.499501, 26.070651], + [104.52845, 26.114186], + [104.518595, 26.165762], + [104.548776, 26.226979], + [104.542616, 26.253282], + [104.592508, 26.317672], + [104.659645, 26.335373], + [104.684283, 26.3772], + [104.664572, 26.397572], + [104.665804, 26.434019], + [104.631928, 26.451702], + [104.638703, 26.477954], + [104.598667, 26.520801], + [104.57095, 26.524549], + [104.579573, 26.568449], + [104.556783, 26.590393], + [104.488414, 26.579689], + [104.459465, 26.602701], + [104.468088, 26.644431], + [104.424356, 26.709137], + [104.398487, 26.686147], + [104.353523, 26.620893], + [104.313487, 26.612867], + [104.274683, 26.633733], + [104.268524, 26.617683], + [104.222328, 26.620358], + [104.160734, 26.646571], + [104.121314, 26.638012], + [104.068343, 26.573266], + [104.067727, 26.51491], + [104.008597, 26.511697], + [103.953163, 26.521336], + [103.865699, 26.512232], + [103.819504, 26.529903], + [103.815808, 26.55239], + [103.763453, 26.585041], + [103.748671, 26.623568], + [103.759142, 26.689355], + [103.773308, 26.716621], + [103.725265, 26.742812], + [103.705555, 26.794642], + [103.722185, 26.851253], + [103.779468, 26.87421], + [103.763453, 26.905702], + [103.775156, 26.951056], + [103.753598, 26.963858], + [103.73204, 27.018785], + [103.704939, 27.049171], + [103.675374, 27.051836], + [103.623019, 27.007056], + [103.623635, 27.035312], + [103.601461, 27.061962], + [103.614396, 27.079548], + [103.659975, 27.065692], + [103.652584, 27.092868], + [103.620555, 27.096598], + [103.63349, 27.12057], + [103.696316, 27.126429], + [103.748671, 27.210021], + [103.801641, 27.250464], + [103.80041, 27.26536], + [103.865699, 27.28185], + [103.874322, 27.331304], + [103.903271, 27.347785], + [103.905119, 27.38552], + [103.932221, 27.443958], + [103.956242, 27.425367], + [104.015372, 27.429086], + [104.01722, 27.383926], + [104.084358, 27.330773], + [104.113923, 27.338216], + [104.173053, 27.263232], + [104.210625, 27.297273], + [104.248813, 27.291955], + [104.247582, 27.336621], + [104.295625, 27.37436], + [104.30856, 27.407305], + [104.363378, 27.467855], + [104.467472, 27.414211], + [104.497037, 27.414743], + [104.539537, 27.327583], + [104.570334, 27.331836], + [104.611602, 27.306846], + [104.7545, 27.345658], + [104.77113, 27.317481], + [104.824717, 27.3531], + [104.856746, 27.332368], + [104.851818, 27.299401], + [104.871528, 27.290891], + [104.913412, 27.327051], + [105.01073, 27.379143], + [105.068013, 27.418461], + [105.120984, 27.418461], + [105.184425, 27.392959], + [105.182577, 27.367451], + [105.233084, 27.436522], + [105.234316, 27.489093], + [105.260186, 27.514573], + [105.232469, 27.546945], + [105.25649, 27.582491], + [105.304533, 27.611661], + [105.29591, 27.631811], + [105.308229, 27.704955] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 540000, + "name": "西藏自治区", + "center": [91.132212, 29.660361], + "centroid": [88.388277, 31.56375], + "childrenNum": 7, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 25, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [89.711414, 36.093272], + [89.614711, 36.109712], + [89.594385, 36.126632], + [89.490291, 36.151281], + [89.375727, 36.228078], + [89.335075, 36.23725], + [89.292575, 36.231457], + [89.232213, 36.295636], + [89.198952, 36.260417], + [89.126887, 36.254626], + [89.10225, 36.281164], + [89.054822, 36.291777], + [89.013554, 36.315409], + [88.964279, 36.318785], + [88.926091, 36.36458], + [88.870657, 36.348193], + [88.838628, 36.353496], + [88.802903, 36.33807], + [88.783809, 36.291777], + [88.766563, 36.292259], + [88.690186, 36.367954], + [88.623665, 36.389636], + [88.618121, 36.428168], + [88.573158, 36.461386], + [88.498629, 36.446463], + [88.470912, 36.48208], + [88.41055, 36.473418], + [88.356963, 36.477268], + [88.366202, 36.458016], + [88.282434, 36.470049], + [88.241782, 36.468605], + [88.222688, 36.447426], + [88.182652, 36.452721], + [88.134609, 36.427205], + [88.092109, 36.43539], + [88.006494, 36.430575], + [87.983088, 36.437797], + [87.95845, 36.408423], + [87.919646, 36.39349], + [87.838342, 36.383855], + [87.826023, 36.391563], + [87.767509, 36.3747], + [87.731785, 36.384818], + [87.6203, 36.360243], + [87.570409, 36.342409], + [87.470626, 36.354459], + [87.460155, 36.409868], + [87.426895, 36.42576], + [87.386859, 36.412757], + [87.363453, 36.420463], + [87.348055, 36.393008], + [87.292004, 36.358797], + [87.193454, 36.349158], + [87.161425, 36.325535], + [87.149106, 36.297565], + [87.08628, 36.310587], + [87.051788, 36.2966], + [86.996353, 36.308658], + [86.943998, 36.284058], + [86.931064, 36.265242], + [86.887332, 36.262829], + [86.86331, 36.299977], + [86.836209, 36.291294], + [86.746282, 36.291777], + [86.69947, 36.24449], + [86.599072, 36.222285], + [86.531935, 36.227113], + [86.515305, 36.205385], + [86.454943, 36.221319], + [86.392733, 36.206834], + [86.35824, 36.168676], + [86.2794, 36.170608], + [86.248603, 36.141616], + [86.187625, 36.130983], + [86.182081, 36.064734], + [86.199944, 36.047801], + [86.173458, 36.008113], + [86.150668, 36.00424], + [86.129111, 35.941761], + [86.093386, 35.906868], + [86.090306, 35.876809], + [86.05335, 35.842857], + [86.035488, 35.846738], + [85.949256, 35.778794], + [85.903677, 35.78462], + [85.835308, 35.771996], + [85.811286, 35.778794], + [85.691178, 35.751114], + [85.65299, 35.731199], + [85.612953, 35.651486], + [85.566142, 35.6403], + [85.518715, 35.680658], + [85.373969, 35.700101], + [85.341324, 35.753543], + [85.271107, 35.788989], + [85.146071, 35.742371], + [85.053065, 35.752086], + [84.99455, 35.737028], + [84.973608, 35.709334], + [84.920022, 35.696213], + [84.798066, 35.647595], + [84.729081, 35.613546], + [84.704443, 35.616951], + [84.628067, 35.595055], + [84.570168, 35.588242], + [84.513502, 35.564391], + [84.448828, 35.550272], + [84.475929, 35.516181], + [84.45314, 35.473303], + [84.424191, 35.466479], + [84.333032, 35.413821], + [84.274517, 35.404065], + [84.200605, 35.381135], + [84.160569, 35.359663], + [84.140859, 35.379184], + [84.095895, 35.362592], + [84.077417, 35.400163], + [84.005968, 35.422599], + [83.906186, 35.40309], + [83.885244, 35.367472], + [83.79778, 35.354783], + [83.785462, 35.36308], + [83.677672, 35.361128], + [83.622238, 35.335256], + [83.599448, 35.351366], + [83.54155, 35.341603], + [83.540318, 35.364056], + [83.502745, 35.360639], + [83.449159, 35.382111], + [83.405427, 35.380648], + [83.333978, 35.397236], + [83.280391, 35.401138], + [83.251442, 35.417722], + [83.178145, 35.38943], + [83.127022, 35.398699], + [83.088834, 35.425526], + [83.067892, 35.46258], + [82.998907, 35.484512], + [82.971806, 35.548324], + [82.981661, 35.599922], + [82.956407, 35.636409], + [82.967494, 35.667532], + [82.894813, 35.673852], + [82.873871, 35.688922], + [82.795031, 35.688436], + [82.780249, 35.666073], + [82.731589, 35.637868], + [82.652133, 35.67288], + [82.628727, 35.692324], + [82.546192, 35.708362], + [82.501844, 35.701073], + [82.468583, 35.717595], + [82.424852, 35.712736], + [82.392823, 35.656349], + [82.336156, 35.651486], + [82.350323, 35.611113], + [82.328149, 35.559523], + [82.2992, 35.544916], + [82.263475, 35.547837], + [82.234526, 35.520565], + [82.189563, 35.513258], + [82.164925, 35.495719], + [82.086701, 35.467454], + [82.071302, 35.450393], + [82.034346, 35.451855], + [82.029419, 35.426013], + [82.05344, 35.35039], + [82.030034, 35.321585], + [81.99123, 35.30547], + [81.955506, 35.307423], + [81.927789, 35.271275], + [81.853876, 35.25857], + [81.804601, 35.270786], + [81.736847, 35.26248], + [81.68634, 35.235599], + [81.513261, 35.23511], + [81.504638, 35.279092], + [81.447972, 35.318167], + [81.441196, 35.333303], + [81.385762, 35.335256], + [81.363588, 35.354783], + [81.314313, 35.337209], + [81.285364, 35.345508], + [81.26627, 35.322562], + [81.219458, 35.319144], + [81.191741, 35.36552], + [81.142466, 35.365032], + [81.103662, 35.386015], + [81.09935, 35.40748], + [81.054387, 35.402602], + [81.031597, 35.380648], + [81.030981, 35.337209], + [81.002648, 35.334768], + [81.026053, 35.31133], + [80.963844, 35.310842], + [80.924423, 35.330862], + [80.894242, 35.324027], + [80.844351, 35.345508], + [80.759968, 35.334768], + [80.689135, 35.339162], + [80.690982, 35.364544], + [80.65649, 35.393821], + [80.599823, 35.409431], + [80.56841, 35.391381], + [80.532686, 35.404553], + [80.514824, 35.391869], + [80.444607, 35.417235], + [80.432904, 35.449418], + [80.375006, 35.387966], + [80.321419, 35.38699], + [80.286926, 35.35283], + [80.267832, 35.295701], + [80.362687, 35.20871], + [80.257977, 35.203331], + [80.223484, 35.177409], + [80.23026, 35.147565], + [80.118159, 35.066293], + [80.078123, 35.076578], + [80.031311, 35.034447], + [80.04363, 35.022196], + [80.02392, 34.971209], + [80.041782, 34.943252], + [80.034391, 34.902033], + [80.003594, 34.895162], + [79.996819, 34.856375], + [79.961094, 34.862759], + [79.926602, 34.849499], + [79.947544, 34.821008], + [79.898268, 34.732035], + [79.906892, 34.683821], + [79.866856, 34.671517], + [79.88595, 34.642965], + [79.84345, 34.55725], + [79.861312, 34.528166], + [79.801566, 34.478847], + [79.735661, 34.471447], + [79.699936, 34.477861], + [79.675914, 34.451216], + [79.58106, 34.456151], + [79.545335, 34.476381], + [79.504683, 34.45467], + [79.435082, 34.447761], + [79.363017, 34.428018], + [79.326677, 34.44332], + [79.274322, 34.435916], + [79.241677, 34.415183], + [79.179467, 34.422588], + [79.161605, 34.441345], + [79.072294, 34.412714], + [79.039033, 34.421601], + [79.0107, 34.399877], + [79.048888, 34.348506], + [79.039649, 34.33467], + [79.019939, 34.313417], + [78.981751, 34.31836], + [78.958345, 34.230827], + [78.941099, 34.212022], + [78.9257, 34.155584], + [78.910302, 34.143202], + [78.878273, 34.163012], + [78.828998, 34.125369], + [78.801897, 34.137258], + [78.737223, 34.089692], + [78.661462, 34.086718], + [78.656535, 34.030196], + [78.736607, 33.999937], + [78.744614, 33.980585], + [78.734143, 33.918529], + [78.762476, 33.90959], + [78.756317, 33.8773], + [78.766172, 33.823124], + [78.758165, 33.790802], + [78.779723, 33.73259], + [78.692259, 33.676331], + [78.684868, 33.654415], + [78.713201, 33.623025], + [78.755085, 33.623025], + [78.74215, 33.55323], + [78.816679, 33.480882], + [78.84994, 33.419963], + [78.896751, 33.41247], + [78.949722, 33.376495], + [78.9682, 33.334505], + [79.022403, 33.323504], + [79.041497, 33.268479], + [79.083997, 33.245459], + [79.072294, 33.22844], + [79.10925, 33.200401], + [79.152366, 33.184375], + [79.162221, 33.165841], + [79.139431, 33.117735], + [79.162837, 33.01191], + [79.204721, 32.964724], + [79.255844, 32.942628], + [79.227511, 32.89038], + [79.237982, 32.846145], + [79.225047, 32.784281], + [79.275554, 32.778746], + [79.301423, 32.728919], + [79.27309, 32.678056], + [79.299575, 32.637244], + [79.308199, 32.596918], + [79.272474, 32.561113], + [79.252148, 32.516715], + [79.190554, 32.511669], + [79.180083, 32.492994], + [79.135736, 32.472295], + [79.124649, 32.416235], + [79.103091, 32.369744], + [79.067982, 32.380863], + [79.005772, 32.375304], + [78.970664, 32.331826], + [78.904142, 32.374798], + [78.87273, 32.40512], + [78.81052, 32.436441], + [78.782186, 32.480373], + [78.760629, 32.563635], + [78.781571, 32.608009], + [78.74215, 32.654881], + [78.741534, 32.703743], + [78.6861, 32.680071], + [78.675013, 32.658408], + [78.628202, 32.630188], + [78.588782, 32.637748], + [78.577695, 32.615067], + [78.518564, 32.605993], + [78.500086, 32.580782], + [78.424942, 32.565652], + [78.395377, 32.530339], + [78.426174, 32.502584], + [78.472985, 32.435431], + [78.458818, 32.379853], + [78.483456, 32.357106], + [78.480992, 32.329297], + [78.508709, 32.297939], + [78.475449, 32.236708], + [78.430485, 32.212407], + [78.429869, 32.194683], + [78.469905, 32.127808], + [78.509941, 32.147065], + [78.527188, 32.11463], + [78.609107, 32.052768], + [78.60726, 32.023851], + [78.705194, 31.988835], + [78.762476, 31.947203], + [78.768636, 31.92638], + [78.739687, 31.885228], + [78.665158, 31.851684], + [78.654687, 31.819144], + [78.706426, 31.778453], + [78.763092, 31.668499], + [78.798817, 31.675629], + [78.806824, 31.64099], + [78.845628, 31.609905], + [78.833925, 31.584927], + [78.779723, 31.545154], + [78.740303, 31.532912], + [78.729832, 31.478316], + [78.755701, 31.478316], + [78.792041, 31.435944], + [78.760013, 31.392531], + [78.755085, 31.355742], + [78.795121, 31.301043], + [78.859179, 31.289281], + [78.865338, 31.312804], + [78.884432, 31.277006], + [78.923852, 31.246824], + [78.930628, 31.220726], + [78.997765, 31.158779], + [78.97436, 31.115751], + [79.010084, 31.043994], + [79.059359, 31.028097], + [79.096931, 30.992192], + [79.181931, 31.015788], + [79.205953, 31.0004], + [79.227511, 30.949088], + [79.33222, 30.969103], + [79.316206, 31.01784], + [79.35809, 31.031174], + [79.404901, 31.071678], + [79.424611, 31.061425], + [79.427075, 31.018353], + [79.505915, 31.027584], + [79.550879, 30.957813], + [79.59769, 30.925989], + [79.660516, 30.956787], + [79.668523, 30.980392], + [79.729501, 30.941389], + [79.75845, 30.936769], + [79.835443, 30.851006], + [79.890877, 30.855116], + [79.913051, 30.833022], + [79.900732, 30.7991], + [79.961094, 30.771337], + [79.955551, 30.738422], + [79.970333, 30.685941], + [80.014065, 30.661748], + [80.04363, 30.603559], + [80.143412, 30.55822], + [80.214245, 30.586044], + [80.261673, 30.566465], + [80.322035, 30.564403], + [80.357759, 30.520592], + [80.43044, 30.515952], + [80.446454, 30.495327], + [80.504969, 30.483466], + [80.549316, 30.448905], + [80.585041, 30.463866], + [80.633084, 30.458707], + [80.692214, 30.416913], + [80.719316, 30.414848], + [80.81725, 30.321389], + [80.910873, 30.30279], + [80.933662, 30.266614], + [80.996488, 30.267648], + [81.034677, 30.246971], + [81.038372, 30.205086], + [81.082104, 30.151281], + [81.085799, 30.100554], + [81.110437, 30.085538], + [81.09627, 30.052909], + [81.131995, 30.016124], + [81.225618, 30.005759], + [81.256415, 30.011978], + [81.247792, 30.032705], + [81.2829, 30.061197], + [81.293371, 30.094859], + [81.269349, 30.153351], + [81.335871, 30.149729], + [81.393769, 30.199396], + [81.397465, 30.240767], + [81.419023, 30.270232], + [81.406088, 30.291938], + [81.427646, 30.305373], + [81.399929, 30.319323], + [81.406088, 30.369421], + [81.432573, 30.379231], + [81.406704, 30.40401], + [81.418407, 30.420525], + [81.454131, 30.412268], + [81.494783, 30.381296], + [81.555761, 30.369421], + [81.566232, 30.428782], + [81.613044, 30.412784], + [81.63029, 30.446842], + [81.723913, 30.407623], + [81.759021, 30.385426], + [81.872354, 30.373035], + [81.939491, 30.344633], + [81.954274, 30.355995], + [81.99123, 30.322939], + [82.022027, 30.339468], + [82.060215, 30.332237], + [82.104563, 30.346182], + [82.132896, 30.30434], + [82.11873, 30.279019], + [82.114418, 30.226806], + [82.142135, 30.200948], + [82.188947, 30.18543], + [82.207425, 30.143519], + [82.183403, 30.12178], + [82.17786, 30.06793], + [82.246845, 30.071555], + [82.311519, 30.035813], + [82.333693, 30.045138], + [82.368185, 30.014051], + [82.412533, 30.011978], + [82.431011, 29.989692], + [82.474743, 29.973622], + [82.498148, 29.947698], + [82.560974, 29.955476], + [82.609017, 29.886489], + [82.64351, 29.868846], + [82.6238, 29.834588], + [82.703872, 29.847566], + [82.737749, 29.80655], + [82.691553, 29.766037], + [82.757459, 29.761881], + [82.774089, 29.726548], + [82.816589, 29.717192], + [82.830756, 29.687562], + [82.885574, 29.689122], + [82.9484, 29.704718], + [82.966878, 29.658963], + [83.011226, 29.667804], + [83.088834, 29.604863], + [83.12887, 29.623593], + [83.159667, 29.61735], + [83.164595, 29.595496], + [83.217565, 29.60018], + [83.266841, 29.571035], + [83.27608, 29.505951], + [83.325355, 29.502826], + [83.383253, 29.42206], + [83.415898, 29.420496], + [83.423289, 29.361053], + [83.450391, 29.332883], + [83.463941, 29.285916], + [83.492274, 29.280174], + [83.548941, 29.201322], + [83.57789, 29.203934], + [83.596368, 29.174153], + [83.656114, 29.16736], + [83.667201, 29.200277], + [83.727563, 29.244672], + [83.800244, 29.249372], + [83.82057, 29.294267], + [83.851367, 29.294789], + [83.911729, 29.323491], + [83.949301, 29.312533], + [83.986874, 29.325057], + [84.002272, 29.291658], + [84.052163, 29.296877], + [84.116837, 29.286438], + [84.130388, 29.239972], + [84.203068, 29.239972], + [84.197525, 29.210202], + [84.17104, 29.19453], + [84.176583, 29.133909], + [84.20738, 29.118749], + [84.192597, 29.084236], + [84.194445, 29.045004], + [84.224626, 29.049189], + [84.248648, 29.030353], + [84.228322, 28.949738], + [84.234481, 28.889497], + [84.268358, 28.895261], + [84.330568, 28.859101], + [84.340423, 28.866963], + [84.408176, 28.85386], + [84.404481, 28.828173], + [84.434046, 28.823978], + [84.445133, 28.764189], + [84.483321, 28.735331], + [84.557233, 28.74635], + [84.620059, 28.732182], + [84.650856, 28.714338], + [84.669334, 28.680742], + [84.699515, 28.671816], + [84.698284, 28.633478], + [84.773428, 28.610363], + [84.857196, 28.567798], + [84.896616, 28.587244], + [84.981616, 28.586193], + [84.995782, 28.611414], + [85.05676, 28.674441], + [85.126361, 28.676016], + [85.155926, 28.643983], + [85.195963, 28.624022], + [85.18426, 28.587244], + [85.189803, 28.544669], + [85.160238, 28.49261], + [85.108499, 28.461047], + [85.129441, 28.377885], + [85.113427, 28.344708], + [85.179948, 28.324164], + [85.209513, 28.338914], + [85.272339, 28.282538], + [85.349947, 28.298347], + [85.379512, 28.274105], + [85.415853, 28.321003], + [85.458969, 28.332593], + [85.520563, 28.326798], + [85.602483, 28.295712], + [85.601251, 28.254075], + [85.650526, 28.283592], + [85.682555, 28.375779], + [85.720743, 28.372093], + [85.753388, 28.227714], + [85.791576, 28.195544], + [85.854402, 28.172334], + [85.871648, 28.124843], + [85.898749, 28.101617], + [85.901213, 28.053566], + [85.980053, 27.984357], + [85.949256, 27.937311], + [86.002227, 27.90717], + [86.053966, 27.900823], + [86.125415, 27.923035], + [86.082915, 28.018175], + [86.086611, 28.090002], + [86.128495, 28.086835], + [86.140198, 28.114814], + [86.19132, 28.167058], + [86.223965, 28.092642], + [86.206103, 28.084195], + [86.231972, 27.974315], + [86.27324, 27.976958], + [86.308965, 27.950528], + [86.393349, 27.926736], + [86.414906, 27.904526], + [86.450015, 27.908757], + [86.475884, 27.944713], + [86.514689, 27.954757], + [86.513457, 27.996511], + [86.537478, 28.044587], + [86.55842, 28.047757], + [86.568891, 28.103201], + [86.60092, 28.097922], + [86.611391, 28.069938], + [86.647732, 28.06941], + [86.662514, 28.092114], + [86.700086, 28.101617], + [86.74813, 28.089474], + [86.768456, 28.06941], + [86.756753, 28.032967], + [86.827586, 28.012363], + [86.864542, 28.022401], + [86.885484, 27.995983], + [86.926752, 27.985942], + [86.935375, 27.955286], + [87.035157, 27.946299], + [87.080737, 27.910872], + [87.118309, 27.840512], + [87.173744, 27.818284], + [87.227946, 27.812991], + [87.249504, 27.839454], + [87.280917, 27.845275], + [87.317258, 27.826753], + [87.364069, 27.824106], + [87.421967, 27.856916], + [87.418272, 27.825694], + [87.45954, 27.820931], + [87.58088, 27.859562], + [87.598126, 27.814579], + [87.670191, 27.832045], + [87.668343, 27.809815], + [87.727473, 27.802933], + [87.77798, 27.860091], + [87.782292, 27.890774], + [87.826639, 27.927794], + [87.930733, 27.909285], + [87.982472, 27.884426], + [88.037291, 27.901881], + [88.090877, 27.885484], + [88.111819, 27.864852], + [88.137689, 27.878607], + [88.120442, 27.915103], + [88.156783, 27.957929], + [88.203594, 27.943127], + [88.242398, 27.967444], + [88.254101, 27.939426], + [88.357579, 27.986471], + [88.401311, 27.976958], + [88.43334, 28.002852], + [88.469064, 28.009721], + [88.498013, 28.04089], + [88.554064, 28.027684], + [88.565151, 28.083139], + [88.620585, 28.091586], + [88.645223, 28.111119], + [88.67602, 28.068353], + [88.764099, 28.068353], + [88.812142, 28.018175], + [88.842939, 28.006023], + [88.846635, 27.921448], + [88.864497, 27.921448], + [88.888519, 27.846863], + [88.863265, 27.811932], + [88.870657, 27.743098], + [88.850331, 27.710783], + [88.852178, 27.671039], + [88.816454, 27.641354], + [88.813374, 27.606889], + [88.770874, 27.563924], + [88.797976, 27.521473], + [88.783193, 27.467324], + [88.809063, 27.405711], + [88.838012, 27.37808], + [88.867577, 27.3818], + [88.901453, 27.327583], + [88.920548, 27.325456], + [88.911924, 27.272807], + [88.942105, 27.261636], + [88.984605, 27.208957], + [89.067757, 27.240354], + [89.077612, 27.287168], + [89.152757, 27.319076], + [89.182938, 27.373829], + [89.132431, 27.441302], + [89.095474, 27.471572], + [89.109025, 27.537925], + [89.163228, 27.574534], + [89.128735, 27.611131], + [89.131815, 27.633402], + [89.184786, 27.673689], + [89.238988, 27.796581], + [89.295655, 27.84845], + [89.375727, 27.875962], + [89.44348, 27.968501], + [89.461958, 28.03191], + [89.511233, 28.086307], + [89.541414, 28.088418], + [89.605472, 28.161782], + [89.720037, 28.170224], + [89.779167, 28.197127], + [89.789638, 28.240895], + [89.869094, 28.221386], + [89.901739, 28.18183], + [89.976268, 28.189215], + [90.017536, 28.162837], + [90.03355, 28.136981], + [90.07297, 28.155451], + [90.103151, 28.141731], + [90.124709, 28.190797], + [90.166593, 28.187632], + [90.189999, 28.161782], + [90.231882, 28.144897], + [90.297172, 28.153868], + [90.367389, 28.088946], + [90.384019, 28.06096], + [90.43699, 28.063073], + [90.47949, 28.044587], + [90.513983, 28.062016], + [90.569417, 28.044059], + [90.591591, 28.021345], + [90.701844, 28.076274], + [90.741264, 28.053038], + [90.802242, 28.040362], + [90.806554, 28.015005], + [90.853365, 27.969029], + [90.896481, 27.946299], + [90.96177, 27.9537], + [90.976553, 27.935725], + [90.96485, 27.900294], + [91.025828, 27.857445], + [91.113292, 27.846333], + [91.155175, 27.894476], + [91.147784, 27.927794], + [91.162567, 27.968501], + [91.216153, 27.989113], + [91.251878, 27.970615], + [91.309776, 28.057791], + [91.464993, 28.002852], + [91.490246, 27.971672], + [91.486551, 27.937311], + [91.552456, 27.90717], + [91.611586, 27.891303], + [91.618978, 27.856916], + [91.561079, 27.855329], + [91.544449, 27.820401], + [91.610355, 27.819343], + [91.642383, 27.7664], + [91.622673, 27.692238], + [91.570934, 27.650897], + [91.562311, 27.627569], + [91.582637, 27.598933], + [91.564775, 27.58196], + [91.585101, 27.540578], + [91.626985, 27.509265], + [91.663325, 27.507142], + [91.71876, 27.467324], + [91.753868, 27.462545], + [91.839484, 27.489624], + [91.946657, 27.464138], + [92.010715, 27.474758], + [92.021802, 27.444489], + [92.064918, 27.391365], + [92.125896, 27.273339], + [92.091403, 27.264296], + [92.071077, 27.237694], + [92.061222, 27.190327], + [92.032273, 27.167967], + [92.02673, 27.108318], + [92.043976, 27.052902], + [92.076005, 27.041175], + [92.124664, 26.960124], + [92.109265, 26.854991], + [92.197961, 26.86994], + [92.28604, 26.892359], + [92.404916, 26.9025], + [92.496691, 26.921711], + [92.549046, 26.941453], + [92.64698, 26.952656], + [92.682089, 26.947855], + [92.802813, 26.895028], + [92.909371, 26.914241], + [93.050421, 26.883819], + [93.111399, 26.880082], + [93.232739, 26.906769], + [93.56781, 26.938252], + [93.625092, 26.955323], + [93.747048, 27.015587], + [93.817265, 27.025183], + [93.841903, 27.045973], + [93.849294, 27.168499], + [93.970634, 27.30525], + [94.056866, 27.375423], + [94.147409, 27.458297], + [94.220705, 27.536333], + [94.277372, 27.58143], + [94.353132, 27.578778], + [94.399944, 27.589386], + [94.443675, 27.585143], + [94.478168, 27.602116], + [94.524979, 27.596282], + [94.660486, 27.650367], + [94.722696, 27.683759], + [94.78121, 27.699127], + [94.836645, 27.728796], + [94.88592, 27.743098], + [94.947514, 27.792345], + [95.015267, 27.82887], + [95.067006, 27.840512], + [95.28628, 27.939955], + [95.32878, 28.017646], + [95.352802, 28.04089], + [95.371896, 28.110063], + [95.39715, 28.142259], + [95.437802, 28.161782], + [95.528345, 28.182885], + [95.674322, 28.254075], + [95.740228, 28.275159], + [95.787655, 28.270416], + [95.832003, 28.295186], + [95.874502, 28.29782], + [95.899756, 28.278322], + [95.907763, 28.241422], + [95.936096, 28.240368], + [95.989067, 28.198181], + [96.074683, 28.193434], + [96.098088, 28.212421], + [96.194175, 28.212949], + [96.275479, 28.228241], + [96.298269, 28.140148], + [96.367254, 28.118509], + [96.398667, 28.118509], + [96.395587, 28.143842], + [96.426384, 28.161782], + [96.46334, 28.143314], + [96.499681, 28.067297], + [96.538485, 28.075218], + [96.623485, 28.024514], + [96.635188, 27.994926], + [96.690622, 27.948942], + [96.711564, 27.9574], + [96.784245, 27.931495], + [96.810114, 27.890245], + [96.849534, 27.874375], + [96.908049, 27.884426], + [96.972722, 27.861149], + [97.008447, 27.807698], + [97.049099, 27.81405], + [97.062649, 27.742568], + [97.097758, 27.740979], + [97.103301, 27.780697], + [97.167975, 27.811932], + [97.253591, 27.891832], + [97.303482, 27.913516], + [97.324424, 27.880723], + [97.386634, 27.882839], + [97.372467, 27.907699], + [97.379242, 27.970087], + [97.413119, 28.01342], + [97.378626, 28.031382], + [97.375547, 28.062545], + [97.320728, 28.054095], + [97.305945, 28.071522], + [97.340438, 28.104785], + [97.326887, 28.132759], + [97.352757, 28.149646], + [97.362612, 28.199236], + [97.349677, 28.235623], + [97.398336, 28.238786], + [97.402032, 28.279903], + [97.422358, 28.297293], + [97.461162, 28.26778], + [97.469169, 28.30309], + [97.518445, 28.327852], + [97.488879, 28.347341], + [97.485184, 28.38631], + [97.499966, 28.428948], + [97.521524, 28.444736], + [97.507974, 28.46473], + [97.521524, 28.495766], + [97.569567, 28.541515], + [97.60406, 28.515225], + [97.634857, 28.532051], + [97.68598, 28.519958], + [97.737103, 28.465782], + [97.738335, 28.396313], + [97.769748, 28.3742], + [97.801161, 28.326798], + [97.842429, 28.326798], + [97.871378, 28.361561], + [97.907718, 28.363141], + [98.020435, 28.253548], + [98.008116, 28.214003], + [98.03337, 28.187105], + [98.056775, 28.202401], + [98.090036, 28.195544], + [98.097427, 28.166531], + [98.139311, 28.142259], + [98.17442, 28.163365], + [98.169492, 28.206093], + [98.21692, 28.212949], + [98.266811, 28.242477], + [98.231702, 28.314681], + [98.207681, 28.330486], + [98.208913, 28.358401], + [98.301303, 28.384204], + [98.317934, 28.324691], + [98.353042, 28.293078], + [98.37768, 28.246167], + [98.370289, 28.18394], + [98.389999, 28.16442], + [98.389383, 28.114814], + [98.428803, 28.104785], + [98.464527, 28.151229], + [98.494092, 28.141203], + [98.559382, 28.182885], + [98.625903, 28.165475], + [98.649925, 28.200291], + [98.712135, 28.229296], + [98.710287, 28.288862], + [98.746628, 28.321003], + [98.740468, 28.348395], + [98.693041, 28.43158], + [98.673947, 28.478934], + [98.625903, 28.489455], + [98.619128, 28.50944], + [98.637606, 28.552029], + [98.594491, 28.667615], + [98.666555, 28.712239], + [98.683802, 28.740054], + [98.652389, 28.817162], + [98.668403, 28.843376], + [98.643766, 28.895261], + [98.6567, 28.910454], + [98.624056, 28.95864], + [98.655469, 28.976966], + [98.70228, 28.9644], + [98.757714, 29.004186], + [98.786048, 28.998952], + [98.821772, 28.920931], + [98.827932, 28.821356], + [98.852569, 28.798283], + [98.912931, 28.800906], + [98.922786, 28.823978], + [98.972677, 28.832367], + [98.973909, 28.864867], + [98.917859, 28.886877], + [98.925866, 28.978536], + [99.013329, 29.036632], + [98.991771, 29.105677], + [98.967134, 29.128159], + [98.960974, 29.165792], + [98.9813, 29.204978], + [99.024416, 29.188783], + [99.037351, 29.20759], + [99.113727, 29.221171], + [99.114343, 29.243628], + [99.075539, 29.316186], + [99.058909, 29.417368], + [99.066916, 29.421018], + [99.044742, 29.520013], + [99.052133, 29.563748], + [99.014561, 29.607464], + [98.992387, 29.677163], + [99.018873, 29.792009], + [99.0238, 29.846009], + [99.068148, 29.931621], + [99.055213, 29.958587], + [99.036735, 30.053945], + [99.044742, 30.079842], + [98.989308, 30.151799], + [98.9813, 30.182843], + [98.993003, 30.215429], + [98.970829, 30.260928], + [98.986844, 30.280569], + [98.967134, 30.33482], + [98.965286, 30.449937], + [98.932025, 30.521623], + [98.926482, 30.569556], + [98.939417, 30.598923], + [98.92217, 30.609225], + [98.907388, 30.698292], + [98.963438, 30.728134], + [98.957895, 30.765166], + [98.904924, 30.782649], + [98.850105, 30.849465], + [98.797135, 30.87926], + [98.774345, 30.908019], + [98.797135, 30.948575], + [98.806374, 30.995783], + [98.774961, 31.031174], + [98.736772, 31.049121], + [98.712135, 31.082954], + [98.710287, 31.1178], + [98.675179, 31.15417], + [98.602498, 31.192062], + [98.62344, 31.221238], + [98.60373, 31.257568], + [98.616048, 31.3036], + [98.643766, 31.338876], + [98.691809, 31.333253], + [98.773113, 31.249382], + [98.805758, 31.279052], + [98.810685, 31.306668], + [98.887062, 31.37465], + [98.84333, 31.416028], + [98.844562, 31.429817], + [98.714599, 31.508935], + [98.696736, 31.538523], + [98.651157, 31.57881], + [98.619128, 31.591555], + [98.553839, 31.660349], + [98.545831, 31.717383], + [98.516882, 31.717383], + [98.508875, 31.751995], + [98.461448, 31.800327], + [98.414636, 31.832365], + [98.426339, 31.856767], + [98.399238, 31.895899], + [98.432498, 31.922825], + [98.434962, 32.007613], + [98.402933, 32.026896], + [98.404781, 32.045159], + [98.357354, 32.087253], + [98.303151, 32.121726], + [98.260035, 32.208862], + [98.218768, 32.234683], + [98.23047, 32.262521], + [98.208913, 32.318171], + [98.218768, 32.342444], + [98.125145, 32.401077], + [98.107283, 32.391476], + [98.079565, 32.415224], + [97.940363, 32.482393], + [97.880001, 32.486431], + [97.863986, 32.499051], + [97.80732, 32.50006], + [97.795617, 32.521257], + [97.730944, 32.527312], + [97.684132, 32.530339], + [97.670582, 32.51722], + [97.540618, 32.536899], + [97.50243, 32.530844], + [97.463626, 32.55506], + [97.448843, 32.586833], + [97.411887, 32.575235], + [97.374315, 32.546484], + [97.3583, 32.563635], + [97.332431, 32.542448], + [97.334895, 32.514192], + [97.388481, 32.501575], + [97.341054, 32.440987], + [97.387865, 32.427349], + [97.424822, 32.322723], + [97.415583, 32.296421], + [97.371235, 32.273148], + [97.32196, 32.303503], + [97.299786, 32.294904], + [97.264062, 32.182527], + [97.271453, 32.139971], + [97.313953, 32.130342], + [97.293011, 32.096887], + [97.308409, 32.076605], + [97.258518, 32.072041], + [97.219714, 32.109054], + [97.201852, 32.090296], + [97.233881, 32.063927], + [97.214786, 32.042623], + [97.188301, 32.055304], + [97.169823, 32.032984], + [97.127323, 32.044145], + [97.028773, 32.04871], + [97.006599, 32.067984], + [96.935766, 32.048203], + [96.965947, 32.008628], + [96.941925, 31.986297], + [96.894498, 32.013703], + [96.863085, 31.996448], + [96.868629, 31.964975], + [96.824281, 32.007613], + [96.722651, 32.013195], + [96.742977, 32.001016], + [96.753448, 31.944156], + [96.776238, 31.935015], + [96.81073, 31.894375], + [96.794716, 31.869474], + [96.760223, 31.860325], + [96.765767, 31.819144], + [96.799027, 31.792188], + [96.840295, 31.720438], + [96.790404, 31.698545], + [96.778701, 31.675629], + [96.722651, 31.686833], + [96.691854, 31.722474], + [96.661057, 31.705674], + [96.615477, 31.737236], + [96.56805, 31.711783], + [96.519391, 31.74945], + [96.468884, 31.769804], + [96.435623, 31.796258], + [96.407906, 31.845583], + [96.389428, 31.919777], + [96.288414, 31.919777], + [96.253305, 31.929936], + [96.220044, 31.905553], + [96.188632, 31.904028], + [96.214501, 31.876589], + [96.202798, 31.841008], + [96.183088, 31.835924], + [96.178161, 31.775401], + [96.231131, 31.749959], + [96.222508, 31.733164], + [96.252073, 31.697527], + [96.245298, 31.657802], + [96.221892, 31.647613], + [96.207726, 31.598691], + [96.156603, 31.602769], + [96.148595, 31.686324], + [96.135661, 31.70211], + [96.064828, 31.720438], + [95.989067, 31.78761], + [95.983524, 31.816601], + [95.89914, 31.81711], + [95.846169, 31.736218], + [95.853561, 31.714329], + [95.823995, 31.68225], + [95.779648, 31.748941], + [95.634286, 31.782523], + [95.580083, 31.76726], + [95.546823, 31.73978], + [95.511714, 31.750468], + [95.480301, 31.795749], + [95.456896, 31.801853], + [95.406389, 31.896915], + [95.408852, 31.918761], + [95.3682, 31.92892], + [95.360809, 31.95939], + [95.395918, 32.001523], + [95.454432, 32.007613], + [95.421171, 32.033999], + [95.454432, 32.061898], + [95.440265, 32.157705], + [95.406389, 32.182021], + [95.367584, 32.178982], + [95.366968, 32.151118], + [95.31523, 32.148585], + [95.270266, 32.194683], + [95.270266, 32.194683], + [95.239469, 32.287315], + [95.241317, 32.3207], + [95.214216, 32.321712], + [95.20744, 32.297433], + [95.10581, 32.258979], + [95.079325, 32.279726], + [95.096571, 32.322217], + [95.193274, 32.332331], + [95.261643, 32.348006], + [95.228382, 32.363678], + [95.218527, 32.397035], + [95.153853, 32.386423], + [95.081789, 32.384907], + [95.075013, 32.376315], + [95.075013, 32.376315], + [95.057151, 32.395014], + [94.988166, 32.422802], + [94.944434, 32.404109], + [94.912405, 32.41573], + [94.889616, 32.472295], + [94.852043, 32.463712], + [94.80708, 32.486431], + [94.78737, 32.522266], + [94.762116, 32.526303], + [94.737479, 32.587338], + [94.638312, 32.645307], + [94.614291, 32.673522], + [94.591501, 32.640772], + [94.522516, 32.595909], + [94.459074, 32.599439], + [94.463386, 32.572209], + [94.435052, 32.562626], + [94.395016, 32.594397], + [94.371611, 32.524789], + [94.350053, 32.533871], + [94.294002, 32.519743], + [94.292154, 32.502584], + [94.250886, 32.51722], + [94.196684, 32.51621], + [94.176974, 32.454117], + [94.137554, 32.433915], + [94.091974, 32.463207], + [94.049474, 32.469771], + [94.03038, 32.448057], + [93.978641, 32.459672], + [93.960163, 32.484917], + [93.90904, 32.463207], + [93.861613, 32.466237], + [93.851142, 32.50965], + [93.820345, 32.549511], + [93.75136, 32.56313], + [93.721795, 32.578261], + [93.651577, 32.571705], + [93.618933, 32.522771], + [93.516687, 32.47583], + [93.501904, 32.503593], + [93.476651, 32.504603], + [93.4631, 32.556069], + [93.411977, 32.558086], + [93.385492, 32.525294], + [93.33868, 32.5712], + [93.308499, 32.580278], + [93.300492, 32.619604], + [93.260456, 32.62666], + [93.239514, 32.662439], + [93.210565, 32.655385], + [93.176688, 32.6705], + [93.159442, 32.644803], + [93.087993, 32.63674], + [93.069515, 32.626156], + [93.023935, 32.703239], + [93.019624, 32.737477], + [93.00053, 32.741001], + [92.964189, 32.714821], + [92.933392, 32.719353], + [92.866871, 32.698203], + [92.822523, 32.729926], + [92.789262, 32.719856], + [92.756618, 32.743014], + [92.686401, 32.76516], + [92.667922, 32.73194], + [92.634662, 32.720863], + [92.574916, 32.741001], + [92.56814, 32.73194], + [92.484372, 32.745028], + [92.459119, 32.76365], + [92.411076, 32.748048], + [92.355641, 32.764657], + [92.343938, 32.738484], + [92.310062, 32.751571], + [92.255243, 32.720863], + [92.198577, 32.754591], + [92.211511, 32.788306], + [92.193649, 32.801889], + [92.227526, 32.821003], + [92.205352, 32.866255], + [92.145606, 32.885857], + [92.101874, 32.860222], + [92.038432, 32.860725], + [92.018722, 32.829552], + [91.955897, 32.8205], + [91.896766, 32.907967], + [91.857962, 32.90244], + [91.839484, 32.948152], + [91.799448, 32.942126], + [91.752637, 32.969242], + [91.685499, 32.989324], + [91.664557, 33.012913], + [91.583253, 33.0375], + [91.55492, 33.060074], + [91.535826, 33.10019], + [91.49579, 33.109214], + [91.436044, 33.066092], + [91.370138, 33.100691], + [91.311624, 33.108211], + [91.261733, 33.141291], + [91.226624, 33.141792], + [91.18782, 33.106206], + [91.161335, 33.108712], + [91.147784, 33.07211], + [91.072024, 33.113224], + [91.037531, 33.098686], + [91.001807, 33.11573], + [90.927894, 33.120241], + [90.902024, 33.083143], + [90.88293, 33.120241], + [90.803474, 33.114227], + [90.740032, 33.142293], + [90.704308, 33.135778], + [90.627315, 33.180368], + [90.562642, 33.229441], + [90.490577, 33.264977], + [90.405577, 33.260473], + [90.363077, 33.279487], + [90.332896, 33.310501], + [90.246665, 33.423959], + [90.22018, 33.437943], + [90.107463, 33.460913], + [90.088984, 33.478885], + [90.083441, 33.525295], + [90.01076, 33.553728], + [89.984275, 33.612061], + [90.008296, 33.687785], + [89.981195, 33.70322], + [89.983659, 33.725622], + [89.907282, 33.741051], + [89.902355, 33.758467], + [89.942391, 33.801246], + [89.899891, 33.80771], + [89.837065, 33.868853], + [89.795181, 33.865374], + [89.73174, 33.921509], + [89.718805, 33.946832], + [89.688008, 33.959739], + [89.684928, 33.990013], + [89.635037, 34.049537], + [89.656595, 34.057966], + [89.655979, 34.097126], + [89.71203, 34.131809], + [89.756993, 34.124874], + [89.760073, 34.152613], + [89.789638, 34.150632], + [89.816739, 34.16945], + [89.838297, 34.263477], + [89.825362, 34.293642], + [89.86663, 34.324785], + [89.858623, 34.359375], + [89.820435, 34.369255], + [89.799493, 34.39642], + [89.819819, 34.420614], + [89.823515, 34.455657], + [89.814891, 34.548871], + [89.777935, 34.574499], + [89.798877, 34.628686], + [89.74837, 34.641981], + [89.72558, 34.660689], + [89.732356, 34.732035], + [89.799493, 34.743838], + [89.825978, 34.796931], + [89.867862, 34.81069], + [89.838913, 34.865705], + [89.814891, 34.86816], + [89.821051, 34.902033], + [89.78779, 34.921664], + [89.747138, 34.903506], + [89.707102, 34.919701], + [89.670146, 34.887798], + [89.578987, 34.895162], + [89.560509, 34.938836], + [89.59069, 35.057965], + [89.593153, 35.104491], + [89.579603, 35.118688], + [89.519241, 35.133862], + [89.46935, 35.214577], + [89.450255, 35.223867], + [89.48598, 35.256616], + [89.531559, 35.276161], + [89.494603, 35.298632], + [89.516161, 35.330862], + [89.497067, 35.361128], + [89.58761, 35.383575], + [89.619639, 35.412357], + [89.658443, 35.425526], + [89.685544, 35.416259], + [89.739131, 35.468429], + [89.765, 35.482563], + [89.740979, 35.507412], + [89.720037, 35.501566], + [89.699711, 35.544916], + [89.71203, 35.581915], + [89.75145, 35.580942], + [89.765616, 35.599922], + [89.726196, 35.648082], + [89.748986, 35.66267], + [89.747138, 35.7516], + [89.782863, 35.773453], + [89.767464, 35.799183], + [89.801957, 35.848193], + [89.778551, 35.861775], + [89.707718, 35.849163], + [89.654747, 35.848193], + [89.62395, 35.859349], + [89.550654, 35.856924], + [89.554965, 35.873414], + [89.489676, 35.903475], + [89.428082, 35.917531], + [89.434857, 35.992136], + [89.404676, 36.016827], + [89.417611, 36.044897], + [89.474893, 36.022151], + [89.605472, 36.038123], + [89.688624, 36.091337], + [89.711414, 36.093272] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 610000, + "name": "陕西省", + "center": [108.948024, 34.263161], + "centroid": [108.887114, 35.263661], + "childrenNum": 10, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 26, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [110.379257, 34.600612], + [110.29549, 34.610956], + [110.269004, 34.629671], + [110.229584, 34.692679], + [110.243135, 34.725641], + [110.246831, 34.789068], + [110.230816, 34.880925], + [110.262229, 34.944233], + [110.320743, 35.00504], + [110.373714, 35.134351], + [110.364475, 35.197952], + [110.378642, 35.210666], + [110.374946, 35.251728], + [110.45009, 35.327933], + [110.477808, 35.413821], + [110.531394, 35.511309], + [110.567735, 35.539559], + [110.589293, 35.602355], + [110.609619, 35.632031], + [110.57759, 35.701559], + [110.571431, 35.800639], + [110.550489, 35.838005], + [110.549257, 35.877778], + [110.511684, 35.879718], + [110.516612, 35.918501], + [110.502445, 35.947575], + [110.516612, 35.971796], + [110.49259, 35.994073], + [110.491974, 36.034735], + [110.467953, 36.074893], + [110.447011, 36.164328], + [110.45625, 36.22663], + [110.474112, 36.248352], + [110.474112, 36.306729], + [110.459946, 36.327946], + [110.487047, 36.393972], + [110.489511, 36.430094], + [110.47288, 36.453203], + [110.503677, 36.488335], + [110.488895, 36.556628], + [110.496902, 36.582102], + [110.447627, 36.621018], + [110.426685, 36.657514], + [110.394656, 36.676716], + [110.402663, 36.697352], + [110.438388, 36.685835], + [110.447011, 36.737649], + [110.407591, 36.776007], + [110.423605, 36.818179], + [110.406975, 36.824886], + [110.424221, 36.855539], + [110.376178, 36.882351], + [110.408823, 36.892403], + [110.424221, 36.963685], + [110.381721, 37.002408], + [110.382953, 37.022001], + [110.426685, 37.008621], + [110.417446, 37.027257], + [110.460561, 37.044932], + [110.49567, 37.086956], + [110.535706, 37.115118], + [110.53509, 37.138021], + [110.590525, 37.187145], + [110.651503, 37.256722], + [110.661974, 37.281963], + [110.690307, 37.287201], + [110.678604, 37.317668], + [110.695234, 37.34955], + [110.641648, 37.360015], + [110.630561, 37.372858], + [110.644111, 37.435135], + [110.740198, 37.44939], + [110.759292, 37.474567], + [110.770995, 37.538184], + [110.795017, 37.558586], + [110.771611, 37.594634], + [110.763604, 37.639668], + [110.793169, 37.650567], + [110.775306, 37.680886], + [110.706321, 37.705511], + [110.716792, 37.728708], + [110.750669, 37.736281], + [110.735886, 37.77035], + [110.680452, 37.790216], + [110.59422, 37.922049], + [110.522771, 37.955088], + [110.528315, 37.990471], + [110.507989, 38.013107], + [110.501829, 38.097929], + [110.519692, 38.130889], + [110.509221, 38.192061], + [110.528315, 38.211814], + [110.565887, 38.215105], + [110.57759, 38.297345], + [110.601612, 38.308147], + [110.661358, 38.308617], + [110.701394, 38.353215], + [110.746973, 38.366355], + [110.77777, 38.440924], + [110.796864, 38.453579], + [110.840596, 38.439986], + [110.874473, 38.453579], + [110.870777, 38.510265], + [110.907733, 38.521035], + [110.920052, 38.581878], + [110.898494, 38.587024], + [110.880632, 38.626776], + [110.916357, 38.673981], + [110.915125, 38.704345], + [110.965016, 38.755699], + [111.009363, 38.847579], + [110.995813, 38.868084], + [111.016755, 38.889981], + [111.009979, 38.932823], + [110.980414, 38.970056], + [110.998276, 38.998433], + [111.038313, 39.020289], + [111.094363, 39.030053], + [111.138095, 39.064447], + [111.147334, 39.100681], + [111.173819, 39.135041], + [111.163348, 39.152678], + [111.219399, 39.244044], + [111.213239, 39.257021], + [111.247732, 39.302419], + [111.202152, 39.305197], + [111.179363, 39.326959], + [111.186138, 39.35149], + [111.155341, 39.338531], + [111.159037, 39.362596], + [111.125776, 39.366297], + [111.087588, 39.376013], + [111.098059, 39.401914], + [111.064182, 39.400989], + [111.058639, 39.447681], + [111.10545, 39.472631], + [111.10545, 39.497573], + [111.148566, 39.531277], + [111.154725, 39.569116], + [111.136863, 39.587106], + [111.101138, 39.559428], + [111.017371, 39.552045], + [110.958856, 39.519275], + [110.891103, 39.509118], + [110.869545, 39.494341], + [110.782698, 39.38804], + [110.73835, 39.348713], + [110.731575, 39.30705], + [110.702626, 39.273701], + [110.626249, 39.266751], + [110.596684, 39.282966], + [110.566503, 39.320014], + [110.559728, 39.351027], + [110.524003, 39.382952], + [110.482735, 39.360745], + [110.434692, 39.381101], + [110.429764, 39.341308], + [110.385417, 39.310291], + [110.257917, 39.407001], + [110.243751, 39.423645], + [110.152592, 39.45415], + [110.12549, 39.432891], + [110.136577, 39.39174], + [110.161831, 39.387115], + [110.184005, 39.355192], + [110.217881, 39.281113], + [110.109476, 39.249606], + [110.041107, 39.21623], + [109.962267, 39.212056], + [109.90252, 39.271848], + [109.871723, 39.243581], + [109.961035, 39.191651], + [109.893897, 39.141075], + [109.92223, 39.107183], + [109.890818, 39.103932], + [109.851397, 39.122971], + [109.793499, 39.074204], + [109.762086, 39.057476], + [109.72513, 39.018429], + [109.665384, 38.981687], + [109.685094, 38.968195], + [109.672159, 38.928167], + [109.624116, 38.85457], + [109.549587, 38.805618], + [109.511399, 38.833595], + [109.444262, 38.782763], + [109.404226, 38.720689], + [109.338936, 38.701542], + [109.329081, 38.66043], + [109.367269, 38.627711], + [109.331545, 38.597783], + [109.276726, 38.623035], + [109.196654, 38.552867], + [109.175712, 38.518694], + [109.128901, 38.480288], + [109.054372, 38.433892], + [109.051292, 38.385122], + [109.007561, 38.359316], + [108.961981, 38.26493], + [108.976148, 38.245192], + [108.938575, 38.207582], + [108.964445, 38.154894], + [109.069155, 38.091336], + [109.050676, 38.055059], + [109.06977, 38.023008], + [109.037742, 38.021593], + [109.018648, 37.971602], + [108.982923, 37.964053], + [108.9743, 37.931962], + [108.93488, 37.922521], + [108.893612, 37.978207], + [108.883141, 38.01405], + [108.830786, 38.049875], + [108.797525, 38.04799], + [108.82709, 37.989056], + [108.798141, 37.93385], + [108.791982, 37.872934], + [108.799989, 37.784068], + [108.784591, 37.764673], + [108.791982, 37.700303], + [108.777815, 37.683728], + [108.720533, 37.683728], + [108.699591, 37.669518], + [108.628142, 37.651988], + [108.532671, 37.690832], + [108.485244, 37.678044], + [108.422418, 37.648672], + [108.301078, 37.640616], + [108.293071, 37.656726], + [108.24626, 37.665728], + [108.205608, 37.655779], + [108.193905, 37.638246], + [108.134159, 37.622131], + [108.055318, 37.652462], + [108.025137, 37.649619], + [108.012819, 37.66857], + [108.025753, 37.696041], + [107.993109, 37.735335], + [107.982022, 37.787378], + [107.884703, 37.808186], + [107.842819, 37.828987], + [107.732566, 37.84931], + [107.684523, 37.888522], + [107.65003, 37.86443], + [107.659269, 37.844112], + [107.646335, 37.805349], + [107.620465, 37.776026], + [107.599523, 37.791162], + [107.57119, 37.776499], + [107.499125, 37.765619], + [107.484959, 37.706458], + [107.425828, 37.684201], + [107.387024, 37.691305], + [107.389488, 37.671413], + [107.422133, 37.665254], + [107.361155, 37.613125], + [107.311264, 37.609806], + [107.330358, 37.584201], + [107.369162, 37.58752], + [107.345756, 37.518725], + [107.284162, 37.481691], + [107.282931, 37.437036], + [107.257677, 37.337179], + [107.273075, 37.29101], + [107.309416, 37.239095], + [107.270612, 37.229089], + [107.317423, 37.200017], + [107.336517, 37.165687], + [107.334669, 37.138975], + [107.306952, 37.100799], + [107.281083, 37.127047], + [107.268764, 37.099367], + [107.28601, 37.054963], + [107.288474, 37.008143], + [107.288474, 37.008143], + [107.291554, 36.979463], + [107.291554, 36.979463], + [107.310032, 36.912502], + [107.336517, 36.925899], + [107.365466, 36.905324], + [107.478183, 36.908196], + [107.533618, 36.867031], + [107.540393, 36.828718], + [107.5909, 36.836382], + [107.642023, 36.819137], + [107.670356, 36.83303], + [107.722095, 36.802367], + [107.742421, 36.811951], + [107.768291, 36.792783], + [107.866841, 36.766899], + [107.907493, 36.750118], + [107.914268, 36.720861], + [107.940754, 36.694953], + [107.938906, 36.655594], + [108.006659, 36.683435], + [108.02329, 36.647912], + [108.001732, 36.639269], + [108.060862, 36.592194], + [108.079956, 36.614294], + [108.092891, 36.587388], + [108.163724, 36.563839], + [108.1976, 36.630144], + [108.222854, 36.631105], + [108.204992, 36.606607], + [108.204992, 36.606607], + [108.210535, 36.577296], + [108.245644, 36.571048], + [108.262274, 36.549417], + [108.340498, 36.559032], + [108.365136, 36.519603], + [108.391621, 36.505654], + [108.408252, 36.45946], + [108.460606, 36.422871], + [108.495099, 36.422389], + [108.514809, 36.445501], + [108.510498, 36.47438], + [108.562852, 36.43876], + [108.618903, 36.433946], + [108.651548, 36.384818], + [108.641693, 36.359279], + [108.646004, 36.254143], + [108.712526, 36.138716], + [108.682345, 36.062316], + [108.688504, 36.021183], + [108.659555, 35.990683], + [108.652164, 35.94806], + [108.593649, 35.950967], + [108.562852, 35.921409], + [108.518505, 35.905414], + [108.499411, 35.872444], + [108.527744, 35.82442], + [108.533903, 35.746257], + [108.517889, 35.699615], + [108.539447, 35.605761], + [108.618287, 35.557088], + [108.625678, 35.537124], + [108.605968, 35.503028], + [108.631222, 35.418698], + [108.61028, 35.355271], + [108.614591, 35.328909], + [108.583178, 35.294724], + [108.547454, 35.304981], + [108.48894, 35.275184], + [108.36144, 35.279581], + [108.345426, 35.300586], + [108.296767, 35.267855], + [108.239484, 35.256127], + [108.221622, 35.296678], + [108.174811, 35.304981], + [108.094739, 35.280069], + [108.049159, 35.253683], + [107.949993, 35.245375], + [107.960464, 35.263457], + [107.867457, 35.256127], + [107.841587, 35.276649], + [107.745501, 35.311819], + [107.737494, 35.267366], + [107.667277, 35.257104], + [107.652494, 35.244886], + [107.686371, 35.218], + [107.715936, 35.168114], + [107.727639, 35.120157], + [107.769523, 35.064333], + [107.769523, 35.064333], + [107.773218, 35.060904], + [107.773218, 35.060904], + [107.814486, 35.024646], + [107.846515, 35.024646], + [107.863145, 34.999158], + [107.842203, 34.979056], + [107.741805, 34.953553], + [107.675284, 34.9511], + [107.638943, 34.935402], + [107.619849, 34.964834], + [107.564415, 34.968757], + [107.523763, 34.909886], + [107.455394, 34.916757], + [107.400575, 34.932949], + [107.369162, 34.917738], + [107.350068, 34.93393], + [107.286626, 34.931968], + [107.252749, 34.880925], + [107.189308, 34.893198], + [107.162206, 34.944233], + [107.119707, 34.950119], + [107.089526, 34.976604], + [107.08275, 35.024156], + [107.012533, 35.029547], + [106.990975, 35.068252], + [106.950323, 35.066782], + [106.901664, 35.094698], + [106.838222, 35.080007], + [106.710723, 35.100574], + [106.706411, 35.081966], + [106.615252, 35.071191], + [106.577064, 35.089312], + [106.541956, 35.083925], + [106.52163, 35.027587], + [106.494528, 35.006021], + [106.494528, 35.006021], + [106.484673, 34.983959], + [106.493296, 34.941289], + [106.527789, 34.876507], + [106.556122, 34.861285], + [106.550579, 34.82936], + [106.575216, 34.769897], + [106.539492, 34.745805], + [106.505615, 34.746789], + [106.487137, 34.715311], + [106.456956, 34.703996], + [106.442173, 34.675455], + [106.471122, 34.634102], + [106.419384, 34.643458], + [106.314058, 34.578934], + [106.341159, 34.568093], + [106.334384, 34.517811], + [106.455108, 34.531617], + [106.514238, 34.511894], + [106.513622, 34.498085], + [106.558586, 34.48822], + [106.610941, 34.454177], + [106.638042, 34.391481], + [106.717498, 34.369255], + [106.691013, 34.337635], + [106.705179, 34.299575], + [106.68239, 34.256057], + [106.652825, 34.24369], + [106.63373, 34.260014], + [106.589383, 34.253584], + [106.577064, 34.280786], + [106.526557, 34.292159], + [106.496376, 34.238248], + [106.5321, 34.254079], + [106.55797, 34.229837], + [106.585071, 34.149641], + [106.560434, 34.109514], + [106.501919, 34.105055], + [106.505615, 34.056479], + [106.471738, 34.024244], + [106.474202, 33.970659], + [106.41076, 33.909093], + [106.428007, 33.866368], + [106.475434, 33.875809], + [106.491448, 33.834559], + [106.461883, 33.789807], + [106.488369, 33.757969], + [106.482825, 33.707203], + [106.534564, 33.695254], + [106.575832, 33.631497], + [106.58076, 33.576169], + [106.540108, 33.512822], + [106.456956, 33.532779], + [106.447101, 33.613058], + [106.384891, 33.612061], + [106.35163, 33.587137], + [106.303587, 33.604585], + [106.237681, 33.564201], + [106.187174, 33.546746], + [106.108334, 33.569686], + [106.117573, 33.602591], + [106.086776, 33.617045], + [106.047356, 33.610067], + [105.971596, 33.613058], + [105.940183, 33.570684], + [105.902611, 33.556222], + [105.871198, 33.511325], + [105.842248, 33.489866], + [105.831162, 33.451926], + [105.837937, 33.410971], + [105.827466, 33.379993], + [105.709822, 33.382991], + [105.755401, 33.329004], + [105.752937, 33.291994], + [105.791741, 33.278486], + [105.799133, 33.258471], + [105.862574, 33.234447], + [105.917393, 33.237951], + [105.965436, 33.204407], + [105.968516, 33.154318], + [105.93156, 33.178365], + [105.897067, 33.146803], + [105.923552, 33.147805], + [105.934639, 33.112221], + [105.914929, 33.066092], + [105.926632, 33.042517], + [105.917393, 32.993841], + [105.861959, 32.939112], + [105.82685, 32.950663], + [105.735691, 32.905454], + [105.656851, 32.895405], + [105.638373, 32.879323], + [105.590329, 32.87681], + [105.565692, 32.906962], + [105.528119, 32.919019], + [105.49917, 32.911986], + [105.495475, 32.873292], + [105.524424, 32.847654], + [105.534279, 32.790822], + [105.555221, 32.794343], + [105.563844, 32.724891], + [105.585402, 32.728919], + [105.596489, 32.69921], + [105.677793, 32.726402], + [105.719061, 32.759624], + [105.768952, 32.767676], + [105.779423, 32.750061], + [105.822538, 32.770192], + [105.825002, 32.824523], + [105.849024, 32.817985], + [105.893371, 32.838603], + [105.93156, 32.826032], + [105.969132, 32.849162], + [106.011632, 32.829552], + [106.044277, 32.864747], + [106.071378, 32.828546], + [106.093552, 32.82402], + [106.07261, 32.76365], + [106.076921, 32.76365], + [106.076305, 32.759121], + [106.071378, 32.758114], + [106.120037, 32.719856], + [106.17424, 32.6977], + [106.254928, 32.693671], + [106.267863, 32.673522], + [106.301123, 32.680071], + [106.347935, 32.671003], + [106.389203, 32.62666], + [106.421231, 32.616579], + [106.451412, 32.65992], + [106.498224, 32.649338], + [106.517934, 32.668485], + [106.585687, 32.68813], + [106.626955, 32.682086], + [106.670071, 32.694678], + [106.733513, 32.739491], + [106.783404, 32.735967], + [106.793259, 32.712807], + [106.82344, 32.705254], + [106.854853, 32.724388], + [106.903512, 32.721367], + [106.912751, 32.704247], + [107.012533, 32.721367], + [107.066736, 32.708779], + [107.05996, 32.686115], + [107.098765, 32.649338], + [107.108004, 32.600951], + [107.080286, 32.542448], + [107.127098, 32.482393], + [107.189924, 32.468256], + [107.212097, 32.428864], + [107.263836, 32.403099], + [107.287858, 32.457147], + [107.313727, 32.489965], + [107.356843, 32.506622], + [107.382097, 32.54043], + [107.436299, 32.529835], + [107.438763, 32.465732], + [107.460937, 32.453612], + [107.456625, 32.41775], + [107.489886, 32.425328], + [107.527458, 32.38238], + [107.598291, 32.411688], + [107.648183, 32.413709], + [107.680827, 32.397035], + [107.707929, 32.331826], + [107.753508, 32.338399], + [107.812022, 32.247844], + [107.864377, 32.201266], + [107.890247, 32.214432], + [107.924739, 32.197215], + [107.979558, 32.146051], + [108.024521, 32.177462], + [108.018362, 32.2119], + [108.086731, 32.233165], + [108.143398, 32.219495], + [108.156948, 32.239239], + [108.179738, 32.221521], + [108.240716, 32.274666], + [108.310933, 32.232152], + [108.389773, 32.263533], + [108.414411, 32.252399], + [108.469846, 32.270618], + [108.507418, 32.245819], + [108.509882, 32.201266], + [108.543758, 32.177969], + [108.585026, 32.17189], + [108.676801, 32.10297], + [108.734084, 32.106519], + [108.75133, 32.076098], + [108.78767, 32.04871], + [108.837561, 32.039072], + [108.902235, 31.984774], + [108.986619, 31.980205], + [109.085785, 31.929428], + [109.123357, 31.892851], + [109.191111, 31.85575], + [109.195422, 31.817618], + [109.27611, 31.79931], + [109.279806, 31.776418], + [109.253936, 31.759628], + [109.282885, 31.743343], + [109.281654, 31.716874], + [109.381436, 31.705165], + [109.446109, 31.722983], + [109.502776, 31.716365], + [109.549587, 31.73011], + [109.585928, 31.726546], + [109.592087, 31.789136], + [109.633971, 31.804396], + [109.633971, 31.824738], + [109.60379, 31.885737], + [109.584696, 31.900472], + [109.62042, 31.928412], + [109.631507, 31.962436], + [109.590855, 32.012688], + [109.590855, 32.047696], + [109.621652, 32.106519], + [109.58716, 32.161251], + [109.604406, 32.199241], + [109.592703, 32.219495], + [109.550203, 32.225065], + [109.528645, 32.270112], + [109.495385, 32.300468], + [109.513247, 32.342444], + [109.502776, 32.38895], + [109.529877, 32.405625], + [109.526797, 32.43341], + [109.575457, 32.506622], + [109.637051, 32.540935], + [109.619804, 32.56767], + [109.631507, 32.599943], + [109.726978, 32.608513], + [109.746072, 32.594901], + [109.816905, 32.577252], + [109.910528, 32.592884], + [109.97089, 32.577756], + [110.017701, 32.546989], + [110.084223, 32.580782], + [110.090382, 32.617083], + [110.124259, 32.616579], + [110.153824, 32.593388], + [110.206179, 32.633212], + [110.156903, 32.683093], + [110.159367, 32.767173], + [110.127338, 32.77774], + [110.142121, 32.802895], + [110.105164, 32.832569], + [110.051578, 32.851676], + [109.988752, 32.886359], + [109.927158, 32.887364], + [109.907448, 32.903947], + [109.856941, 32.910479], + [109.847702, 32.893395], + [109.789804, 32.882339], + [109.76455, 32.909474], + [109.785492, 32.987316], + [109.794731, 33.067095], + [109.704188, 33.101694], + [109.688174, 33.116733], + [109.576073, 33.110216], + [109.522486, 33.138785], + [109.468283, 33.140288], + [109.438718, 33.152314], + [109.498464, 33.207412], + [109.514479, 33.237951], + [109.60687, 33.235949], + [109.619804, 33.275484], + [109.649985, 33.251465], + [109.693101, 33.254468], + [109.732521, 33.231443], + [109.813209, 33.236449], + [109.852013, 33.247961], + [109.916687, 33.229942], + [109.973353, 33.203907], + [109.999223, 33.212419], + [110.031252, 33.191888], + [110.164911, 33.209415], + [110.218497, 33.163336], + [110.285635, 33.171352], + [110.33799, 33.160331], + [110.372482, 33.186379], + [110.398352, 33.176862], + [110.398352, 33.176862], + [110.471032, 33.171352], + [110.54125, 33.255469], + [110.57759, 33.250464], + [110.59422, 33.168346], + [110.623785, 33.143796], + [110.650887, 33.157324], + [110.702626, 33.097182], + [110.753133, 33.15031], + [110.824582, 33.158327], + [110.828893, 33.201403], + [110.865234, 33.213921], + [110.9219, 33.203907], + [110.960704, 33.253967], + [110.984726, 33.255469], + [111.025994, 33.330504], + [111.025994, 33.375495], + [110.996429, 33.435946], + [111.02661, 33.467903], + [111.021066, 33.471397], + [111.021682, 33.476389], + [111.02661, 33.478386], + [111.002588, 33.535772], + [111.00382, 33.578662], + [110.966864, 33.609071], + [110.878784, 33.634486], + [110.823966, 33.685793], + [110.831973, 33.713675], + [110.81719, 33.751003], + [110.782082, 33.796272], + [110.74143, 33.798759], + [110.712481, 33.833564], + [110.66259, 33.85295], + [110.612083, 33.852453], + [110.587445, 33.887733], + [110.628713, 33.910086], + [110.627481, 33.925482], + [110.665669, 33.937895], + [110.671213, 33.966192], + [110.620706, 34.035652], + [110.587445, 34.023252], + [110.591757, 34.101586], + [110.61393, 34.113478], + [110.642264, 34.161032], + [110.621938, 34.177372], + [110.55788, 34.193214], + [110.55172, 34.213012], + [110.507989, 34.217466], + [110.43962, 34.243196], + [110.428533, 34.288203], + [110.451938, 34.292653], + [110.503677, 34.33714], + [110.473496, 34.393457], + [110.403279, 34.433448], + [110.403279, 34.433448], + [110.360779, 34.516825], + [110.372482, 34.544435], + [110.404511, 34.557743], + [110.366939, 34.566614], + [110.379257, 34.600612] + ] + ], + [ + [ + [111.02661, 33.478386], + [111.021682, 33.476389], + [111.021066, 33.471397], + [111.02661, 33.467903], + [111.02661, 33.478386] + ] + ], + [ + [ + [106.076921, 32.76365], + [106.07261, 32.76365], + [106.071378, 32.758114], + [106.076305, 32.759121], + [106.076921, 32.76365] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 620000, + "name": "甘肃省", + "center": [103.823557, 36.058039], + "childrenNum": 14, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 27, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [106.506231, 35.737514], + [106.504383, 35.736057], + [106.498224, 35.732656], + [106.49268, 35.732656], + [106.434782, 35.688436], + [106.460036, 35.643705], + [106.47913, 35.575101], + [106.460036, 35.578995], + [106.440941, 35.52641], + [106.465579, 35.481101], + [106.490217, 35.480613], + [106.483441, 35.450393], + [106.503767, 35.415284], + [106.501304, 35.364056], + [106.472354, 35.310842], + [106.415688, 35.276161], + [106.368261, 35.273718], + [106.363333, 35.238532], + [106.319601, 35.265411], + [106.241377, 35.358687], + [106.237681, 35.409431], + [106.196414, 35.409919], + [106.173008, 35.437716], + [106.129892, 35.393333], + [106.113262, 35.361616], + [106.083081, 35.421624], + [106.073226, 35.420649], + [106.067682, 35.436254], + [106.073226, 35.447468], + [106.071378, 35.449418], + [106.06953, 35.458193], + [106.071994, 35.463555], + [106.054132, 35.45478], + [106.034422, 35.469404], + [106.002393, 35.438692], + [105.894603, 35.413821], + [105.897683, 35.451368], + [106.048588, 35.488898], + [106.047356, 35.498155], + [106.023335, 35.49377], + [106.017175, 35.519103], + [105.900147, 35.54735], + [105.868734, 35.540046], + [105.847176, 35.490359], + [105.816379, 35.575101], + [105.800365, 35.564878], + [105.762176, 35.602841], + [105.759097, 35.634464], + [105.713517, 35.650513], + [105.722756, 35.673366], + [105.690727, 35.698643], + [105.723988, 35.725854], + [105.740618, 35.698643], + [105.759097, 35.724883], + [105.70243, 35.733142], + [105.667322, 35.749657], + [105.595873, 35.715651], + [105.481924, 35.727312], + [105.457286, 35.771511], + [105.432033, 35.787533], + [105.428953, 35.819082], + [105.408627, 35.822479], + [105.38091, 35.792873], + [105.371055, 35.844312], + [105.39754, 35.857409], + [105.350113, 35.875839], + [105.324859, 35.941761], + [105.343954, 36.033767], + [105.406163, 36.074409], + [105.430801, 36.10391], + [105.491163, 36.101009], + [105.515185, 36.147415], + [105.478844, 36.213111], + [105.460366, 36.223733], + [105.45975, 36.268137], + [105.476381, 36.293224], + [105.455439, 36.321678], + [105.425873, 36.330357], + [105.401236, 36.369881], + [105.398156, 36.430575], + [105.363048, 36.443093], + [105.362432, 36.496514], + [105.322396, 36.535954], + [105.281744, 36.522489], + [105.252179, 36.553263], + [105.2762, 36.563358], + [105.261418, 36.602764], + [105.22015, 36.631105], + [105.225693, 36.664716], + [105.201056, 36.700711], + [105.218302, 36.730455], + [105.272505, 36.739567], + [105.275584, 36.752515], + [105.319932, 36.742924], + [105.340874, 36.764502], + [105.334714, 36.80093], + [105.303302, 36.820575], + [105.279896, 36.86751], + [105.244787, 36.894796], + [105.178882, 36.892403], + [105.185657, 36.942164], + [105.165331, 36.99476], + [105.128991, 36.996194], + [105.05939, 37.022956], + [105.03968, 37.007187], + [105.004571, 37.035378], + [104.95468, 37.040156], + [104.954064, 37.077407], + [104.914644, 37.097935], + [104.888158, 37.15901], + [104.864753, 37.17284], + [104.85613, 37.211933], + [104.776673, 37.246718], + [104.717543, 37.208597], + [104.638087, 37.201923], + [104.600515, 37.242907], + [104.624536, 37.298627], + [104.651022, 37.290534], + [104.673812, 37.317668], + [104.713848, 37.329566], + [104.662109, 37.367626], + [104.679971, 37.408044], + [104.521059, 37.43466], + [104.499501, 37.421353], + [104.448994, 37.42468], + [104.437907, 37.445589], + [104.365226, 37.418026], + [104.298705, 37.414223], + [104.287002, 37.428007], + [104.237727, 37.411847], + [104.183524, 37.406618], + [104.089285, 37.465067], + [103.935916, 37.572818], + [103.874938, 37.604117], + [103.841062, 37.64725], + [103.683381, 37.777919], + [103.627947, 37.797783], + [103.40744, 37.860651], + [103.362477, 38.037621], + [103.368636, 38.08898], + [103.53494, 38.156776], + [103.507838, 38.280905], + [103.465339, 38.353215], + [103.416063, 38.404821], + [103.85954, 38.64454], + [104.011677, 38.85923], + [104.044322, 38.895105], + [104.173053, 38.94446], + [104.196459, 38.9882], + [104.190915, 39.042139], + [104.207546, 39.083495], + [104.171205, 39.160567], + [104.047401, 39.297788], + [104.073271, 39.351953], + [104.089901, 39.419947], + [103.955626, 39.456923], + [103.85338, 39.461543], + [103.728961, 39.430117], + [103.595302, 39.386652], + [103.428998, 39.353341], + [103.344615, 39.331588], + [103.259615, 39.263971], + [103.188166, 39.215302], + [103.133347, 39.192579], + [103.007696, 39.099753], + [102.883892, 39.120649], + [102.616574, 39.171703], + [102.579002, 39.183301], + [102.45335, 39.255167], + [102.3548, 39.231993], + [102.276576, 39.188868], + [102.050526, 39.141075], + [102.012338, 39.127149], + [101.902701, 39.111827], + [101.833715, 39.08907], + [101.926106, 39.000758], + [101.955055, 38.985874], + [102.045599, 38.904885], + [102.075164, 38.891378], + [101.941505, 38.808883], + [101.873751, 38.733761], + [101.777049, 38.66043], + [101.672955, 38.6908], + [101.601506, 38.65529], + [101.562702, 38.713218], + [101.412413, 38.764099], + [101.331109, 38.777164], + [101.307087, 38.80282], + [101.34158, 38.822406], + [101.33542, 38.847113], + [101.24303, 38.860628], + [101.237486, 38.907214], + [101.198682, 38.943064], + [101.228863, 39.020754], + [101.117378, 38.975174], + [100.969553, 38.946788], + [100.961545, 39.005874], + [100.901799, 39.030053], + [100.875314, 39.002619], + [100.835278, 39.025869], + [100.829118, 39.075133], + [100.864227, 39.106719], + [100.842669, 39.199999], + [100.842053, 39.405614], + [100.707778, 39.404689], + [100.606764, 39.387577], + [100.498975, 39.400527], + [100.500823, 39.481408], + [100.44354, 39.485565], + [100.326512, 39.509118], + [100.301258, 39.572345], + [100.314193, 39.606935], + [100.250135, 39.685274], + [100.128179, 39.702312], + [100.040716, 39.757083], + [99.958796, 39.769504], + [99.904593, 39.785601], + [99.822058, 39.860063], + [99.672384, 39.888079], + [99.469124, 39.875221], + [99.440791, 39.885783], + [99.459885, 39.898181], + [99.491298, 39.884406], + [99.533182, 39.891753], + [99.714268, 39.972061], + [99.751225, 40.006909], + [99.841152, 40.013326], + [99.927383, 40.063727], + [99.955716, 40.150695], + [100.007455, 40.20008], + [100.169447, 40.277743], + [100.169447, 40.541131], + [100.242744, 40.618855], + [100.237201, 40.716905], + [100.224882, 40.727337], + [100.107853, 40.875475], + [100.057346, 40.908049], + [99.985897, 40.909858], + [99.673, 40.93292], + [99.565827, 40.846961], + [99.174705, 40.858278], + [99.172858, 40.747289], + [99.12543, 40.715091], + [99.102025, 40.676522], + [99.041662, 40.693767], + [98.984996, 40.782644], + [98.790975, 40.705564], + [98.80699, 40.660181], + [98.802678, 40.607043], + [98.762642, 40.639748], + [98.72199, 40.657911], + [98.689345, 40.691952], + [98.668403, 40.773128], + [98.569853, 40.746836], + [98.627751, 40.677884], + [98.344419, 40.568413], + [98.333332, 40.918903], + [98.25018, 40.93925], + [98.184891, 40.988056], + [98.142391, 41.001607], + [97.971776, 41.09774], + [97.903407, 41.168057], + [97.629314, 41.440498], + [97.613915, 41.477276], + [97.84674, 41.656379], + [97.653335, 41.986856], + [97.500582, 42.243894], + [97.371235, 42.457076], + [97.172903, 42.795257], + [96.968411, 42.756161], + [96.742361, 42.75704], + [96.386348, 42.727592], + [96.166458, 42.623314], + [96.103632, 42.604375], + [96.072219, 42.569566], + [96.02356, 42.542675], + [96.0174, 42.482239], + [95.978596, 42.436762], + [96.06606, 42.414674], + [96.042038, 42.352787], + [96.040806, 42.326688], + [96.178161, 42.21775], + [96.077147, 42.149457], + [96.13874, 42.05399], + [96.137509, 42.019765], + [96.117183, 41.985966], + [96.054973, 41.936124], + [95.998306, 41.906289], + [95.855408, 41.849699], + [95.801206, 41.848361], + [95.759322, 41.835878], + [95.65646, 41.826067], + [95.57146, 41.796181], + [95.445193, 41.719841], + [95.39407, 41.693481], + [95.335556, 41.644305], + [95.299831, 41.565994], + [95.247476, 41.61344], + [95.194505, 41.694821], + [95.199433, 41.719395], + [95.16494, 41.735474], + [95.135991, 41.772976], + [95.110738, 41.768513], + [95.011572, 41.726541], + [94.969072, 41.718948], + [94.861898, 41.668451], + [94.809543, 41.619256], + [94.750413, 41.538227], + [94.534219, 41.505966], + [94.184365, 41.268444], + [94.01067, 41.114875], + [93.908424, 40.983539], + [93.809874, 40.879548], + [93.820961, 40.793519], + [93.760599, 40.664721], + [93.506216, 40.648376], + [92.928465, 40.572504], + [92.920458, 40.391792], + [92.906907, 40.310609], + [92.796654, 40.153897], + [92.745531, 39.868331], + [92.687632, 39.657174], + [92.639589, 39.514196], + [92.52564, 39.368611], + [92.378431, 39.258411], + [92.339011, 39.236628], + [92.343938, 39.146181], + [92.366112, 39.096037], + [92.366728, 39.059335], + [92.41046, 39.03842], + [92.459119, 39.042604], + [92.459119, 39.063982], + [92.489916, 39.099753], + [92.545966, 39.111362], + [92.659299, 39.109969], + [92.765857, 39.136898], + [92.866871, 39.138754], + [92.889045, 39.160103], + [92.938936, 39.169848], + [92.978356, 39.143396], + [93.043029, 39.146645], + [93.115094, 39.17959], + [93.142196, 39.160567], + [93.131725, 39.108112], + [93.165601, 39.090928], + [93.198246, 39.045857], + [93.179152, 38.923977], + [93.237666, 38.916062], + [93.274007, 38.896036], + [93.453245, 38.915596], + [93.729186, 38.924443], + [93.834511, 38.867618], + [93.884403, 38.867618], + [93.884403, 38.826136], + [93.769838, 38.821007], + [93.756287, 38.807484], + [93.773533, 38.771099], + [93.800019, 38.750566], + [93.885018, 38.720689], + [93.95154, 38.715086], + [93.973098, 38.724891], + [94.281067, 38.7599], + [94.370379, 38.7627], + [94.511429, 38.445142], + [94.527443, 38.425922], + [94.527443, 38.365416], + [94.56132, 38.351807], + [94.582878, 38.36917], + [94.672805, 38.386998], + [94.812623, 38.385591], + [94.861282, 38.393565], + [94.884072, 38.414669], + [94.973999, 38.430142], + [95.045448, 38.418889], + [95.072549, 38.402476], + [95.122441, 38.417014], + [95.140919, 38.392158], + [95.185266, 38.379492], + [95.209904, 38.327868], + [95.229614, 38.330685], + [95.259179, 38.302981], + [95.315846, 38.318947], + [95.408236, 38.300163], + [95.440881, 38.310965], + [95.455664, 38.291709], + [95.487693, 38.314721], + [95.51849, 38.294997], + [95.585011, 38.343359], + [95.608417, 38.339134], + [95.671858, 38.388405], + [95.703887, 38.400131], + [95.723597, 38.378554], + [95.775952, 38.356031], + [95.83693, 38.344298], + [95.852945, 38.287481], + [95.89606, 38.2903], + [95.932401, 38.259291], + [95.93856, 38.237202], + [96.006929, 38.207582], + [96.06606, 38.173245], + [96.109175, 38.187358], + [96.221892, 38.149246], + [96.252689, 38.167599], + [96.264392, 38.145952], + [96.313051, 38.161952], + [96.301964, 38.183124], + [96.335841, 38.246132], + [96.378341, 38.277146], + [96.46334, 38.277616], + [96.665369, 38.23015], + [96.655514, 38.295936], + [96.638883, 38.307208], + [96.626564, 38.356031], + [96.698013, 38.422172], + [96.707868, 38.459203], + [96.6666, 38.483567], + [96.706637, 38.505582], + [96.780549, 38.504177], + [96.800259, 38.52759], + [96.767614, 38.552399], + [96.808882, 38.582346], + [96.7941, 38.608072], + [96.847071, 38.599186], + [96.876636, 38.580475], + [96.961019, 38.558015], + [97.055874, 38.594508], + [97.047251, 38.653888], + [97.057722, 38.67258], + [97.009063, 38.702477], + [97.023229, 38.755699], + [97.00044, 38.7613], + [96.987505, 38.793025], + [96.993664, 38.834993], + [96.983809, 38.869016], + [96.940693, 38.90768], + [96.938846, 38.95563], + [96.965331, 39.017034], + [96.95794, 39.041674], + [96.969643, 39.097895], + [97.012142, 39.142004], + [96.962251, 39.198144], + [97.017686, 39.208347], + [97.060186, 39.19768], + [97.14149, 39.199999], + [97.220946, 39.193042], + [97.315185, 39.164744], + [97.347213, 39.167528], + [97.371235, 39.140611], + [97.401416, 39.146645], + [97.458698, 39.117863], + [97.504894, 39.076527], + [97.58127, 39.052364], + [97.679205, 39.010524], + [97.701379, 38.963076], + [97.828878, 38.93003], + [97.875689, 38.898365], + [98.009348, 38.85923], + [98.029058, 38.834061], + [98.068478, 38.816344], + [98.091884, 38.786495], + [98.167645, 38.840121], + [98.242173, 38.880664], + [98.235398, 38.918855], + [98.276666, 38.963541], + [98.287753, 38.992386], + [98.280977, 39.027263], + [98.316702, 39.040744], + [98.383839, 39.029588], + [98.401086, 39.001688], + [98.432498, 38.996107], + [98.428187, 38.976104], + [98.457752, 38.952838], + [98.526737, 38.95563], + [98.584635, 38.93003], + [98.624056, 38.959353], + [98.612353, 38.977035], + [98.661628, 38.993782], + [98.70536, 39.043533], + [98.730613, 39.057011], + [98.743548, 39.086747], + [98.816845, 39.085818], + [98.818076, 39.064911], + [98.886446, 39.040744], + [98.903076, 39.012384], + [98.951735, 38.987735], + [99.054597, 38.97657], + [99.107568, 38.951907], + [99.071843, 38.921184], + [99.068764, 38.896968], + [99.141445, 38.852706], + [99.222133, 38.788827], + [99.291118, 38.765966], + [99.361951, 38.718354], + [99.375502, 38.684727], + [99.412458, 38.665571], + [99.450646, 38.60433], + [99.501769, 38.612281], + [99.52887, 38.546314], + [99.585537, 38.498556], + [99.63974, 38.474666], + [99.65945, 38.449361], + [99.727203, 38.415607], + [99.758, 38.410449], + [99.826985, 38.370109], + [99.960028, 38.320825], + [100.001912, 38.315191], + [100.049955, 38.283254], + [100.071513, 38.284663], + [100.117093, 38.253652], + [100.126332, 38.231561], + [100.182998, 38.222158], + [100.159592, 38.291239], + [100.163904, 38.328337], + [100.136803, 38.33444], + [100.093071, 38.407166], + [100.022238, 38.432017], + [100.001296, 38.467169], + [100.025933, 38.507923], + [100.064122, 38.518694], + [100.086911, 38.492936], + [100.113397, 38.497151], + [100.163288, 38.461546], + [100.24028, 38.441861], + [100.259374, 38.366355], + [100.301874, 38.388405], + [100.331439, 38.337257], + [100.318505, 38.329276], + [100.396729, 38.293118], + [100.424446, 38.307208], + [100.432453, 38.275267], + [100.459555, 38.2654], + [100.474953, 38.288891], + [100.516837, 38.272448], + [100.545786, 38.247072], + [100.595061, 38.242372], + [100.619083, 38.26587], + [100.71517, 38.253652], + [100.752126, 38.238612], + [100.825423, 38.158658], + [100.860531, 38.148305], + [100.913502, 38.17889], + [100.93814, 38.16007], + [100.91843, 38.129006], + [100.922125, 38.084741], + [100.888864, 38.056001], + [100.895024, 38.013107], + [100.91843, 37.999432], + [100.964009, 38.011221], + [101.077342, 37.941874], + [101.103211, 37.946593], + [101.114298, 37.92016], + [101.152486, 37.891356], + [101.159262, 37.86821], + [101.202994, 37.84742], + [101.276906, 37.83655], + [101.362522, 37.791162], + [101.382848, 37.822369], + [101.459224, 37.86632], + [101.551615, 37.835604], + [101.598427, 37.827569], + [101.670491, 37.754264], + [101.659405, 37.733441], + [101.791832, 37.696041], + [101.815853, 37.654357], + [101.854657, 37.664781], + [101.873135, 37.686569], + [101.946432, 37.728235], + [101.998787, 37.724921], + [102.036359, 37.685149], + [102.048678, 37.651515], + [102.035128, 37.627819], + [102.102265, 37.582304], + [102.131214, 37.54625], + [102.103497, 37.482641], + [102.125055, 37.48549], + [102.176794, 37.458892], + [102.19712, 37.420403], + [102.299981, 37.391404], + [102.29875, 37.370004], + [102.368351, 37.327662], + [102.428097, 37.308624], + [102.419474, 37.294343], + [102.45335, 37.271487], + [102.457662, 37.248147], + [102.490307, 37.223371], + [102.533422, 37.217176], + [102.578386, 37.17284], + [102.599944, 37.174748], + [102.642444, 37.099845], + [102.583314, 37.104618], + [102.488459, 37.078362], + [102.506321, 37.019134], + [102.450271, 36.968467], + [102.499546, 36.954599], + [102.526031, 36.928291], + [102.56114, 36.91968], + [102.587009, 36.869904], + [102.639364, 36.852666], + [102.720052, 36.767858], + [102.692335, 36.775528], + [102.639364, 36.732853], + [102.612879, 36.738129], + [102.601176, 36.710307], + [102.630741, 36.650793], + [102.684328, 36.619097], + [102.724364, 36.613813], + [102.714509, 36.599401], + [102.761936, 36.568645], + [102.734219, 36.562396], + [102.753313, 36.525855], + [102.793349, 36.497957], + [102.771791, 36.47438], + [102.829689, 36.365544], + [102.831537, 36.365544], + [102.838928, 36.345783], + [102.836465, 36.344819], + [102.845704, 36.331803], + [102.896827, 36.331803], + [102.922696, 36.298047], + [103.024942, 36.256556], + [103.021246, 36.232906], + [103.066826, 36.216974], + [103.048964, 36.199107], + [102.986754, 36.193312], + [102.965812, 36.151765], + [102.948566, 36.150798], + [102.941174, 36.104877], + [102.882044, 36.082632], + [102.932551, 36.048285], + [102.968276, 36.044414], + [102.951645, 36.021667], + [102.971971, 35.995525], + [102.942406, 35.92674], + [102.954725, 35.858864], + [102.94487, 35.829757], + [102.914073, 35.845282], + [102.81737, 35.850133], + [102.787189, 35.862745], + [102.739146, 35.821023], + [102.715125, 35.815685], + [102.686175, 35.771996], + [102.707733, 35.70496], + [102.744074, 35.657807], + [102.7644, 35.653431], + [102.763168, 35.612086], + [102.808747, 35.560496], + [102.746537, 35.545403], + [102.729291, 35.523487], + [102.782878, 35.527871], + [102.743458, 35.494745], + [102.695414, 35.528358], + [102.570995, 35.548324], + [102.531575, 35.580455], + [102.503241, 35.585322], + [102.49893, 35.545403], + [102.437952, 35.455268], + [102.447807, 35.437229], + [102.408387, 35.409431], + [102.314764, 35.434303], + [102.293822, 35.424063], + [102.287663, 35.36552], + [102.317844, 35.343067], + [102.311684, 35.31426], + [102.280887, 35.303028], + [102.3123, 35.282512], + [102.370199, 35.263946], + [102.365887, 35.235599], + [102.404075, 35.179366], + [102.346793, 35.164201], + [102.310452, 35.128967], + [102.29567, 35.071681], + [102.252554, 35.048657], + [102.218062, 35.057475], + [102.211286, 35.034937], + [102.176178, 35.032977], + [102.157699, 35.010923], + [102.133678, 35.014844], + [102.094874, 34.986901], + [102.048062, 34.910868], + [102.068388, 34.887798], + [101.985852, 34.90007], + [101.916867, 34.873561], + [101.923027, 34.835746], + [101.917483, 34.705964], + [101.919947, 34.621791], + [101.934729, 34.58731], + [101.956287, 34.582876], + [101.97415, 34.548871], + [102.001867, 34.538519], + [102.093026, 34.536547], + [102.139837, 34.50351], + [102.155852, 34.507456], + [102.169402, 34.457631], + [102.205743, 34.407777], + [102.259329, 34.355917], + [102.237156, 34.34307], + [102.237156, 34.34307], + [102.186649, 34.352952], + [102.149692, 34.271885], + [102.067772, 34.293642], + [102.062229, 34.227858], + [102.01357, 34.218456], + [102.030816, 34.190739], + [102.003099, 34.162022], + [101.965526, 34.167469], + [101.955055, 34.109514], + [101.897773, 34.133791], + [101.874367, 34.130323], + [101.851578, 34.153108], + [101.836795, 34.124378], + [101.788136, 34.131809], + [101.764114, 34.122892], + [101.736397, 34.080275], + [101.718535, 34.083249], + [101.703136, 34.119424], + [101.674187, 34.110506], + [101.6206, 34.178857], + [101.53868, 34.212022], + [101.492485, 34.195689], + [101.482014, 34.218951], + [101.417956, 34.227858], + [101.369913, 34.248143], + [101.327413, 34.24468], + [101.325565, 34.268423], + [101.268899, 34.278808], + [101.228863, 34.298586], + [101.235022, 34.325279], + [101.193754, 34.336646], + [101.178356, 34.320831], + [101.098284, 34.329233], + [101.054552, 34.322808], + [100.986799, 34.374689], + [100.951074, 34.38358], + [100.895024, 34.375183], + [100.868538, 34.332693], + [100.821727, 34.317371], + [100.798321, 34.260014], + [100.809408, 34.247153], + [100.764445, 34.178857], + [100.806329, 34.155584], + [100.848828, 34.089692], + [100.870386, 34.083744], + [100.880857, 34.036644], + [100.93506, 33.990013], + [100.927669, 33.975126], + [100.965857, 33.946832], + [100.994806, 33.891707], + [101.023139, 33.896178], + [101.054552, 33.863386], + [101.153718, 33.8445], + [101.153102, 33.823124], + [101.190675, 33.791796], + [101.186363, 33.741051], + [101.162957, 33.719649], + [101.177124, 33.685295], + [101.166653, 33.659894], + [101.217776, 33.669856], + [101.23687, 33.685793], + [101.302776, 33.657902], + [101.385312, 33.644949], + [101.424732, 33.655411], + [101.428427, 33.680315], + [101.501724, 33.702723], + [101.58426, 33.674339], + [101.585492, 33.645448], + [101.616905, 33.598603], + [101.611977, 33.565199], + [101.622448, 33.502343], + [101.718535, 33.494857], + [101.748716, 33.505337], + [101.769042, 33.538765], + [101.783208, 33.556721], + [101.831252, 33.554726], + [101.844186, 33.602591], + [101.884222, 33.578163], + [101.907012, 33.539264], + [101.906396, 33.48188], + [101.946432, 33.442937], + [101.915635, 33.425957], + [101.887302, 33.383991], + [101.877447, 33.314502], + [101.769658, 33.26898], + [101.770274, 33.248962], + [101.83002, 33.213921], + [101.841723, 33.184876], + [101.825708, 33.119239], + [101.865744, 33.103198], + [101.887302, 33.135778], + [101.921795, 33.153817], + [101.935345, 33.186879], + [101.99386, 33.1999], + [102.054838, 33.189884], + [102.08933, 33.204908], + [102.08933, 33.227439], + [102.117047, 33.288492], + [102.144765, 33.273983], + [102.160163, 33.242956], + [102.200815, 33.223434], + [102.217446, 33.247961], + [102.192192, 33.337005], + [102.218062, 33.349503], + [102.258098, 33.409472], + [102.296286, 33.413969], + [102.310452, 33.397982], + [102.368967, 33.41247], + [102.392988, 33.404477], + [102.447807, 33.454922], + [102.462589, 33.449429], + [102.461358, 33.501345], + [102.446575, 33.53228], + [102.477988, 33.543254], + [102.440416, 33.574673], + [102.346793, 33.605582], + [102.31538, 33.665374], + [102.342481, 33.725622], + [102.284583, 33.719151], + [102.324619, 33.754486], + [102.296286, 33.783838], + [102.243315, 33.786823], + [102.261177, 33.821136], + [102.25317, 33.861399], + [102.136142, 33.965199], + [102.16817, 33.983066], + [102.226069, 33.963214], + [102.248858, 33.98654], + [102.287047, 33.977607], + [102.315996, 33.993983], + [102.345561, 33.969666], + [102.392372, 33.971651], + [102.406539, 34.033172], + [102.437336, 34.087214], + [102.471213, 34.072839], + [102.511865, 34.086222], + [102.615958, 34.099604], + [102.649219, 34.080275], + [102.655994, 34.113478], + [102.598712, 34.14766], + [102.651067, 34.165983], + [102.664002, 34.192719], + [102.694799, 34.198659], + [102.728675, 34.235774], + [102.779798, 34.236764], + [102.798276, 34.272874], + [102.856791, 34.270895], + [102.85987, 34.301058], + [102.911609, 34.312923], + [102.949181, 34.292159], + [102.977515, 34.252595], + [102.973203, 34.205588], + [103.005848, 34.184798], + [103.052043, 34.195194], + [103.100087, 34.181828], + [103.124108, 34.162022], + [103.121644, 34.112487], + [103.178927, 34.079779], + [103.129652, 34.065899], + [103.119797, 34.03466], + [103.147514, 34.036644], + [103.157369, 33.998944], + [103.120413, 33.953286], + [103.1315, 33.931937], + [103.16476, 33.929454], + [103.181391, 33.900649], + [103.153673, 33.819147], + [103.165376, 33.805721], + [103.228202, 33.79478], + [103.24976, 33.814175], + [103.284868, 33.80224], + [103.278709, 33.774387], + [103.35447, 33.743539], + [103.434542, 33.752993], + [103.464723, 33.80224], + [103.518309, 33.807213], + [103.545411, 33.719649], + [103.520157, 33.678323], + [103.552186, 33.671351], + [103.563889, 33.699735], + [103.593454, 33.716164], + [103.645809, 33.708697], + [103.667983, 33.685793], + [103.690772, 33.69376], + [103.778236, 33.658898], + [103.861388, 33.682307], + [103.980264, 33.670852], + [104.046169, 33.686291], + [104.103452, 33.663381], + [104.176749, 33.5996], + [104.155191, 33.542755], + [104.180444, 33.472895], + [104.213089, 33.446932], + [104.22048, 33.404477], + [104.272219, 33.391486], + [104.292545, 33.336505], + [104.373849, 33.345004], + [104.420045, 33.327004], + [104.386168, 33.298497], + [104.333813, 33.315502], + [104.303632, 33.304499], + [104.323958, 33.26898], + [104.32827, 33.223934], + [104.351059, 33.158828], + [104.378161, 33.109214], + [104.337509, 33.038002], + [104.391711, 33.035493], + [104.426204, 33.010906], + [104.383704, 32.994343], + [104.378161, 32.953174], + [104.345516, 32.940117], + [104.288234, 32.942628], + [104.277147, 32.90244], + [104.294393, 32.835586], + [104.363994, 32.822511], + [104.458849, 32.748551], + [104.51182, 32.753585], + [104.526602, 32.728416], + [104.582653, 32.722374], + [104.592508, 32.695685], + [104.643015, 32.661935], + [104.696601, 32.673522], + [104.739717, 32.635228], + [104.795768, 32.643292], + [104.820405, 32.662943], + [104.845659, 32.653873], + [104.881999, 32.600951], + [104.925115, 32.607505], + [105.026745, 32.650346], + [105.0791, 32.637244], + [105.111128, 32.593893], + [105.185041, 32.617587], + [105.215222, 32.63674], + [105.219534, 32.666469], + [105.263265, 32.652362], + [105.297758, 32.656897], + [105.347033, 32.68259], + [105.368591, 32.712807], + [105.448663, 32.732946], + [105.454207, 32.767173], + [105.427721, 32.784281], + [105.396308, 32.85067], + [105.396308, 32.85067], + [105.38091, 32.876307], + [105.408011, 32.885857], + [105.414171, 32.922034], + [105.467757, 32.930071], + [105.49917, 32.911986], + [105.528119, 32.919019], + [105.565692, 32.906962], + [105.590329, 32.87681], + [105.638373, 32.879323], + [105.656851, 32.895405], + [105.735691, 32.905454], + [105.82685, 32.950663], + [105.861959, 32.939112], + [105.917393, 32.993841], + [105.926632, 33.042517], + [105.914929, 33.066092], + [105.934639, 33.112221], + [105.923552, 33.147805], + [105.897067, 33.146803], + [105.93156, 33.178365], + [105.968516, 33.154318], + [105.965436, 33.204407], + [105.917393, 33.237951], + [105.862574, 33.234447], + [105.799133, 33.258471], + [105.791741, 33.278486], + [105.752937, 33.291994], + [105.755401, 33.329004], + [105.709822, 33.382991], + [105.827466, 33.379993], + [105.837937, 33.410971], + [105.831162, 33.451926], + [105.842248, 33.489866], + [105.871198, 33.511325], + [105.902611, 33.556222], + [105.940183, 33.570684], + [105.971596, 33.613058], + [106.047356, 33.610067], + [106.086776, 33.617045], + [106.117573, 33.602591], + [106.108334, 33.569686], + [106.187174, 33.546746], + [106.237681, 33.564201], + [106.303587, 33.604585], + [106.35163, 33.587137], + [106.384891, 33.612061], + [106.447101, 33.613058], + [106.456956, 33.532779], + [106.540108, 33.512822], + [106.58076, 33.576169], + [106.575832, 33.631497], + [106.534564, 33.695254], + [106.482825, 33.707203], + [106.488369, 33.757969], + [106.461883, 33.789807], + [106.491448, 33.834559], + [106.475434, 33.875809], + [106.428007, 33.866368], + [106.41076, 33.909093], + [106.474202, 33.970659], + [106.471738, 34.024244], + [106.505615, 34.056479], + [106.501919, 34.105055], + [106.560434, 34.109514], + [106.585071, 34.149641], + [106.55797, 34.229837], + [106.5321, 34.254079], + [106.496376, 34.238248], + [106.526557, 34.292159], + [106.577064, 34.280786], + [106.589383, 34.253584], + [106.63373, 34.260014], + [106.652825, 34.24369], + [106.68239, 34.256057], + [106.705179, 34.299575], + [106.691013, 34.337635], + [106.717498, 34.369255], + [106.638042, 34.391481], + [106.610941, 34.454177], + [106.558586, 34.48822], + [106.513622, 34.498085], + [106.514238, 34.511894], + [106.455108, 34.531617], + [106.334384, 34.517811], + [106.341159, 34.568093], + [106.314058, 34.578934], + [106.419384, 34.643458], + [106.471122, 34.634102], + [106.442173, 34.675455], + [106.456956, 34.703996], + [106.487137, 34.715311], + [106.505615, 34.746789], + [106.539492, 34.745805], + [106.575216, 34.769897], + [106.550579, 34.82936], + [106.556122, 34.861285], + [106.527789, 34.876507], + [106.493296, 34.941289], + [106.484673, 34.983959], + [106.494528, 35.006021], + [106.494528, 35.006021], + [106.52163, 35.027587], + [106.541956, 35.083925], + [106.577064, 35.089312], + [106.615252, 35.071191], + [106.706411, 35.081966], + [106.710723, 35.100574], + [106.838222, 35.080007], + [106.901664, 35.094698], + [106.950323, 35.066782], + [106.990975, 35.068252], + [107.012533, 35.029547], + [107.08275, 35.024156], + [107.089526, 34.976604], + [107.119707, 34.950119], + [107.162206, 34.944233], + [107.189308, 34.893198], + [107.252749, 34.880925], + [107.286626, 34.931968], + [107.350068, 34.93393], + [107.369162, 34.917738], + [107.400575, 34.932949], + [107.455394, 34.916757], + [107.523763, 34.909886], + [107.564415, 34.968757], + [107.619849, 34.964834], + [107.638943, 34.935402], + [107.675284, 34.9511], + [107.741805, 34.953553], + [107.842203, 34.979056], + [107.863145, 34.999158], + [107.846515, 35.024646], + [107.814486, 35.024646], + [107.773218, 35.060904], + [107.773218, 35.060904], + [107.769523, 35.064333], + [107.769523, 35.064333], + [107.727639, 35.120157], + [107.715936, 35.168114], + [107.686371, 35.218], + [107.652494, 35.244886], + [107.667277, 35.257104], + [107.737494, 35.267366], + [107.745501, 35.311819], + [107.841587, 35.276649], + [107.867457, 35.256127], + [107.960464, 35.263457], + [107.949993, 35.245375], + [108.049159, 35.253683], + [108.094739, 35.280069], + [108.174811, 35.304981], + [108.221622, 35.296678], + [108.239484, 35.256127], + [108.296767, 35.267855], + [108.345426, 35.300586], + [108.36144, 35.279581], + [108.48894, 35.275184], + [108.547454, 35.304981], + [108.583178, 35.294724], + [108.614591, 35.328909], + [108.61028, 35.355271], + [108.631222, 35.418698], + [108.605968, 35.503028], + [108.625678, 35.537124], + [108.618287, 35.557088], + [108.539447, 35.605761], + [108.517889, 35.699615], + [108.533903, 35.746257], + [108.527744, 35.82442], + [108.499411, 35.872444], + [108.518505, 35.905414], + [108.562852, 35.921409], + [108.593649, 35.950967], + [108.652164, 35.94806], + [108.659555, 35.990683], + [108.688504, 36.021183], + [108.682345, 36.062316], + [108.712526, 36.138716], + [108.646004, 36.254143], + [108.641693, 36.359279], + [108.651548, 36.384818], + [108.618903, 36.433946], + [108.562852, 36.43876], + [108.510498, 36.47438], + [108.514809, 36.445501], + [108.495099, 36.422389], + [108.460606, 36.422871], + [108.408252, 36.45946], + [108.391621, 36.505654], + [108.365136, 36.519603], + [108.340498, 36.559032], + [108.262274, 36.549417], + [108.245644, 36.571048], + [108.210535, 36.577296], + [108.204992, 36.606607], + [108.204992, 36.606607], + [108.222854, 36.631105], + [108.1976, 36.630144], + [108.163724, 36.563839], + [108.092891, 36.587388], + [108.079956, 36.614294], + [108.060862, 36.592194], + [108.001732, 36.639269], + [108.02329, 36.647912], + [108.006659, 36.683435], + [107.938906, 36.655594], + [107.940754, 36.694953], + [107.914268, 36.720861], + [107.907493, 36.750118], + [107.866841, 36.766899], + [107.768291, 36.792783], + [107.742421, 36.811951], + [107.722095, 36.802367], + [107.670356, 36.83303], + [107.642023, 36.819137], + [107.5909, 36.836382], + [107.540393, 36.828718], + [107.533618, 36.867031], + [107.478183, 36.908196], + [107.365466, 36.905324], + [107.336517, 36.925899], + [107.310032, 36.912502], + [107.291554, 36.979463], + [107.291554, 36.979463], + [107.288474, 37.008143], + [107.288474, 37.008143], + [107.28601, 37.054963], + [107.268764, 37.099367], + [107.234887, 37.096503], + [107.181916, 37.143269], + [107.133873, 37.134681], + [107.095685, 37.115595], + [107.030395, 37.140883], + [107.031011, 37.108436], + [106.998367, 37.106527], + [106.905976, 37.151378], + [106.912135, 37.110345], + [106.891193, 37.098413], + [106.818512, 37.141838], + [106.776012, 37.158056], + [106.772933, 37.120367], + [106.750143, 37.09889], + [106.728585, 37.121321], + [106.687933, 37.12991], + [106.673151, 37.1113], + [106.6171, 37.135158], + [106.605397, 37.127524], + [106.645433, 37.064992], + [106.666991, 37.016745], + [106.646665, 37.000496], + [106.64297, 36.962729], + [106.594926, 36.967988], + [106.595542, 36.94025], + [106.540108, 36.984244], + [106.549347, 36.941685], + [106.601702, 36.918244], + [106.609709, 36.878521], + [106.609709, 36.878521], + [106.626955, 36.892403], + [106.637426, 36.867031], + [106.637426, 36.867031], + [106.657752, 36.820575], + [106.627571, 36.752995], + [106.644817, 36.72278], + [106.59431, 36.750118], + [106.514238, 36.715584], + [106.519782, 36.708868], + [106.519782, 36.708868], + [106.530869, 36.690154], + [106.490833, 36.685835], + [106.491448, 36.628703], + [106.444637, 36.624861], + [106.465579, 36.583063], + [106.444637, 36.557109], + [106.397826, 36.576816], + [106.392282, 36.556628], + [106.363949, 36.577296], + [106.37134, 36.549417], + [106.39721, 36.548455], + [106.455724, 36.496995], + [106.494528, 36.494589], + [106.523477, 36.468605], + [106.492064, 36.422389], + [106.510543, 36.379037], + [106.497608, 36.31348], + [106.470507, 36.306246], + [106.504383, 36.266207], + [106.54134, 36.25366], + [106.559202, 36.292259], + [106.647897, 36.259451], + [106.685469, 36.273445], + [106.698404, 36.244008], + [106.735976, 36.23725], + [106.772933, 36.212628], + [106.808657, 36.21118], + [106.833295, 36.229044], + [106.858548, 36.206834], + [106.858548, 36.206834], + [106.873947, 36.178338], + [106.873947, 36.178338], + [106.930613, 36.138716], + [106.925686, 36.115997], + [106.957715, 36.091337], + [106.940468, 36.064734], + [106.928149, 36.011502], + [106.94786, 35.988262], + [106.90228, 35.943699], + [106.93862, 35.952905], + [106.940468, 35.931101], + [106.912751, 35.93207], + [106.849925, 35.887476], + [106.927534, 35.810346], + [106.897353, 35.759856], + [106.868403, 35.771996], + [106.867171, 35.738485], + [106.819128, 35.7448], + [106.806193, 35.70982], + [106.750759, 35.725369], + [106.750759, 35.689408], + [106.674998, 35.728284], + [106.66268, 35.70739], + [106.633115, 35.714679], + [106.620796, 35.743829], + [106.595542, 35.727312], + [106.566593, 35.738971], + [106.506231, 35.737514] + ] + ], + [ + [ + [106.047356, 35.498155], + [106.048588, 35.488898], + [106.054132, 35.45478], + [106.071994, 35.463555], + [106.078769, 35.509848], + [106.047356, 35.498155] + ] + ], + [ + [ + [102.831537, 36.365544], + [102.829689, 36.365544], + [102.836465, 36.344819], + [102.838928, 36.345783], + [102.831537, 36.365544] + ] + ], + [ + [ + [106.073226, 35.447468], + [106.067682, 35.436254], + [106.073226, 35.420649], + [106.083081, 35.421624], + [106.073226, 35.447468] + ] + ], + [ + [ + [106.504383, 35.736057], + [106.506231, 35.737514], + [106.49268, 35.732656], + [106.498224, 35.732656], + [106.504383, 35.736057] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 630000, + "name": "青海省", + "center": [101.778916, 36.623178], + "centroid": [96.043533, 35.726403], + "childrenNum": 8, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 28, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [102.829689, 36.365544], + [102.771791, 36.47438], + [102.793349, 36.497957], + [102.753313, 36.525855], + [102.734219, 36.562396], + [102.761936, 36.568645], + [102.714509, 36.599401], + [102.724364, 36.613813], + [102.684328, 36.619097], + [102.630741, 36.650793], + [102.601176, 36.710307], + [102.612879, 36.738129], + [102.639364, 36.732853], + [102.692335, 36.775528], + [102.720052, 36.767858], + [102.639364, 36.852666], + [102.587009, 36.869904], + [102.56114, 36.91968], + [102.526031, 36.928291], + [102.499546, 36.954599], + [102.450271, 36.968467], + [102.506321, 37.019134], + [102.488459, 37.078362], + [102.583314, 37.104618], + [102.642444, 37.099845], + [102.599944, 37.174748], + [102.578386, 37.17284], + [102.533422, 37.217176], + [102.490307, 37.223371], + [102.457662, 37.248147], + [102.45335, 37.271487], + [102.419474, 37.294343], + [102.428097, 37.308624], + [102.368351, 37.327662], + [102.29875, 37.370004], + [102.299981, 37.391404], + [102.19712, 37.420403], + [102.176794, 37.458892], + [102.125055, 37.48549], + [102.103497, 37.482641], + [102.131214, 37.54625], + [102.102265, 37.582304], + [102.035128, 37.627819], + [102.048678, 37.651515], + [102.036359, 37.685149], + [101.998787, 37.724921], + [101.946432, 37.728235], + [101.873135, 37.686569], + [101.854657, 37.664781], + [101.815853, 37.654357], + [101.791832, 37.696041], + [101.659405, 37.733441], + [101.670491, 37.754264], + [101.598427, 37.827569], + [101.551615, 37.835604], + [101.459224, 37.86632], + [101.382848, 37.822369], + [101.362522, 37.791162], + [101.276906, 37.83655], + [101.202994, 37.84742], + [101.159262, 37.86821], + [101.152486, 37.891356], + [101.114298, 37.92016], + [101.103211, 37.946593], + [101.077342, 37.941874], + [100.964009, 38.011221], + [100.91843, 37.999432], + [100.895024, 38.013107], + [100.888864, 38.056001], + [100.922125, 38.084741], + [100.91843, 38.129006], + [100.93814, 38.16007], + [100.913502, 38.17889], + [100.860531, 38.148305], + [100.825423, 38.158658], + [100.752126, 38.238612], + [100.71517, 38.253652], + [100.619083, 38.26587], + [100.595061, 38.242372], + [100.545786, 38.247072], + [100.516837, 38.272448], + [100.474953, 38.288891], + [100.459555, 38.2654], + [100.432453, 38.275267], + [100.424446, 38.307208], + [100.396729, 38.293118], + [100.318505, 38.329276], + [100.331439, 38.337257], + [100.301874, 38.388405], + [100.259374, 38.366355], + [100.24028, 38.441861], + [100.163288, 38.461546], + [100.113397, 38.497151], + [100.086911, 38.492936], + [100.064122, 38.518694], + [100.025933, 38.507923], + [100.001296, 38.467169], + [100.022238, 38.432017], + [100.093071, 38.407166], + [100.136803, 38.33444], + [100.163904, 38.328337], + [100.159592, 38.291239], + [100.182998, 38.222158], + [100.126332, 38.231561], + [100.117093, 38.253652], + [100.071513, 38.284663], + [100.049955, 38.283254], + [100.001912, 38.315191], + [99.960028, 38.320825], + [99.826985, 38.370109], + [99.758, 38.410449], + [99.727203, 38.415607], + [99.65945, 38.449361], + [99.63974, 38.474666], + [99.585537, 38.498556], + [99.52887, 38.546314], + [99.501769, 38.612281], + [99.450646, 38.60433], + [99.412458, 38.665571], + [99.375502, 38.684727], + [99.361951, 38.718354], + [99.291118, 38.765966], + [99.222133, 38.788827], + [99.141445, 38.852706], + [99.068764, 38.896968], + [99.071843, 38.921184], + [99.107568, 38.951907], + [99.054597, 38.97657], + [98.951735, 38.987735], + [98.903076, 39.012384], + [98.886446, 39.040744], + [98.818076, 39.064911], + [98.816845, 39.085818], + [98.743548, 39.086747], + [98.730613, 39.057011], + [98.70536, 39.043533], + [98.661628, 38.993782], + [98.612353, 38.977035], + [98.624056, 38.959353], + [98.584635, 38.93003], + [98.526737, 38.95563], + [98.457752, 38.952838], + [98.428187, 38.976104], + [98.432498, 38.996107], + [98.401086, 39.001688], + [98.383839, 39.029588], + [98.316702, 39.040744], + [98.280977, 39.027263], + [98.287753, 38.992386], + [98.276666, 38.963541], + [98.235398, 38.918855], + [98.242173, 38.880664], + [98.167645, 38.840121], + [98.091884, 38.786495], + [98.068478, 38.816344], + [98.029058, 38.834061], + [98.009348, 38.85923], + [97.875689, 38.898365], + [97.828878, 38.93003], + [97.701379, 38.963076], + [97.679205, 39.010524], + [97.58127, 39.052364], + [97.504894, 39.076527], + [97.458698, 39.117863], + [97.401416, 39.146645], + [97.371235, 39.140611], + [97.347213, 39.167528], + [97.315185, 39.164744], + [97.220946, 39.193042], + [97.14149, 39.199999], + [97.060186, 39.19768], + [97.017686, 39.208347], + [96.962251, 39.198144], + [97.012142, 39.142004], + [96.969643, 39.097895], + [96.95794, 39.041674], + [96.965331, 39.017034], + [96.938846, 38.95563], + [96.940693, 38.90768], + [96.983809, 38.869016], + [96.993664, 38.834993], + [96.987505, 38.793025], + [97.00044, 38.7613], + [97.023229, 38.755699], + [97.009063, 38.702477], + [97.057722, 38.67258], + [97.047251, 38.653888], + [97.055874, 38.594508], + [96.961019, 38.558015], + [96.876636, 38.580475], + [96.847071, 38.599186], + [96.7941, 38.608072], + [96.808882, 38.582346], + [96.767614, 38.552399], + [96.800259, 38.52759], + [96.780549, 38.504177], + [96.706637, 38.505582], + [96.6666, 38.483567], + [96.707868, 38.459203], + [96.698013, 38.422172], + [96.626564, 38.356031], + [96.638883, 38.307208], + [96.655514, 38.295936], + [96.665369, 38.23015], + [96.46334, 38.277616], + [96.378341, 38.277146], + [96.335841, 38.246132], + [96.301964, 38.183124], + [96.313051, 38.161952], + [96.264392, 38.145952], + [96.252689, 38.167599], + [96.221892, 38.149246], + [96.109175, 38.187358], + [96.06606, 38.173245], + [96.006929, 38.207582], + [95.93856, 38.237202], + [95.932401, 38.259291], + [95.89606, 38.2903], + [95.852945, 38.287481], + [95.83693, 38.344298], + [95.775952, 38.356031], + [95.723597, 38.378554], + [95.703887, 38.400131], + [95.671858, 38.388405], + [95.608417, 38.339134], + [95.585011, 38.343359], + [95.51849, 38.294997], + [95.487693, 38.314721], + [95.455664, 38.291709], + [95.440881, 38.310965], + [95.408236, 38.300163], + [95.315846, 38.318947], + [95.259179, 38.302981], + [95.229614, 38.330685], + [95.209904, 38.327868], + [95.185266, 38.379492], + [95.140919, 38.392158], + [95.122441, 38.417014], + [95.072549, 38.402476], + [95.045448, 38.418889], + [94.973999, 38.430142], + [94.884072, 38.414669], + [94.861282, 38.393565], + [94.812623, 38.385591], + [94.672805, 38.386998], + [94.582878, 38.36917], + [94.56132, 38.351807], + [94.527443, 38.365416], + [94.527443, 38.425922], + [94.511429, 38.445142], + [94.370379, 38.7627], + [94.281067, 38.7599], + [93.973098, 38.724891], + [93.95154, 38.715086], + [93.885018, 38.720689], + [93.800019, 38.750566], + [93.773533, 38.771099], + [93.756287, 38.807484], + [93.769838, 38.821007], + [93.884403, 38.826136], + [93.884403, 38.867618], + [93.834511, 38.867618], + [93.729186, 38.924443], + [93.453245, 38.915596], + [93.274007, 38.896036], + [93.237666, 38.916062], + [93.179152, 38.923977], + [93.198246, 39.045857], + [93.165601, 39.090928], + [93.131725, 39.108112], + [93.142196, 39.160567], + [93.115094, 39.17959], + [93.043029, 39.146645], + [92.978356, 39.143396], + [92.938936, 39.169848], + [92.889045, 39.160103], + [92.866871, 39.138754], + [92.765857, 39.136898], + [92.659299, 39.109969], + [92.545966, 39.111362], + [92.489916, 39.099753], + [92.459119, 39.063982], + [92.459119, 39.042604], + [92.41046, 39.03842], + [92.416003, 39.010524], + [92.380279, 38.999828], + [92.263866, 39.002153], + [92.197961, 38.983548], + [92.173323, 38.960749], + [92.10865, 38.963541], + [91.966368, 38.930961], + [91.880752, 38.899297], + [91.87952, 38.884391], + [91.806223, 38.872744], + [91.694738, 38.86622], + [91.681188, 38.852706], + [91.501333, 38.815411], + [91.446515, 38.813546], + [91.298689, 38.746365], + [91.242639, 38.752433], + [91.188436, 38.73096], + [90.992567, 38.695003], + [90.970394, 38.697806], + [90.899561, 38.679588], + [90.724634, 38.658094], + [90.65996, 38.674449], + [90.619308, 38.664636], + [90.645794, 38.635191], + [90.606374, 38.610878], + [90.608837, 38.594508], + [90.560794, 38.593573], + [90.525685, 38.561291], + [90.463476, 38.556611], + [90.465323, 38.521971], + [90.427135, 38.493873], + [90.353222, 38.482162], + [90.315034, 38.501835], + [90.248513, 38.491531], + [90.130868, 38.494341], + [90.111774, 38.477945], + [90.111774, 38.418889], + [90.129636, 38.400131], + [90.179528, 38.396848], + [90.137644, 38.340543], + [90.280542, 38.238142], + [90.352607, 38.233441], + [90.361846, 38.300163], + [90.401882, 38.311434], + [90.531229, 38.319886], + [90.516446, 38.207111], + [90.519526, 37.730601], + [90.579272, 37.720661], + [90.586663, 37.703144], + [90.643946, 37.696988], + [90.777605, 37.648672], + [90.820104, 37.613599], + [90.854597, 37.604117], + [90.882314, 37.575664], + [90.865684, 37.53059], + [90.911879, 37.519674], + [90.958075, 37.477891], + [91.019669, 37.493088], + [91.073256, 37.475992], + [91.099741, 37.447965], + [91.113292, 37.387124], + [91.136081, 37.355734], + [91.134849, 37.324331], + [91.194596, 37.273868], + [91.1909, 37.205737], + [91.280211, 37.163779], + [91.286371, 37.105095], + [91.303617, 37.083136], + [91.291298, 37.042544], + [91.303617, 37.012444], + [91.216153, 37.010054], + [91.181045, 37.025345], + [91.133618, 37.007665], + [91.126842, 36.978507], + [91.051698, 36.96751], + [91.036915, 36.929727], + [90.983944, 36.913459], + [90.924198, 36.921115], + [90.853981, 36.915373], + [90.758511, 36.825844], + [90.732025, 36.825844], + [90.727098, 36.755872], + [90.754815, 36.721341], + [90.720938, 36.708868], + [90.706156, 36.658955], + [90.730793, 36.655594], + [90.72217, 36.620058], + [90.741264, 36.585947], + [90.810865, 36.585466], + [90.831191, 36.55807], + [90.905104, 36.560474], + [91.011662, 36.539801], + [91.035683, 36.529703], + [91.039995, 36.474861], + [91.028292, 36.443093], + [91.051698, 36.433946], + [91.026444, 36.323607], + [91.07264, 36.299012], + [91.051698, 36.238215], + [91.096045, 36.219871], + [91.09235, 36.163844], + [91.124994, 36.115514], + [91.081263, 36.088436], + [90.979017, 36.106811], + [90.922966, 36.028927], + [90.850285, 36.016827], + [90.815793, 36.035703], + [90.776373, 36.086501], + [90.659344, 36.13485], + [90.613149, 36.126632], + [90.534925, 36.147899], + [90.478258, 36.13195], + [90.424055, 36.133883], + [90.325505, 36.159496], + [90.23681, 36.160462], + [90.198006, 36.187516], + [90.130252, 36.2078], + [90.145651, 36.239181], + [90.058188, 36.255591], + [90.043405, 36.276822], + [90.003369, 36.278752], + [90.028006, 36.258486], + [90.019999, 36.213594], + [89.997825, 36.168193], + [89.944855, 36.140649], + [89.941159, 36.067637], + [89.914058, 36.079246], + [89.819819, 36.080697], + [89.766848, 36.073925], + [89.711414, 36.093272], + [89.688624, 36.091337], + [89.605472, 36.038123], + [89.474893, 36.022151], + [89.417611, 36.044897], + [89.404676, 36.016827], + [89.434857, 35.992136], + [89.428082, 35.917531], + [89.489676, 35.903475], + [89.554965, 35.873414], + [89.550654, 35.856924], + [89.62395, 35.859349], + [89.654747, 35.848193], + [89.707718, 35.849163], + [89.778551, 35.861775], + [89.801957, 35.848193], + [89.767464, 35.799183], + [89.782863, 35.773453], + [89.747138, 35.7516], + [89.748986, 35.66267], + [89.726196, 35.648082], + [89.765616, 35.599922], + [89.75145, 35.580942], + [89.71203, 35.581915], + [89.699711, 35.544916], + [89.720037, 35.501566], + [89.740979, 35.507412], + [89.765, 35.482563], + [89.739131, 35.468429], + [89.685544, 35.416259], + [89.658443, 35.425526], + [89.619639, 35.412357], + [89.58761, 35.383575], + [89.497067, 35.361128], + [89.516161, 35.330862], + [89.494603, 35.298632], + [89.531559, 35.276161], + [89.48598, 35.256616], + [89.450255, 35.223867], + [89.46935, 35.214577], + [89.519241, 35.133862], + [89.579603, 35.118688], + [89.593153, 35.104491], + [89.59069, 35.057965], + [89.560509, 34.938836], + [89.578987, 34.895162], + [89.670146, 34.887798], + [89.707102, 34.919701], + [89.747138, 34.903506], + [89.78779, 34.921664], + [89.821051, 34.902033], + [89.814891, 34.86816], + [89.838913, 34.865705], + [89.867862, 34.81069], + [89.825978, 34.796931], + [89.799493, 34.743838], + [89.732356, 34.732035], + [89.72558, 34.660689], + [89.74837, 34.641981], + [89.798877, 34.628686], + [89.777935, 34.574499], + [89.814891, 34.548871], + [89.823515, 34.455657], + [89.819819, 34.420614], + [89.799493, 34.39642], + [89.820435, 34.369255], + [89.858623, 34.359375], + [89.86663, 34.324785], + [89.825362, 34.293642], + [89.838297, 34.263477], + [89.816739, 34.16945], + [89.789638, 34.150632], + [89.760073, 34.152613], + [89.756993, 34.124874], + [89.71203, 34.131809], + [89.655979, 34.097126], + [89.656595, 34.057966], + [89.635037, 34.049537], + [89.684928, 33.990013], + [89.688008, 33.959739], + [89.718805, 33.946832], + [89.73174, 33.921509], + [89.795181, 33.865374], + [89.837065, 33.868853], + [89.899891, 33.80771], + [89.942391, 33.801246], + [89.902355, 33.758467], + [89.907282, 33.741051], + [89.983659, 33.725622], + [89.981195, 33.70322], + [90.008296, 33.687785], + [89.984275, 33.612061], + [90.01076, 33.553728], + [90.083441, 33.525295], + [90.088984, 33.478885], + [90.107463, 33.460913], + [90.22018, 33.437943], + [90.246665, 33.423959], + [90.332896, 33.310501], + [90.363077, 33.279487], + [90.405577, 33.260473], + [90.490577, 33.264977], + [90.562642, 33.229441], + [90.627315, 33.180368], + [90.704308, 33.135778], + [90.740032, 33.142293], + [90.803474, 33.114227], + [90.88293, 33.120241], + [90.902024, 33.083143], + [90.927894, 33.120241], + [91.001807, 33.11573], + [91.037531, 33.098686], + [91.072024, 33.113224], + [91.147784, 33.07211], + [91.161335, 33.108712], + [91.18782, 33.106206], + [91.226624, 33.141792], + [91.261733, 33.141291], + [91.311624, 33.108211], + [91.370138, 33.100691], + [91.436044, 33.066092], + [91.49579, 33.109214], + [91.535826, 33.10019], + [91.55492, 33.060074], + [91.583253, 33.0375], + [91.664557, 33.012913], + [91.685499, 32.989324], + [91.752637, 32.969242], + [91.799448, 32.942126], + [91.839484, 32.948152], + [91.857962, 32.90244], + [91.896766, 32.907967], + [91.955897, 32.8205], + [92.018722, 32.829552], + [92.038432, 32.860725], + [92.101874, 32.860222], + [92.145606, 32.885857], + [92.205352, 32.866255], + [92.227526, 32.821003], + [92.193649, 32.801889], + [92.211511, 32.788306], + [92.198577, 32.754591], + [92.255243, 32.720863], + [92.310062, 32.751571], + [92.343938, 32.738484], + [92.355641, 32.764657], + [92.411076, 32.748048], + [92.459119, 32.76365], + [92.484372, 32.745028], + [92.56814, 32.73194], + [92.574916, 32.741001], + [92.634662, 32.720863], + [92.667922, 32.73194], + [92.686401, 32.76516], + [92.756618, 32.743014], + [92.789262, 32.719856], + [92.822523, 32.729926], + [92.866871, 32.698203], + [92.933392, 32.719353], + [92.964189, 32.714821], + [93.00053, 32.741001], + [93.019624, 32.737477], + [93.023935, 32.703239], + [93.069515, 32.626156], + [93.087993, 32.63674], + [93.159442, 32.644803], + [93.176688, 32.6705], + [93.210565, 32.655385], + [93.239514, 32.662439], + [93.260456, 32.62666], + [93.300492, 32.619604], + [93.308499, 32.580278], + [93.33868, 32.5712], + [93.385492, 32.525294], + [93.411977, 32.558086], + [93.4631, 32.556069], + [93.476651, 32.504603], + [93.501904, 32.503593], + [93.516687, 32.47583], + [93.618933, 32.522771], + [93.651577, 32.571705], + [93.721795, 32.578261], + [93.75136, 32.56313], + [93.820345, 32.549511], + [93.851142, 32.50965], + [93.861613, 32.466237], + [93.90904, 32.463207], + [93.960163, 32.484917], + [93.978641, 32.459672], + [94.03038, 32.448057], + [94.049474, 32.469771], + [94.091974, 32.463207], + [94.137554, 32.433915], + [94.176974, 32.454117], + [94.196684, 32.51621], + [94.250886, 32.51722], + [94.292154, 32.502584], + [94.294002, 32.519743], + [94.350053, 32.533871], + [94.371611, 32.524789], + [94.395016, 32.594397], + [94.435052, 32.562626], + [94.463386, 32.572209], + [94.459074, 32.599439], + [94.522516, 32.595909], + [94.591501, 32.640772], + [94.614291, 32.673522], + [94.638312, 32.645307], + [94.737479, 32.587338], + [94.762116, 32.526303], + [94.78737, 32.522266], + [94.80708, 32.486431], + [94.852043, 32.463712], + [94.889616, 32.472295], + [94.912405, 32.41573], + [94.944434, 32.404109], + [94.988166, 32.422802], + [95.057151, 32.395014], + [95.075013, 32.376315], + [95.075013, 32.376315], + [95.081789, 32.384907], + [95.153853, 32.386423], + [95.218527, 32.397035], + [95.228382, 32.363678], + [95.261643, 32.348006], + [95.193274, 32.332331], + [95.096571, 32.322217], + [95.079325, 32.279726], + [95.10581, 32.258979], + [95.20744, 32.297433], + [95.214216, 32.321712], + [95.241317, 32.3207], + [95.239469, 32.287315], + [95.270266, 32.194683], + [95.270266, 32.194683], + [95.31523, 32.148585], + [95.366968, 32.151118], + [95.367584, 32.178982], + [95.406389, 32.182021], + [95.440265, 32.157705], + [95.454432, 32.061898], + [95.421171, 32.033999], + [95.454432, 32.007613], + [95.395918, 32.001523], + [95.360809, 31.95939], + [95.3682, 31.92892], + [95.408852, 31.918761], + [95.406389, 31.896915], + [95.456896, 31.801853], + [95.480301, 31.795749], + [95.511714, 31.750468], + [95.546823, 31.73978], + [95.580083, 31.76726], + [95.634286, 31.782523], + [95.779648, 31.748941], + [95.823995, 31.68225], + [95.853561, 31.714329], + [95.846169, 31.736218], + [95.89914, 31.81711], + [95.983524, 31.816601], + [95.989067, 31.78761], + [96.064828, 31.720438], + [96.135661, 31.70211], + [96.148595, 31.686324], + [96.156603, 31.602769], + [96.207726, 31.598691], + [96.221892, 31.647613], + [96.245298, 31.657802], + [96.252073, 31.697527], + [96.222508, 31.733164], + [96.231131, 31.749959], + [96.178161, 31.775401], + [96.183088, 31.835924], + [96.202798, 31.841008], + [96.214501, 31.876589], + [96.188632, 31.904028], + [96.220044, 31.905553], + [96.253305, 31.929936], + [96.288414, 31.919777], + [96.389428, 31.919777], + [96.407906, 31.845583], + [96.435623, 31.796258], + [96.468884, 31.769804], + [96.519391, 31.74945], + [96.56805, 31.711783], + [96.615477, 31.737236], + [96.661057, 31.705674], + [96.691854, 31.722474], + [96.722651, 31.686833], + [96.778701, 31.675629], + [96.790404, 31.698545], + [96.840295, 31.720438], + [96.799027, 31.792188], + [96.765767, 31.819144], + [96.760223, 31.860325], + [96.794716, 31.869474], + [96.81073, 31.894375], + [96.776238, 31.935015], + [96.753448, 31.944156], + [96.742977, 32.001016], + [96.722651, 32.013195], + [96.824281, 32.007613], + [96.868629, 31.964975], + [96.863085, 31.996448], + [96.894498, 32.013703], + [96.941925, 31.986297], + [96.965947, 32.008628], + [96.935766, 32.048203], + [97.006599, 32.067984], + [97.028773, 32.04871], + [97.127323, 32.044145], + [97.169823, 32.032984], + [97.188301, 32.055304], + [97.214786, 32.042623], + [97.233881, 32.063927], + [97.201852, 32.090296], + [97.219714, 32.109054], + [97.258518, 32.072041], + [97.308409, 32.076605], + [97.293011, 32.096887], + [97.313953, 32.130342], + [97.271453, 32.139971], + [97.264062, 32.182527], + [97.299786, 32.294904], + [97.32196, 32.303503], + [97.371235, 32.273148], + [97.415583, 32.296421], + [97.424822, 32.322723], + [97.387865, 32.427349], + [97.341054, 32.440987], + [97.388481, 32.501575], + [97.334895, 32.514192], + [97.332431, 32.542448], + [97.3583, 32.563635], + [97.374315, 32.546484], + [97.411887, 32.575235], + [97.448843, 32.586833], + [97.463626, 32.55506], + [97.50243, 32.530844], + [97.540618, 32.536899], + [97.670582, 32.51722], + [97.684132, 32.530339], + [97.730944, 32.527312], + [97.700763, 32.53488], + [97.616995, 32.586329], + [97.607756, 32.614059], + [97.543698, 32.62162], + [97.535075, 32.638252], + [97.48272, 32.654377], + [97.42359, 32.70475], + [97.429133, 32.714318], + [97.386018, 32.77925], + [97.392793, 32.828546], + [97.376163, 32.886359], + [97.347829, 32.895907], + [97.375547, 32.956689], + [97.438372, 32.976271], + [97.523988, 32.988822], + [97.499966, 33.011408], + [97.542466, 33.035995], + [97.517213, 33.097683], + [97.487032, 33.107209], + [97.498119, 33.137783], + [97.487648, 33.168346], + [97.548626, 33.203907], + [97.607756, 33.263976], + [97.622538, 33.337005], + [97.676125, 33.341004], + [97.754349, 33.409972], + [97.674893, 33.432949], + [97.625618, 33.461412], + [97.552321, 33.465906], + [97.511669, 33.520805], + [97.523372, 33.577166], + [97.450075, 33.582152], + [97.415583, 33.605582], + [97.435293, 33.682307], + [97.418046, 33.728608], + [97.422974, 33.754984], + [97.406344, 33.795278], + [97.373083, 33.817655], + [97.371851, 33.842015], + [97.398336, 33.848477], + [97.395257, 33.889224], + [97.460546, 33.887236], + [97.503662, 33.912073], + [97.52214, 33.903133], + [97.601596, 33.929951], + [97.629314, 33.919523], + [97.660111, 33.956264], + [97.652719, 33.998448], + [97.70261, 34.036644], + [97.665654, 34.126855], + [97.766668, 34.158555], + [97.789458, 34.182818], + [97.789458, 34.182818], + [97.796849, 34.199154], + [97.796849, 34.199154], + [97.8104, 34.207568], + [97.898479, 34.209548], + [97.95453, 34.190739], + [98.028442, 34.122892], + [98.098043, 34.122892], + [98.158405, 34.107037], + [98.206449, 34.08424], + [98.258188, 34.083249], + [98.344419, 34.094648], + [98.399854, 34.085231], + [98.396774, 34.053008], + [98.428187, 34.029204], + [98.440506, 33.981577], + [98.415252, 33.956761], + [98.425723, 33.913066], + [98.407245, 33.867362], + [98.434962, 33.843009], + [98.463295, 33.848477], + [98.492861, 33.796272], + [98.494092, 33.768915], + [98.51873, 33.77389], + [98.539672, 33.746525], + [98.582788, 33.731595], + [98.610505, 33.682805], + [98.6567, 33.64744], + [98.61728, 33.637476], + [98.622824, 33.610067], + [98.652389, 33.595114], + [98.648077, 33.548741], + [98.678258, 33.522801], + [98.725686, 33.503341], + [98.742316, 33.477887], + [98.736157, 33.406975], + [98.779888, 33.370497], + [98.759562, 33.276985], + [98.802062, 33.270481], + [98.804526, 33.219428], + [98.858728, 33.150811], + [98.92217, 33.118738], + [98.967134, 33.115229], + [98.971445, 33.098185], + [99.014561, 33.081137], + [99.024416, 33.094675], + [99.090322, 33.079131], + [99.124814, 33.046028], + [99.196263, 33.035493], + [99.214741, 32.991332], + [99.235067, 32.982296], + [99.24677, 32.924043], + [99.268944, 32.878318], + [99.353944, 32.885354], + [99.376118, 32.899927], + [99.45311, 32.862233], + [99.558436, 32.839106], + [99.589233, 32.789312], + [99.640355, 32.790822], + [99.646515, 32.774721], + [99.700718, 32.76667], + [99.717964, 32.732443], + [99.760464, 32.769689], + [99.766623, 32.826032], + [99.791877, 32.883344], + [99.764159, 32.924545], + [99.788181, 32.956689], + [99.805427, 32.940619], + [99.851007, 32.941623], + [99.877492, 32.993339], + [99.877492, 33.045527], + [99.947709, 32.986814], + [99.956332, 32.948152], + [100.038252, 32.929066], + [100.029629, 32.895907], + [100.064738, 32.895907], + [100.123252, 32.837095], + [100.117093, 32.802392], + [100.139266, 32.724388], + [100.088143, 32.668988], + [100.109701, 32.640268], + [100.189773, 32.630692], + [100.208252, 32.606497], + [100.229809, 32.650346], + [100.231041, 32.696189], + [100.258759, 32.742511], + [100.339447, 32.719353], + [100.399193, 32.756101], + [100.378251, 32.698707], + [100.420135, 32.73194], + [100.450932, 32.694678], + [100.470026, 32.694678], + [100.516837, 32.632204], + [100.54517, 32.569687], + [100.603069, 32.553547], + [100.645568, 32.526303], + [100.657887, 32.546484], + [100.661583, 32.616075], + [100.673286, 32.628172], + [100.710242, 32.610026], + [100.71209, 32.645307], + [100.690532, 32.678056], + [100.77122, 32.643795], + [100.834046, 32.648835], + [100.887633, 32.632708], + [100.93198, 32.600447], + [100.956618, 32.621116], + [100.99727, 32.627668], + [101.030531, 32.660424], + [101.077342, 32.68259], + [101.124769, 32.658408], + [101.157414, 32.661431], + [101.22332, 32.725898], + [101.237486, 32.825026], + [101.223935, 32.855698], + [101.178356, 32.892892], + [101.124153, 32.909976], + [101.134624, 32.95217], + [101.129081, 32.989324], + [101.183899, 32.984304], + [101.171581, 33.009902], + [101.184515, 33.041514], + [101.146327, 33.056563], + [101.143863, 33.086151], + [101.169733, 33.10019], + [101.11553, 33.194893], + [101.124769, 33.221431], + [101.156798, 33.236449], + [101.182668, 33.26948], + [101.217776, 33.256469], + [101.297232, 33.262475], + [101.381616, 33.153316], + [101.393935, 33.157826], + [101.386543, 33.207412], + [101.403174, 33.225436], + [101.487557, 33.226938], + [101.515275, 33.192889], + [101.557775, 33.167344], + [101.633535, 33.101193], + [101.661252, 33.135778], + [101.653861, 33.162835], + [101.709912, 33.21292], + [101.735781, 33.279987], + [101.677883, 33.297497], + [101.64955, 33.323004], + [101.663716, 33.383991], + [101.695745, 33.433948], + [101.769042, 33.45592], + [101.777665, 33.533776], + [101.769042, 33.538765], + [101.748716, 33.505337], + [101.718535, 33.494857], + [101.622448, 33.502343], + [101.611977, 33.565199], + [101.616905, 33.598603], + [101.585492, 33.645448], + [101.58426, 33.674339], + [101.501724, 33.702723], + [101.428427, 33.680315], + [101.424732, 33.655411], + [101.385312, 33.644949], + [101.302776, 33.657902], + [101.23687, 33.685793], + [101.217776, 33.669856], + [101.166653, 33.659894], + [101.177124, 33.685295], + [101.162957, 33.719649], + [101.186363, 33.741051], + [101.190675, 33.791796], + [101.153102, 33.823124], + [101.153718, 33.8445], + [101.054552, 33.863386], + [101.023139, 33.896178], + [100.994806, 33.891707], + [100.965857, 33.946832], + [100.927669, 33.975126], + [100.93506, 33.990013], + [100.880857, 34.036644], + [100.870386, 34.083744], + [100.848828, 34.089692], + [100.806329, 34.155584], + [100.764445, 34.178857], + [100.809408, 34.247153], + [100.798321, 34.260014], + [100.821727, 34.317371], + [100.868538, 34.332693], + [100.895024, 34.375183], + [100.951074, 34.38358], + [100.986799, 34.374689], + [101.054552, 34.322808], + [101.098284, 34.329233], + [101.178356, 34.320831], + [101.193754, 34.336646], + [101.235022, 34.325279], + [101.228863, 34.298586], + [101.268899, 34.278808], + [101.325565, 34.268423], + [101.327413, 34.24468], + [101.369913, 34.248143], + [101.417956, 34.227858], + [101.482014, 34.218951], + [101.492485, 34.195689], + [101.53868, 34.212022], + [101.6206, 34.178857], + [101.674187, 34.110506], + [101.703136, 34.119424], + [101.718535, 34.083249], + [101.736397, 34.080275], + [101.764114, 34.122892], + [101.788136, 34.131809], + [101.836795, 34.124378], + [101.851578, 34.153108], + [101.874367, 34.130323], + [101.897773, 34.133791], + [101.955055, 34.109514], + [101.965526, 34.167469], + [102.003099, 34.162022], + [102.030816, 34.190739], + [102.01357, 34.218456], + [102.062229, 34.227858], + [102.067772, 34.293642], + [102.149692, 34.271885], + [102.186649, 34.352952], + [102.237156, 34.34307], + [102.237156, 34.34307], + [102.259329, 34.355917], + [102.205743, 34.407777], + [102.169402, 34.457631], + [102.155852, 34.507456], + [102.139837, 34.50351], + [102.093026, 34.536547], + [102.001867, 34.538519], + [101.97415, 34.548871], + [101.956287, 34.582876], + [101.934729, 34.58731], + [101.919947, 34.621791], + [101.917483, 34.705964], + [101.923027, 34.835746], + [101.916867, 34.873561], + [101.985852, 34.90007], + [102.068388, 34.887798], + [102.048062, 34.910868], + [102.094874, 34.986901], + [102.133678, 35.014844], + [102.157699, 35.010923], + [102.176178, 35.032977], + [102.211286, 35.034937], + [102.218062, 35.057475], + [102.252554, 35.048657], + [102.29567, 35.071681], + [102.310452, 35.128967], + [102.346793, 35.164201], + [102.404075, 35.179366], + [102.365887, 35.235599], + [102.370199, 35.263946], + [102.3123, 35.282512], + [102.280887, 35.303028], + [102.311684, 35.31426], + [102.317844, 35.343067], + [102.287663, 35.36552], + [102.293822, 35.424063], + [102.314764, 35.434303], + [102.408387, 35.409431], + [102.447807, 35.437229], + [102.437952, 35.455268], + [102.49893, 35.545403], + [102.503241, 35.585322], + [102.531575, 35.580455], + [102.570995, 35.548324], + [102.695414, 35.528358], + [102.743458, 35.494745], + [102.782878, 35.527871], + [102.729291, 35.523487], + [102.746537, 35.545403], + [102.808747, 35.560496], + [102.763168, 35.612086], + [102.7644, 35.653431], + [102.744074, 35.657807], + [102.707733, 35.70496], + [102.686175, 35.771996], + [102.715125, 35.815685], + [102.739146, 35.821023], + [102.787189, 35.862745], + [102.81737, 35.850133], + [102.914073, 35.845282], + [102.94487, 35.829757], + [102.954725, 35.858864], + [102.942406, 35.92674], + [102.971971, 35.995525], + [102.951645, 36.021667], + [102.968276, 36.044414], + [102.932551, 36.048285], + [102.882044, 36.082632], + [102.941174, 36.104877], + [102.948566, 36.150798], + [102.965812, 36.151765], + [102.986754, 36.193312], + [103.048964, 36.199107], + [103.066826, 36.216974], + [103.021246, 36.232906], + [103.024942, 36.256556], + [102.922696, 36.298047], + [102.896827, 36.331803], + [102.845704, 36.331803], + [102.836465, 36.344819], + [102.829689, 36.365544] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 640000, + "name": "宁夏回族自治区", + "center": [106.278179, 38.46637], + "centroid": [106.169866, 37.291332], + "childrenNum": 5, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 29, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [107.268764, 37.099367], + [107.281083, 37.127047], + [107.306952, 37.100799], + [107.334669, 37.138975], + [107.336517, 37.165687], + [107.317423, 37.200017], + [107.270612, 37.229089], + [107.309416, 37.239095], + [107.273075, 37.29101], + [107.257677, 37.337179], + [107.282931, 37.437036], + [107.284162, 37.481691], + [107.345756, 37.518725], + [107.369162, 37.58752], + [107.330358, 37.584201], + [107.311264, 37.609806], + [107.361155, 37.613125], + [107.422133, 37.665254], + [107.389488, 37.671413], + [107.387024, 37.691305], + [107.425828, 37.684201], + [107.484959, 37.706458], + [107.499125, 37.765619], + [107.57119, 37.776499], + [107.599523, 37.791162], + [107.620465, 37.776026], + [107.646335, 37.805349], + [107.659269, 37.844112], + [107.65003, 37.86443], + [107.560719, 37.893717], + [107.49235, 37.944706], + [107.448618, 37.933378], + [107.411662, 37.948009], + [107.440611, 37.995659], + [107.3938, 38.014993], + [107.33159, 38.086625], + [107.240431, 38.111586], + [107.19054, 38.153953], + [107.138801, 38.161011], + [107.119091, 38.134185], + [107.071047, 38.138892], + [107.051337, 38.122886], + [107.010069, 38.120532], + [106.942316, 38.132302], + [106.858548, 38.156306], + [106.779092, 38.171833], + [106.737824, 38.197706], + [106.654672, 38.22921], + [106.627571, 38.232501], + [106.555506, 38.263521], + [106.482209, 38.319417], + [106.599854, 38.389812], + [106.647897, 38.470917], + [106.66268, 38.601524], + [106.709491, 38.718821], + [106.756302, 38.748699], + [106.837606, 38.847579], + [106.954019, 38.941202], + [106.971881, 39.026333], + [106.96757, 39.054688], + [106.933693, 39.076527], + [106.878874, 39.091392], + [106.859164, 39.107648], + [106.825288, 39.19397], + [106.795723, 39.214375], + [106.790795, 39.241263], + [106.806193, 39.277407], + [106.806809, 39.318625], + [106.781556, 39.371849], + [106.751375, 39.381564], + [106.683622, 39.357506], + [106.643586, 39.357969], + [106.602318, 39.37555], + [106.556122, 39.322329], + [106.525325, 39.308439], + [106.511774, 39.272311], + [106.402753, 39.291767], + [106.280181, 39.262118], + [106.29558, 39.167992], + [106.285109, 39.146181], + [106.251232, 39.131327], + [106.192718, 39.142932], + [106.170544, 39.163352], + [106.145907, 39.153142], + [106.096631, 39.084889], + [106.078153, 39.026333], + [106.087392, 39.006339], + [106.060907, 38.96866], + [106.021487, 38.953769], + [105.97098, 38.909077], + [105.992538, 38.857366], + [105.909386, 38.791159], + [105.908154, 38.737496], + [105.88598, 38.716953], + [105.894603, 38.696405], + [105.852719, 38.641735], + [105.874277, 38.593105], + [105.856415, 38.569714], + [105.863806, 38.53508], + [105.836705, 38.476071], + [105.850872, 38.443736], + [105.827466, 38.432486], + [105.835473, 38.387467], + [105.821307, 38.366824], + [105.86627, 38.296406], + [105.842248, 38.240962], + [105.802828, 38.220277], + [105.775111, 38.186887], + [105.76772, 38.121474], + [105.780655, 38.084741], + [105.840401, 38.004147], + [105.799749, 37.939986], + [105.80406, 37.862068], + [105.760944, 37.799674], + [105.677177, 37.771769], + [105.622358, 37.777919], + [105.616199, 37.722555], + [105.598952, 37.699356], + [105.467141, 37.695094], + [105.4037, 37.710246], + [105.315004, 37.702197], + [105.221998, 37.677097], + [105.187505, 37.657674], + [105.111128, 37.633981], + [105.027977, 37.580881], + [104.866601, 37.566651], + [104.805007, 37.539133], + [104.623305, 37.522522], + [104.433595, 37.515402], + [104.419429, 37.511604], + [104.407726, 37.464592], + [104.322726, 37.44844], + [104.287002, 37.428007], + [104.298705, 37.414223], + [104.365226, 37.418026], + [104.437907, 37.445589], + [104.448994, 37.42468], + [104.499501, 37.421353], + [104.521059, 37.43466], + [104.679971, 37.408044], + [104.662109, 37.367626], + [104.713848, 37.329566], + [104.673812, 37.317668], + [104.651022, 37.290534], + [104.624536, 37.298627], + [104.600515, 37.242907], + [104.638087, 37.201923], + [104.717543, 37.208597], + [104.776673, 37.246718], + [104.85613, 37.211933], + [104.864753, 37.17284], + [104.888158, 37.15901], + [104.914644, 37.097935], + [104.954064, 37.077407], + [104.95468, 37.040156], + [105.004571, 37.035378], + [105.03968, 37.007187], + [105.05939, 37.022956], + [105.128991, 36.996194], + [105.165331, 36.99476], + [105.185657, 36.942164], + [105.178882, 36.892403], + [105.244787, 36.894796], + [105.279896, 36.86751], + [105.303302, 36.820575], + [105.334714, 36.80093], + [105.340874, 36.764502], + [105.319932, 36.742924], + [105.275584, 36.752515], + [105.272505, 36.739567], + [105.218302, 36.730455], + [105.201056, 36.700711], + [105.225693, 36.664716], + [105.22015, 36.631105], + [105.261418, 36.602764], + [105.2762, 36.563358], + [105.252179, 36.553263], + [105.281744, 36.522489], + [105.322396, 36.535954], + [105.362432, 36.496514], + [105.363048, 36.443093], + [105.398156, 36.430575], + [105.401236, 36.369881], + [105.425873, 36.330357], + [105.455439, 36.321678], + [105.476381, 36.293224], + [105.45975, 36.268137], + [105.460366, 36.223733], + [105.478844, 36.213111], + [105.515185, 36.147415], + [105.491163, 36.101009], + [105.430801, 36.10391], + [105.406163, 36.074409], + [105.343954, 36.033767], + [105.324859, 35.941761], + [105.350113, 35.875839], + [105.39754, 35.857409], + [105.371055, 35.844312], + [105.38091, 35.792873], + [105.408627, 35.822479], + [105.428953, 35.819082], + [105.432033, 35.787533], + [105.457286, 35.771511], + [105.481924, 35.727312], + [105.595873, 35.715651], + [105.667322, 35.749657], + [105.70243, 35.733142], + [105.759097, 35.724883], + [105.740618, 35.698643], + [105.723988, 35.725854], + [105.690727, 35.698643], + [105.722756, 35.673366], + [105.713517, 35.650513], + [105.759097, 35.634464], + [105.762176, 35.602841], + [105.800365, 35.564878], + [105.816379, 35.575101], + [105.847176, 35.490359], + [105.868734, 35.540046], + [105.900147, 35.54735], + [106.017175, 35.519103], + [106.023335, 35.49377], + [106.047356, 35.498155], + [106.078769, 35.509848], + [106.071994, 35.463555], + [106.06953, 35.458193], + [106.073842, 35.45478], + [106.073226, 35.450393], + [106.071378, 35.449418], + [106.073226, 35.447468], + [106.083081, 35.421624], + [106.113262, 35.361616], + [106.129892, 35.393333], + [106.173008, 35.437716], + [106.196414, 35.409919], + [106.237681, 35.409431], + [106.241377, 35.358687], + [106.319601, 35.265411], + [106.363333, 35.238532], + [106.368261, 35.273718], + [106.415688, 35.276161], + [106.472354, 35.310842], + [106.501304, 35.364056], + [106.503767, 35.415284], + [106.483441, 35.450393], + [106.490217, 35.480613], + [106.465579, 35.481101], + [106.440941, 35.52641], + [106.460036, 35.578995], + [106.47913, 35.575101], + [106.460036, 35.643705], + [106.434782, 35.688436], + [106.49268, 35.732656], + [106.506231, 35.737514], + [106.566593, 35.738971], + [106.595542, 35.727312], + [106.620796, 35.743829], + [106.633115, 35.714679], + [106.66268, 35.70739], + [106.674998, 35.728284], + [106.750759, 35.689408], + [106.750759, 35.725369], + [106.806193, 35.70982], + [106.819128, 35.7448], + [106.867171, 35.738485], + [106.868403, 35.771996], + [106.897353, 35.759856], + [106.927534, 35.810346], + [106.849925, 35.887476], + [106.912751, 35.93207], + [106.940468, 35.931101], + [106.93862, 35.952905], + [106.90228, 35.943699], + [106.94786, 35.988262], + [106.928149, 36.011502], + [106.940468, 36.064734], + [106.957715, 36.091337], + [106.925686, 36.115997], + [106.930613, 36.138716], + [106.873947, 36.178338], + [106.873947, 36.178338], + [106.858548, 36.206834], + [106.858548, 36.206834], + [106.833295, 36.229044], + [106.808657, 36.21118], + [106.772933, 36.212628], + [106.735976, 36.23725], + [106.698404, 36.244008], + [106.685469, 36.273445], + [106.647897, 36.259451], + [106.559202, 36.292259], + [106.54134, 36.25366], + [106.504383, 36.266207], + [106.470507, 36.306246], + [106.497608, 36.31348], + [106.510543, 36.379037], + [106.492064, 36.422389], + [106.523477, 36.468605], + [106.494528, 36.494589], + [106.455724, 36.496995], + [106.39721, 36.548455], + [106.37134, 36.549417], + [106.363949, 36.577296], + [106.392282, 36.556628], + [106.397826, 36.576816], + [106.444637, 36.557109], + [106.465579, 36.583063], + [106.444637, 36.624861], + [106.491448, 36.628703], + [106.490833, 36.685835], + [106.530869, 36.690154], + [106.519782, 36.708868], + [106.519782, 36.708868], + [106.514238, 36.715584], + [106.59431, 36.750118], + [106.644817, 36.72278], + [106.627571, 36.752995], + [106.657752, 36.820575], + [106.637426, 36.867031], + [106.637426, 36.867031], + [106.626955, 36.892403], + [106.609709, 36.878521], + [106.609709, 36.878521], + [106.601702, 36.918244], + [106.549347, 36.941685], + [106.540108, 36.984244], + [106.595542, 36.94025], + [106.594926, 36.967988], + [106.64297, 36.962729], + [106.646665, 37.000496], + [106.666991, 37.016745], + [106.645433, 37.064992], + [106.605397, 37.127524], + [106.6171, 37.135158], + [106.673151, 37.1113], + [106.687933, 37.12991], + [106.728585, 37.121321], + [106.750143, 37.09889], + [106.772933, 37.120367], + [106.776012, 37.158056], + [106.818512, 37.141838], + [106.891193, 37.098413], + [106.912135, 37.110345], + [106.905976, 37.151378], + [106.998367, 37.106527], + [107.031011, 37.108436], + [107.030395, 37.140883], + [107.095685, 37.115595], + [107.133873, 37.134681], + [107.181916, 37.143269], + [107.234887, 37.096503], + [107.268764, 37.099367] + ] + ], + [ + [ + [106.048588, 35.488898], + [105.897683, 35.451368], + [105.894603, 35.413821], + [106.002393, 35.438692], + [106.034422, 35.469404], + [106.054132, 35.45478], + [106.048588, 35.488898] + ] + ], + [ + [ + [106.073842, 35.45478], + [106.06953, 35.458193], + [106.071378, 35.449418], + [106.073226, 35.450393], + [106.073842, 35.45478] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 650000, + "name": "新疆维吾尔自治区", + "center": [87.617733, 43.792818], + "centroid": [85.294711, 41.371801], + "childrenNum": 24, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 30, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [96.386348, 42.727592], + [96.363558, 42.900562], + [95.921314, 43.229789], + [95.880046, 43.28035], + [95.857872, 43.417436], + [95.735916, 43.597569], + [95.705735, 43.67077], + [95.645373, 43.787966], + [95.623199, 43.855756], + [95.527113, 44.007466], + [95.426099, 44.009618], + [95.377439, 44.025972], + [95.326932, 44.028554], + [95.35157, 44.090054], + [95.355882, 44.166087], + [95.376208, 44.227444], + [95.4107, 44.245024], + [95.43041, 44.281882], + [95.41378, 44.298589], + [95.238853, 44.277169], + [95.1286, 44.269884], + [94.998637, 44.253169], + [94.945666, 44.292592], + [94.826174, 44.320001], + [94.768275, 44.34055], + [94.722696, 44.34055], + [94.673421, 44.397021], + [94.606283, 44.448311], + [94.557008, 44.462408], + [94.470777, 44.509373], + [94.390705, 44.521749], + [94.359292, 44.515775], + [94.329727, 44.582734], + [94.279836, 44.603617], + [94.227481, 44.645785], + [94.215162, 44.667921], + [94.152336, 44.684944], + [94.066105, 44.732154], + [93.723642, 44.865498], + [93.716251, 44.894334], + [93.613389, 44.926546], + [93.509296, 44.968055], + [93.434767, 44.955351], + [93.376869, 44.985412], + [93.314659, 44.995147], + [93.314043, 44.980333], + [93.252449, 44.991761], + [93.174225, 45.015458], + [93.100312, 45.007419], + [93.062124, 45.018419], + [93.002377, 45.009958], + [92.932776, 45.017573], + [92.922921, 45.03703], + [92.884117, 45.046756], + [92.847777, 45.038721], + [92.779407, 45.050561], + [92.683937, 45.02561], + [92.547814, 45.018419], + [92.501003, 45.001072], + [92.414155, 45.018419], + [92.348866, 45.014188], + [92.315605, 45.028994], + [92.240461, 45.015881], + [92.100026, 45.081417], + [92.056911, 45.086911], + [91.885679, 45.078882], + [91.803144, 45.082685], + [91.694738, 45.065357], + [91.561695, 45.075501], + [91.500101, 45.103809], + [91.448978, 45.156586], + [91.429268, 45.156586], + [91.37753, 45.11099], + [91.33503, 45.129571], + [91.242023, 45.13717], + [91.230936, 45.153632], + [91.195827, 45.159118], + [91.17119, 45.199616], + [91.129922, 45.21606], + [91.050466, 45.208892], + [91.007966, 45.218589], + [90.96177, 45.201303], + [90.881698, 45.192025], + [90.866916, 45.209314], + [90.897713, 45.249776], + [90.877387, 45.280946], + [90.831807, 45.300313], + [90.804706, 45.29484], + [90.813329, 45.32851], + [90.773909, 45.405874], + [90.772677, 45.432338], + [90.723402, 45.464667], + [90.671047, 45.487747], + [90.676591, 45.582488], + [90.714779, 45.728895], + [90.799778, 45.834905], + [90.890937, 45.921566], + [91.028292, 46.023054], + [91.014741, 46.06667], + [91.021517, 46.121038], + [90.98456, 46.160431], + [90.94822, 46.219262], + [90.955611, 46.233752], + [90.900177, 46.31235], + [90.983328, 46.374734], + [90.996263, 46.419309], + [91.025828, 46.444057], + [91.038147, 46.500936], + [91.060937, 46.516999], + [91.079415, 46.558989], + [91.068328, 46.579149], + [91.017821, 46.58244], + [91.036299, 46.670393], + [91.054161, 46.717598], + [91.019053, 46.766402], + [90.992567, 46.769682], + [90.992567, 46.790583], + [90.942676, 46.82581], + [90.958075, 46.879425], + [90.929742, 46.893331], + [90.92235, 46.938707], + [90.901408, 46.960768], + [90.830575, 46.995883], + [90.767134, 46.992617], + [90.691989, 47.080717], + [90.653801, 47.111681], + [90.579888, 47.198364], + [90.56141, 47.206903], + [90.521374, 47.2845], + [90.488113, 47.317374], + [90.526301, 47.379007], + [90.507823, 47.400076], + [90.468403, 47.404937], + [90.459164, 47.43895], + [90.474562, 47.462422], + [90.468403, 47.497611], + [90.398186, 47.547724], + [90.376012, 47.603036], + [90.346447, 47.637324], + [90.384635, 47.644179], + [90.331665, 47.681663], + [90.216484, 47.70543], + [90.180144, 47.72516], + [90.13518, 47.723147], + [90.07605, 47.777469], + [90.070506, 47.820483], + [90.086521, 47.86547], + [90.066195, 47.883534], + [90.040941, 47.874704], + [89.960253, 47.885942], + [89.957789, 47.842982], + [89.86971, 47.834144], + [89.761921, 47.835751], + [89.735435, 47.89758], + [89.651052, 47.913627], + [89.645508, 47.947711], + [89.595617, 47.973359], + [89.599313, 48.015811], + [89.569132, 48.037825], + [89.498299, 48.02822], + [89.38127, 48.046227], + [89.359712, 48.026219], + [89.308589, 48.021816], + [89.282104, 47.994189], + [89.231597, 47.98017], + [89.156452, 47.996992], + [89.078228, 47.98698], + [89.044967, 48.009806], + [89.027105, 48.051028], + [88.953808, 48.090618], + [88.939026, 48.115396], + [88.824461, 48.107005], + [88.79736, 48.133772], + [88.721599, 48.160526], + [88.700657, 48.180881], + [88.668628, 48.171303], + [88.638447, 48.183674], + [88.601491, 48.221567], + [88.594716, 48.259831], + [88.575006, 48.277757], + [88.605803, 48.337863], + [88.573774, 48.351785], + [88.573158, 48.369679], + [88.535586, 48.368884], + [88.523267, 48.403461], + [88.503557, 48.412996], + [88.462289, 48.392335], + [88.438267, 48.393528], + [88.360659, 48.433251], + [88.363123, 48.460641], + [88.318159, 48.478497], + [88.229464, 48.498329], + [88.196819, 48.493967], + [88.151855, 48.526478], + [88.130297, 48.521721], + [88.10874, 48.545895], + [88.041602, 48.548272], + [87.973233, 48.575997], + [87.96153, 48.599353], + [88.010805, 48.618742], + [88.02682, 48.65315], + [88.089645, 48.69504], + [88.090877, 48.71992], + [88.064392, 48.712813], + [88.029283, 48.750313], + [87.96153, 48.773588], + [87.93874, 48.757809], + [87.872219, 48.799612], + [87.826639, 48.800795], + [87.803234, 48.824835], + [87.829103, 48.825623], + [87.792147, 48.849258], + [87.78106, 48.872094], + [87.742256, 48.881146], + [87.760118, 48.925992], + [87.793995, 48.927565], + [87.814321, 48.945256], + [87.87653, 48.949186], + [87.871603, 48.963726], + [87.911639, 48.979833], + [87.883922, 48.993971], + [87.883306, 49.023806], + [87.835263, 49.054406], + [87.858052, 49.07362], + [87.844502, 49.090084], + [87.867291, 49.108892], + [87.845733, 49.146096], + [87.82048, 49.148445], + [87.821096, 49.173883], + [87.793379, 49.18249], + [87.762582, 49.172709], + [87.700372, 49.175839], + [87.67635, 49.15549], + [87.602437, 49.152359], + [87.563017, 49.142572], + [87.517438, 49.145704], + [87.49588, 49.132001], + [87.511894, 49.10184], + [87.43675, 49.075188], + [87.388707, 49.097921], + [87.304939, 49.112418], + [87.239033, 49.114376], + [87.211932, 49.140615], + [87.112766, 49.15549], + [87.088128, 49.133567], + [87.000049, 49.142572], + [86.953853, 49.131218], + [86.887948, 49.132001], + [86.854071, 49.109284], + [86.84976, 49.066563], + [86.836209, 49.051269], + [86.772151, 49.02773], + [86.732115, 48.994757], + [86.730267, 48.959797], + [86.757985, 48.894919], + [86.782006, 48.887049], + [86.821426, 48.850439], + [86.818963, 48.831139], + [86.770303, 48.810255], + [86.754289, 48.78463], + [86.780774, 48.731369], + [86.771535, 48.717156], + [86.70255, 48.666195], + [86.693311, 48.64366], + [86.640956, 48.629027], + [86.635413, 48.612016], + [86.594761, 48.576789], + [86.579978, 48.538763], + [86.416138, 48.481671], + [86.38103, 48.49357], + [86.305269, 48.491984], + [86.270161, 48.452307], + [86.225813, 48.432456], + [86.053966, 48.441192], + [85.916612, 48.438015], + [85.791576, 48.418954], + [85.758315, 48.403064], + [85.695489, 48.335078], + [85.695489, 48.302445], + [85.678243, 48.266205], + [85.633895, 48.232731], + [85.622193, 48.202824], + [85.587084, 48.191654], + [85.576613, 48.15853], + [85.55136, 48.127781], + [85.551975, 48.081423], + [85.531649, 48.046227], + [85.547048, 48.008205], + [85.617881, 47.550552], + [85.614801, 47.498015], + [85.685018, 47.428829], + [85.701649, 47.384275], + [85.675779, 47.321837], + [85.701033, 47.28856], + [85.682555, 47.249982], + [85.682555, 47.222757], + [85.641903, 47.18413], + [85.582772, 47.142626], + [85.547048, 47.096609], + [85.545816, 47.057891], + [85.441106, 47.063191], + [85.355491, 47.054629], + [85.325926, 47.044842], + [85.276651, 47.068898], + [85.213825, 47.041172], + [85.175637, 46.997924], + [85.102956, 46.968936], + [85.082014, 46.939933], + [84.987159, 46.918272], + [84.979768, 46.883106], + [84.95513, 46.861013], + [84.934188, 46.863878], + [84.867051, 46.927673], + [84.849189, 46.957092], + [84.781435, 46.979962], + [84.748175, 47.009759], + [84.699515, 47.008535], + [84.668718, 46.995067], + [84.563393, 46.991801], + [84.506726, 46.97302], + [84.425422, 47.008943], + [84.37122, 46.993434], + [84.336727, 47.00527], + [84.2893, 46.994658], + [84.195061, 47.003638], + [84.150098, 46.977512], + [84.086656, 46.965261], + [84.038613, 46.973428], + [84.002888, 46.990576], + [83.951765, 46.98731], + [83.932671, 46.970161], + [83.88586, 46.982003], + [83.766367, 47.026896], + [83.69923, 47.015472], + [83.700462, 47.032199], + [83.576042, 47.059114], + [83.566803, 47.080717], + [83.53847, 47.083977], + [83.463325, 47.132042], + [83.418978, 47.119012], + [83.370318, 47.178436], + [83.324739, 47.167858], + [83.306261, 47.179656], + [83.257602, 47.173147], + [83.221877, 47.186977], + [83.207094, 47.213814], + [83.17445, 47.218286], + [83.15474, 47.236168], + [83.108544, 47.221944], + [83.02724, 47.21544], + [83.031552, 47.168265], + [82.993364, 47.065229], + [82.937929, 47.014248], + [82.923762, 46.932169], + [82.876335, 46.823762], + [82.878183, 46.797138], + [82.829524, 46.772551], + [82.788872, 46.677784], + [82.774089, 46.600124], + [82.726662, 46.494756], + [82.609017, 46.294985], + [82.518474, 46.153798], + [82.461808, 45.97982], + [82.401446, 45.972333], + [82.342932, 45.935303], + [82.336156, 45.882418], + [82.349707, 45.822811], + [82.340468, 45.772742], + [82.289961, 45.71636], + [82.288729, 45.655321], + [82.266555, 45.620172], + [82.281954, 45.53891], + [82.448257, 45.461309], + [82.546808, 45.426038], + [82.60101, 45.346178], + [82.58746, 45.224069], + [82.562822, 45.204676], + [82.487061, 45.181058], + [82.344779, 45.219011], + [82.294272, 45.247669], + [82.206809, 45.236713], + [82.109491, 45.211422], + [82.091012, 45.222383], + [82.09594, 45.249776], + [82.052824, 45.255674], + [81.993078, 45.237978], + [81.921013, 45.233342], + [81.879745, 45.284314], + [81.832318, 45.319673], + [81.78797, 45.3836], + [81.677101, 45.35459], + [81.645072, 45.359216], + [81.582863, 45.336503], + [81.575471, 45.30789], + [81.536667, 45.304101], + [81.52866, 45.285999], + [81.462754, 45.264099], + [81.437501, 45.28263], + [81.398697, 45.275471], + [81.382066, 45.257781], + [81.327864, 45.260729], + [81.284748, 45.23882], + [81.236705, 45.247248], + [81.175111, 45.227863], + [81.170183, 45.211001], + [81.111669, 45.218168], + [81.080872, 45.182745], + [81.024821, 45.162916], + [80.966307, 45.168402], + [80.93551, 45.160384], + [80.897938, 45.127459], + [80.862214, 45.127037], + [80.816634, 45.152788], + [80.731634, 45.156164], + [80.686055, 45.129148], + [80.599207, 45.105921], + [80.519135, 45.108878], + [80.493882, 45.127037], + [80.445839, 45.097895], + [80.443991, 45.077614], + [80.404571, 45.049293], + [80.358375, 45.040836], + [80.328194, 45.070007], + [80.291854, 45.06578], + [80.24381, 45.031532], + [80.195767, 45.030686], + [80.144644, 45.059017], + [80.136021, 45.041259], + [80.111999, 45.052675], + [80.060876, 45.026033], + [80.056565, 45.011227], + [79.98142, 44.964244], + [79.951855, 44.957892], + [79.944464, 44.937985], + [79.887798, 44.90917], + [79.969102, 44.877797], + [79.953703, 44.849377], + [79.991891, 44.830281], + [79.999283, 44.793768], + [80.087978, 44.817122], + [80.115695, 44.815424], + [80.169898, 44.84471], + [80.18776, 44.825612], + [80.178521, 44.796741], + [80.200695, 44.756808], + [80.238883, 44.7228], + [80.313412, 44.704938], + [80.400259, 44.628751], + [80.411962, 44.605321], + [80.350368, 44.484615], + [80.383013, 44.401297], + [80.399027, 44.30587], + [80.413194, 44.264741], + [80.400875, 44.198704], + [80.407034, 44.149772], + [80.3941, 44.127009], + [80.449534, 44.078017], + [80.458773, 44.047054], + [80.457541, 43.981203], + [80.485259, 43.95579], + [80.475404, 43.938124], + [80.511128, 43.906657], + [80.522215, 43.816473], + [80.75504, 43.494329], + [80.761199, 43.446554], + [80.746417, 43.439167], + [80.735946, 43.389609], + [80.686055, 43.333916], + [80.69283, 43.32042], + [80.777214, 43.308227], + [80.769207, 43.265535], + [80.788917, 43.242433], + [80.789533, 43.201876], + [80.804315, 43.178314], + [80.79446, 43.137277], + [80.752576, 43.148194], + [80.73225, 43.131163], + [80.706997, 43.143828], + [80.650946, 43.147321], + [80.593048, 43.133347], + [80.556092, 43.104515], + [80.482795, 43.06955], + [80.416889, 43.05687], + [80.378701, 43.031502], + [80.397795, 42.996933], + [80.487106, 42.948766], + [80.5912, 42.923354], + [80.602903, 42.894424], + [80.503737, 42.882146], + [80.450766, 42.861971], + [80.407034, 42.834767], + [80.338049, 42.831695], + [80.280151, 42.838278], + [80.262289, 42.828623], + [80.259209, 42.790865], + [80.225948, 42.713083], + [80.228412, 42.692852], + [80.179753, 42.670415], + [80.163738, 42.629919], + [80.180985, 42.590718], + [80.221637, 42.533415], + [80.265368, 42.502097], + [80.225948, 42.485769], + [80.206238, 42.431462], + [80.239499, 42.389927], + [80.229028, 42.358536], + [80.283847, 42.320493], + [80.272144, 42.281984], + [80.29247, 42.259842], + [80.28631, 42.233261], + [80.233339, 42.210215], + [80.168666, 42.200462], + [80.163738, 42.152563], + [80.139717, 42.151232], + [80.16805, 42.096635], + [80.193303, 42.081535], + [80.14218, 42.03488], + [80.089826, 42.047325], + [79.923522, 42.042436], + [79.852689, 42.015319], + [79.854537, 41.984186], + [79.822508, 41.963275], + [79.776313, 41.89248], + [79.724574, 41.896935], + [79.640806, 41.884907], + [79.616784, 41.856385], + [79.550879, 41.834094], + [79.500988, 41.835432], + [79.457256, 41.847915], + [79.415372, 41.836769], + [79.356242, 41.795735], + [79.326061, 41.809565], + [79.276786, 41.78101], + [79.271858, 41.767174], + [79.21704, 41.725648], + [79.138199, 41.722968], + [79.10925, 41.697503], + [79.043345, 41.681414], + [79.021787, 41.657273], + [78.99407, 41.664427], + [78.957729, 41.65146], + [78.891824, 41.597777], + [78.86657, 41.593749], + [78.825302, 41.560173], + [78.739071, 41.555695], + [78.696571, 41.54181], + [78.707042, 41.522098], + [78.675629, 41.50238], + [78.650375, 41.467411], + [78.580774, 41.481759], + [78.527188, 41.440947], + [78.454507, 41.412228], + [78.391681, 41.408189], + [78.385522, 41.394721], + [78.338094, 41.397415], + [78.324544, 41.384395], + [78.235232, 41.399211], + [78.163783, 41.383497], + [78.149617, 41.368228], + [78.165015, 41.340825], + [78.136682, 41.279239], + [78.129291, 41.228398], + [78.094798, 41.224347], + [77.972842, 41.173013], + [77.905089, 41.185174], + [77.836104, 41.153189], + [77.814546, 41.13426], + [77.807155, 41.091876], + [77.829328, 41.059394], + [77.796068, 41.049014], + [77.780669, 41.022832], + [77.737553, 41.032313], + [77.684583, 41.00793], + [77.654402, 41.016059], + [77.597119, 41.005221], + [77.591576, 40.992122], + [77.540453, 41.006575], + [77.476395, 40.999349], + [77.473931, 41.022832], + [77.415417, 41.038633], + [77.363062, 41.04089], + [77.296541, 41.004769], + [77.236795, 41.027798], + [77.169041, 41.009285], + [77.108063, 41.038181], + [77.091433, 41.062553], + [77.023064, 41.059394], + [77.002122, 41.073381], + [76.940528, 41.028701], + [76.885709, 41.027347], + [76.85368, 40.97631], + [76.817956, 40.975406], + [76.761905, 40.954167], + [76.741579, 40.912119], + [76.731724, 40.818887], + [76.693536, 40.779472], + [76.646725, 40.759983], + [76.646725, 40.73686], + [76.676906, 40.696036], + [76.654732, 40.652917], + [76.657196, 40.620218], + [76.611, 40.601591], + [76.601145, 40.578868], + [76.556798, 40.542495], + [76.543247, 40.513837], + [76.539551, 40.464226], + [76.508754, 40.429613], + [76.470566, 40.422779], + [76.442233, 40.391336], + [76.390494, 40.37766], + [76.381871, 40.39088], + [76.333212, 40.343459], + [76.327668, 40.391336], + [76.283321, 40.415034], + [76.279625, 40.439179], + [76.22419, 40.401819], + [76.176147, 40.381307], + [76.144118, 40.393615], + [76.081293, 40.39635], + [76.048648, 40.388601], + [76.048648, 40.357141], + [76.026474, 40.355317], + [75.986438, 40.381763], + [75.932235, 40.339353], + [75.921764, 40.291439], + [75.890351, 40.30924], + [75.84046, 40.312434], + [75.831221, 40.327492], + [75.785642, 40.301025], + [75.739446, 40.299199], + [75.709265, 40.280939], + [75.688323, 40.343915], + [75.669845, 40.363982], + [75.686475, 40.418223], + [75.717272, 40.443278], + [75.733287, 40.474242], + [75.646439, 40.516567], + [75.631041, 40.548862], + [75.627345, 40.605226], + [75.636584, 40.624306], + [75.599628, 40.659727], + [75.550353, 40.64883], + [75.467817, 40.599773], + [75.432093, 40.563412], + [75.355716, 40.537947], + [75.292274, 40.483802], + [75.268869, 40.483802], + [75.242383, 40.448743], + [75.206659, 40.447833], + [75.13521, 40.463315], + [75.102565, 40.44009], + [75.051442, 40.449654], + [75.021877, 40.466958], + [74.995392, 40.455119], + [74.963363, 40.464681], + [74.891914, 40.507467], + [74.844486, 40.521117], + [74.819233, 40.505647], + [74.814921, 40.461039], + [74.795211, 40.443278], + [74.908544, 40.338897], + [74.862965, 40.32658], + [74.824776, 40.344371], + [74.700357, 40.346195], + [74.697893, 40.310153], + [74.673255, 40.278656], + [74.618437, 40.27957], + [74.577169, 40.260391], + [74.534669, 40.207851], + [74.485394, 40.182251], + [74.433039, 40.13148], + [74.356662, 40.089371], + [74.316626, 40.106767], + [74.280902, 40.09807], + [74.26304, 40.125074], + [74.126301, 40.104479], + [74.113366, 40.086624], + [74.023439, 40.085251], + [74.008041, 40.050901], + [73.943367, 40.016076], + [73.980324, 40.004617], + [73.910722, 39.934443], + [73.907027, 39.873843], + [73.845433, 39.831115], + [73.841737, 39.756163], + [73.905795, 39.741899], + [73.924273, 39.722108], + [73.953838, 39.600018], + [73.916266, 39.586644], + [73.914418, 39.564041], + [73.883621, 39.540969], + [73.893476, 39.528046], + [73.868223, 39.482794], + [73.836194, 39.472169], + [73.745651, 39.462005], + [73.6471, 39.474479], + [73.61076, 39.465702], + [73.592898, 39.412087], + [73.502355, 39.383877], + [73.554094, 39.350102], + [73.554709, 39.295935], + [73.542391, 39.269531], + [73.564564, 39.266288], + [73.580579, 39.237555], + [73.623079, 39.235237], + [73.639709, 39.220402], + [73.657571, 39.166136], + [73.688368, 39.154999], + [73.719781, 39.108112], + [73.720397, 39.071881], + [73.743187, 39.029588], + [73.780143, 39.026798], + [73.820179, 39.041674], + [73.839889, 39.008199], + [73.846665, 38.962145], + [73.826339, 38.916993], + [73.767824, 38.941202], + [73.742571, 38.933754], + [73.70931, 38.893241], + [73.699455, 38.857832], + [73.729636, 38.837324], + [73.769056, 38.775765], + [73.757353, 38.719755], + [73.809092, 38.634256], + [73.799237, 38.610878], + [73.852208, 38.584217], + [73.89902, 38.579071], + [73.926121, 38.536016], + [74.011736, 38.52478], + [74.034526, 38.541634], + [74.090577, 38.542102], + [74.068403, 38.585621], + [74.088113, 38.610878], + [74.11275, 38.611345], + [74.147859, 38.676785], + [74.229779, 38.656224], + [74.353583, 38.655757], + [74.421952, 38.647812], + [74.455829, 38.632853], + [74.506336, 38.637528], + [74.546988, 38.607604], + [74.613509, 38.593105], + [74.639995, 38.599653], + [74.717603, 38.542102], + [74.78474, 38.538357], + [74.821697, 38.491062], + [74.862965, 38.484035], + [74.868508, 38.403883], + [74.834015, 38.361193], + [74.789668, 38.324581], + [74.806914, 38.285602], + [74.793363, 38.271039], + [74.816769, 38.215576], + [74.80445, 38.167128], + [74.821697, 38.10311], + [74.879595, 38.021122], + [74.92579, 38.01735], + [74.911008, 37.966884], + [74.919015, 37.908357], + [74.936877, 37.876241], + [74.917167, 37.845057], + [74.989848, 37.797783], + [75.006478, 37.770823], + [74.949196, 37.725395], + [74.923327, 37.717347], + [74.920863, 37.684675], + [74.891914, 37.668097], + [74.940573, 37.559061], + [75.000935, 37.53059], + [75.002167, 37.511604], + [75.035428, 37.500685], + [75.078543, 37.511129], + [75.090862, 37.486915], + [75.129666, 37.459367], + [75.153072, 37.414223], + [75.125971, 37.388075], + [75.140137, 37.355258], + [75.125971, 37.322427], + [75.078543, 37.318144], + [75.018181, 37.293867], + [74.927022, 37.277678], + [74.911008, 37.233378], + [74.816153, 37.216699], + [74.800139, 37.248147], + [74.753943, 37.281011], + [74.727458, 37.282916], + [74.665864, 37.23576], + [74.642458, 37.261485], + [74.598727, 37.258151], + [74.578401, 37.231472], + [74.54514, 37.2491], + [74.511263, 37.240048], + [74.477387, 37.19954], + [74.487858, 37.161871], + [74.465068, 37.147085], + [74.496481, 37.116072], + [74.498944, 37.072155], + [74.530357, 37.082182], + [74.56793, 37.032512], + [74.617205, 37.043499], + [74.632603, 37.066425], + [74.70898, 37.084569], + [74.739161, 37.028212], + [74.792747, 37.027257], + [74.806914, 37.054485], + [74.84695, 37.056873], + [74.84387, 37.0134], + [74.86974, 36.990458], + [74.893762, 36.939772], + [74.938725, 36.94312], + [74.927638, 36.978029], + [75.005862, 36.99476], + [75.032348, 37.016745], + [75.063145, 37.006231], + [75.172166, 37.013877], + [75.16847, 36.991892], + [75.244847, 36.963207], + [75.288579, 36.974682], + [75.345861, 36.960816], + [75.413614, 36.954599], + [75.396368, 36.904367], + [75.430245, 36.873255], + [75.434556, 36.83303], + [75.425933, 36.778883], + [75.458578, 36.720861], + [75.504773, 36.743404], + [75.536802, 36.729975], + [75.537418, 36.773131], + [75.588541, 36.762584], + [75.634121, 36.771693], + [75.724048, 36.750597], + [75.8072, 36.707908], + [75.871257, 36.666636], + [75.947018, 36.590752], + [75.924228, 36.566242], + [75.991981, 36.505654], + [76.035097, 36.409386], + [75.991365, 36.35205], + [75.998757, 36.312034], + [76.055423, 36.252695], + [76.060967, 36.225182], + [76.011691, 36.229044], + [76.016619, 36.165294], + [75.96796, 36.159013], + [75.936547, 36.13485], + [75.949482, 36.070056], + [75.982742, 36.031347], + [76.028322, 36.016827], + [76.044336, 36.026991], + [76.097307, 36.022635], + [76.117017, 35.975186], + [76.16506, 35.908807], + [76.146582, 35.839946], + [76.160133, 35.82442], + [76.221727, 35.823449], + [76.228502, 35.837035], + [76.298719, 35.841401], + [76.365857, 35.82442], + [76.369552, 35.86323], + [76.431762, 35.851589], + [76.471798, 35.886021], + [76.51553, 35.881173], + [76.55803, 35.923347], + [76.59745, 35.895718], + [76.579587, 35.866625], + [76.587595, 35.840431], + [76.566037, 35.819082], + [76.593754, 35.771996], + [76.69292, 35.747714], + [76.769297, 35.653917], + [76.848753, 35.668018], + [76.906651, 35.615005], + [76.967013, 35.591649], + [76.99781, 35.611113], + [77.072339, 35.591162], + [77.093281, 35.569746], + [77.195527, 35.519103], + [77.307628, 35.540533], + [77.331649, 35.530793], + [77.355055, 35.494257], + [77.396939, 35.467942], + [77.451758, 35.46063], + [77.518895, 35.482075], + [77.578025, 35.47574], + [77.590344, 35.460143], + [77.639619, 35.45478], + [77.657481, 35.477689], + [77.690742, 35.448443], + [77.735706, 35.461605], + [77.757879, 35.497181], + [77.797299, 35.491334], + [77.816394, 35.518616], + [77.85643, 35.487436], + [77.870596, 35.495232], + [77.914944, 35.465017], + [77.917408, 35.490847], + [77.951284, 35.478664], + [78.009799, 35.491821], + [78.029509, 35.469404], + [78.048603, 35.491334], + [78.140378, 35.494745], + [78.113892, 35.466967], + [78.107117, 35.437229], + [78.046755, 35.384063], + [78.013494, 35.366008], + [78.020885, 35.315237], + [78.01719, 35.228267], + [78.060306, 35.180344], + [78.062769, 35.114772], + [78.078784, 35.100084], + [78.124979, 35.108407], + [78.150849, 35.069721], + [78.123131, 35.036897], + [78.160704, 34.990823], + [78.201972, 34.974642], + [78.182262, 34.936874], + [78.206283, 34.891726], + [78.237696, 34.882398], + [78.230921, 34.776288], + [78.21429, 34.760556], + [78.213059, 34.717771], + [78.267261, 34.705472], + [78.265413, 34.651335], + [78.280812, 34.623269], + [78.346101, 34.60406], + [78.397224, 34.605538], + [78.427405, 34.594207], + [78.436029, 34.543942], + [78.492695, 34.578441], + [78.542586, 34.574499], + [78.559832, 34.55725], + [78.562912, 34.51288], + [78.58139, 34.505483], + [78.634977, 34.538026], + [78.708274, 34.522249], + [78.715049, 34.502031], + [78.758781, 34.481807], + [78.742766, 34.45467], + [78.809288, 34.432955], + [78.878273, 34.391481], + [78.899831, 34.354929], + [78.958961, 34.386049], + [78.973128, 34.362833], + [79.039649, 34.33467], + [79.048888, 34.348506], + [79.0107, 34.399877], + [79.039033, 34.421601], + [79.072294, 34.412714], + [79.161605, 34.441345], + [79.179467, 34.422588], + [79.241677, 34.415183], + [79.274322, 34.435916], + [79.326677, 34.44332], + [79.363017, 34.428018], + [79.435082, 34.447761], + [79.504683, 34.45467], + [79.545335, 34.476381], + [79.58106, 34.456151], + [79.675914, 34.451216], + [79.699936, 34.477861], + [79.735661, 34.471447], + [79.801566, 34.478847], + [79.861312, 34.528166], + [79.84345, 34.55725], + [79.88595, 34.642965], + [79.866856, 34.671517], + [79.906892, 34.683821], + [79.898268, 34.732035], + [79.947544, 34.821008], + [79.926602, 34.849499], + [79.961094, 34.862759], + [79.996819, 34.856375], + [80.003594, 34.895162], + [80.034391, 34.902033], + [80.041782, 34.943252], + [80.02392, 34.971209], + [80.04363, 35.022196], + [80.031311, 35.034447], + [80.078123, 35.076578], + [80.118159, 35.066293], + [80.23026, 35.147565], + [80.223484, 35.177409], + [80.257977, 35.203331], + [80.362687, 35.20871], + [80.267832, 35.295701], + [80.286926, 35.35283], + [80.321419, 35.38699], + [80.375006, 35.387966], + [80.432904, 35.449418], + [80.444607, 35.417235], + [80.514824, 35.391869], + [80.532686, 35.404553], + [80.56841, 35.391381], + [80.599823, 35.409431], + [80.65649, 35.393821], + [80.690982, 35.364544], + [80.689135, 35.339162], + [80.759968, 35.334768], + [80.844351, 35.345508], + [80.894242, 35.324027], + [80.924423, 35.330862], + [80.963844, 35.310842], + [81.026053, 35.31133], + [81.002648, 35.334768], + [81.030981, 35.337209], + [81.031597, 35.380648], + [81.054387, 35.402602], + [81.09935, 35.40748], + [81.103662, 35.386015], + [81.142466, 35.365032], + [81.191741, 35.36552], + [81.219458, 35.319144], + [81.26627, 35.322562], + [81.285364, 35.345508], + [81.314313, 35.337209], + [81.363588, 35.354783], + [81.385762, 35.335256], + [81.441196, 35.333303], + [81.447972, 35.318167], + [81.504638, 35.279092], + [81.513261, 35.23511], + [81.68634, 35.235599], + [81.736847, 35.26248], + [81.804601, 35.270786], + [81.853876, 35.25857], + [81.927789, 35.271275], + [81.955506, 35.307423], + [81.99123, 35.30547], + [82.030034, 35.321585], + [82.05344, 35.35039], + [82.029419, 35.426013], + [82.034346, 35.451855], + [82.071302, 35.450393], + [82.086701, 35.467454], + [82.164925, 35.495719], + [82.189563, 35.513258], + [82.234526, 35.520565], + [82.263475, 35.547837], + [82.2992, 35.544916], + [82.328149, 35.559523], + [82.350323, 35.611113], + [82.336156, 35.651486], + [82.392823, 35.656349], + [82.424852, 35.712736], + [82.468583, 35.717595], + [82.501844, 35.701073], + [82.546192, 35.708362], + [82.628727, 35.692324], + [82.652133, 35.67288], + [82.731589, 35.637868], + [82.780249, 35.666073], + [82.795031, 35.688436], + [82.873871, 35.688922], + [82.894813, 35.673852], + [82.967494, 35.667532], + [82.956407, 35.636409], + [82.981661, 35.599922], + [82.971806, 35.548324], + [82.998907, 35.484512], + [83.067892, 35.46258], + [83.088834, 35.425526], + [83.127022, 35.398699], + [83.178145, 35.38943], + [83.251442, 35.417722], + [83.280391, 35.401138], + [83.333978, 35.397236], + [83.405427, 35.380648], + [83.449159, 35.382111], + [83.502745, 35.360639], + [83.540318, 35.364056], + [83.54155, 35.341603], + [83.599448, 35.351366], + [83.622238, 35.335256], + [83.677672, 35.361128], + [83.785462, 35.36308], + [83.79778, 35.354783], + [83.885244, 35.367472], + [83.906186, 35.40309], + [84.005968, 35.422599], + [84.077417, 35.400163], + [84.095895, 35.362592], + [84.140859, 35.379184], + [84.160569, 35.359663], + [84.200605, 35.381135], + [84.274517, 35.404065], + [84.333032, 35.413821], + [84.424191, 35.466479], + [84.45314, 35.473303], + [84.475929, 35.516181], + [84.448828, 35.550272], + [84.513502, 35.564391], + [84.570168, 35.588242], + [84.628067, 35.595055], + [84.704443, 35.616951], + [84.729081, 35.613546], + [84.798066, 35.647595], + [84.920022, 35.696213], + [84.973608, 35.709334], + [84.99455, 35.737028], + [85.053065, 35.752086], + [85.146071, 35.742371], + [85.271107, 35.788989], + [85.341324, 35.753543], + [85.373969, 35.700101], + [85.518715, 35.680658], + [85.566142, 35.6403], + [85.612953, 35.651486], + [85.65299, 35.731199], + [85.691178, 35.751114], + [85.811286, 35.778794], + [85.835308, 35.771996], + [85.903677, 35.78462], + [85.949256, 35.778794], + [86.035488, 35.846738], + [86.05335, 35.842857], + [86.090306, 35.876809], + [86.093386, 35.906868], + [86.129111, 35.941761], + [86.150668, 36.00424], + [86.173458, 36.008113], + [86.199944, 36.047801], + [86.182081, 36.064734], + [86.187625, 36.130983], + [86.248603, 36.141616], + [86.2794, 36.170608], + [86.35824, 36.168676], + [86.392733, 36.206834], + [86.454943, 36.221319], + [86.515305, 36.205385], + [86.531935, 36.227113], + [86.599072, 36.222285], + [86.69947, 36.24449], + [86.746282, 36.291777], + [86.836209, 36.291294], + [86.86331, 36.299977], + [86.887332, 36.262829], + [86.931064, 36.265242], + [86.943998, 36.284058], + [86.996353, 36.308658], + [87.051788, 36.2966], + [87.08628, 36.310587], + [87.149106, 36.297565], + [87.161425, 36.325535], + [87.193454, 36.349158], + [87.292004, 36.358797], + [87.348055, 36.393008], + [87.363453, 36.420463], + [87.386859, 36.412757], + [87.426895, 36.42576], + [87.460155, 36.409868], + [87.470626, 36.354459], + [87.570409, 36.342409], + [87.6203, 36.360243], + [87.731785, 36.384818], + [87.767509, 36.3747], + [87.826023, 36.391563], + [87.838342, 36.383855], + [87.919646, 36.39349], + [87.95845, 36.408423], + [87.983088, 36.437797], + [88.006494, 36.430575], + [88.092109, 36.43539], + [88.134609, 36.427205], + [88.182652, 36.452721], + [88.222688, 36.447426], + [88.241782, 36.468605], + [88.282434, 36.470049], + [88.366202, 36.458016], + [88.356963, 36.477268], + [88.41055, 36.473418], + [88.470912, 36.48208], + [88.498629, 36.446463], + [88.573158, 36.461386], + [88.618121, 36.428168], + [88.623665, 36.389636], + [88.690186, 36.367954], + [88.766563, 36.292259], + [88.783809, 36.291777], + [88.802903, 36.33807], + [88.838628, 36.353496], + [88.870657, 36.348193], + [88.926091, 36.36458], + [88.964279, 36.318785], + [89.013554, 36.315409], + [89.054822, 36.291777], + [89.10225, 36.281164], + [89.126887, 36.254626], + [89.198952, 36.260417], + [89.232213, 36.295636], + [89.292575, 36.231457], + [89.335075, 36.23725], + [89.375727, 36.228078], + [89.490291, 36.151281], + [89.594385, 36.126632], + [89.614711, 36.109712], + [89.711414, 36.093272], + [89.766848, 36.073925], + [89.819819, 36.080697], + [89.914058, 36.079246], + [89.941159, 36.067637], + [89.944855, 36.140649], + [89.997825, 36.168193], + [90.019999, 36.213594], + [90.028006, 36.258486], + [90.003369, 36.278752], + [90.043405, 36.276822], + [90.058188, 36.255591], + [90.145651, 36.239181], + [90.130252, 36.2078], + [90.198006, 36.187516], + [90.23681, 36.160462], + [90.325505, 36.159496], + [90.424055, 36.133883], + [90.478258, 36.13195], + [90.534925, 36.147899], + [90.613149, 36.126632], + [90.659344, 36.13485], + [90.776373, 36.086501], + [90.815793, 36.035703], + [90.850285, 36.016827], + [90.922966, 36.028927], + [90.979017, 36.106811], + [91.081263, 36.088436], + [91.124994, 36.115514], + [91.09235, 36.163844], + [91.096045, 36.219871], + [91.051698, 36.238215], + [91.07264, 36.299012], + [91.026444, 36.323607], + [91.051698, 36.433946], + [91.028292, 36.443093], + [91.039995, 36.474861], + [91.035683, 36.529703], + [91.011662, 36.539801], + [90.905104, 36.560474], + [90.831191, 36.55807], + [90.810865, 36.585466], + [90.741264, 36.585947], + [90.72217, 36.620058], + [90.730793, 36.655594], + [90.706156, 36.658955], + [90.720938, 36.708868], + [90.754815, 36.721341], + [90.727098, 36.755872], + [90.732025, 36.825844], + [90.758511, 36.825844], + [90.853981, 36.915373], + [90.924198, 36.921115], + [90.983944, 36.913459], + [91.036915, 36.929727], + [91.051698, 36.96751], + [91.126842, 36.978507], + [91.133618, 37.007665], + [91.181045, 37.025345], + [91.216153, 37.010054], + [91.303617, 37.012444], + [91.291298, 37.042544], + [91.303617, 37.083136], + [91.286371, 37.105095], + [91.280211, 37.163779], + [91.1909, 37.205737], + [91.194596, 37.273868], + [91.134849, 37.324331], + [91.136081, 37.355734], + [91.113292, 37.387124], + [91.099741, 37.447965], + [91.073256, 37.475992], + [91.019669, 37.493088], + [90.958075, 37.477891], + [90.911879, 37.519674], + [90.865684, 37.53059], + [90.882314, 37.575664], + [90.854597, 37.604117], + [90.820104, 37.613599], + [90.777605, 37.648672], + [90.643946, 37.696988], + [90.586663, 37.703144], + [90.579272, 37.720661], + [90.519526, 37.730601], + [90.516446, 38.207111], + [90.531229, 38.319886], + [90.401882, 38.311434], + [90.361846, 38.300163], + [90.352607, 38.233441], + [90.280542, 38.238142], + [90.137644, 38.340543], + [90.179528, 38.396848], + [90.129636, 38.400131], + [90.111774, 38.418889], + [90.111774, 38.477945], + [90.130868, 38.494341], + [90.248513, 38.491531], + [90.315034, 38.501835], + [90.353222, 38.482162], + [90.427135, 38.493873], + [90.465323, 38.521971], + [90.463476, 38.556611], + [90.525685, 38.561291], + [90.560794, 38.593573], + [90.608837, 38.594508], + [90.606374, 38.610878], + [90.645794, 38.635191], + [90.619308, 38.664636], + [90.65996, 38.674449], + [90.724634, 38.658094], + [90.899561, 38.679588], + [90.970394, 38.697806], + [90.992567, 38.695003], + [91.188436, 38.73096], + [91.242639, 38.752433], + [91.298689, 38.746365], + [91.446515, 38.813546], + [91.501333, 38.815411], + [91.681188, 38.852706], + [91.694738, 38.86622], + [91.806223, 38.872744], + [91.87952, 38.884391], + [91.880752, 38.899297], + [91.966368, 38.930961], + [92.10865, 38.963541], + [92.173323, 38.960749], + [92.197961, 38.983548], + [92.263866, 39.002153], + [92.380279, 38.999828], + [92.416003, 39.010524], + [92.41046, 39.03842], + [92.366728, 39.059335], + [92.366112, 39.096037], + [92.343938, 39.146181], + [92.339011, 39.236628], + [92.378431, 39.258411], + [92.52564, 39.368611], + [92.639589, 39.514196], + [92.687632, 39.657174], + [92.745531, 39.868331], + [92.796654, 40.153897], + [92.906907, 40.310609], + [92.920458, 40.391792], + [92.928465, 40.572504], + [93.506216, 40.648376], + [93.760599, 40.664721], + [93.820961, 40.793519], + [93.809874, 40.879548], + [93.908424, 40.983539], + [94.01067, 41.114875], + [94.184365, 41.268444], + [94.534219, 41.505966], + [94.750413, 41.538227], + [94.809543, 41.619256], + [94.861898, 41.668451], + [94.969072, 41.718948], + [95.011572, 41.726541], + [95.110738, 41.768513], + [95.135991, 41.772976], + [95.16494, 41.735474], + [95.199433, 41.719395], + [95.194505, 41.694821], + [95.247476, 41.61344], + [95.299831, 41.565994], + [95.335556, 41.644305], + [95.39407, 41.693481], + [95.445193, 41.719841], + [95.57146, 41.796181], + [95.65646, 41.826067], + [95.759322, 41.835878], + [95.801206, 41.848361], + [95.855408, 41.849699], + [95.998306, 41.906289], + [96.054973, 41.936124], + [96.117183, 41.985966], + [96.137509, 42.019765], + [96.13874, 42.05399], + [96.077147, 42.149457], + [96.178161, 42.21775], + [96.040806, 42.326688], + [96.042038, 42.352787], + [96.06606, 42.414674], + [95.978596, 42.436762], + [96.0174, 42.482239], + [96.02356, 42.542675], + [96.072219, 42.569566], + [96.103632, 42.604375], + [96.166458, 42.623314], + [96.386348, 42.727592] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 710000, + "name": "台湾省", + "center": [121.509062, 25.044332], + "centroid": [120.971485, 23.749452], + "childrenNum": 0, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 31, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [120.443706, 22.441432], + [120.517619, 22.408793], + [120.569973, 22.361757], + [120.640806, 22.241605], + [120.659285, 22.154056], + [120.661748, 22.067007], + [120.651277, 22.033171], + [120.667908, 21.983235], + [120.701784, 21.927174], + [120.743052, 21.915515], + [120.781857, 21.923843], + [120.854537, 21.883309], + [120.873016, 21.897191], + [120.86624, 21.984345], + [120.907508, 22.033171], + [120.912436, 22.086418], + [120.903197, 22.12634], + [120.914899, 22.302525], + [120.981421, 22.528248], + [121.014682, 22.584069], + [121.03316, 22.650914], + [121.078739, 22.669691], + [121.170514, 22.723247], + [121.21055, 22.770711], + [121.237652, 22.836362], + [121.276456, 22.877171], + [121.324499, 22.945526], + [121.35468, 23.00999], + [121.370695, 23.084334], + [121.409499, 23.1025], + [121.430441, 23.137175], + [121.415042, 23.196047], + [121.440296, 23.271937], + [121.479716, 23.322507], + [121.497578, 23.419744], + [121.5216, 23.483431], + [121.522832, 23.538858], + [121.587505, 23.760878], + [121.621382, 23.920718], + [121.65957, 24.007125], + [121.63986, 24.064514], + [121.643556, 24.097843], + [121.678048, 24.133895], + [121.689135, 24.174303], + [121.809243, 24.339083], + [121.82649, 24.423572], + [121.867758, 24.47914], + [121.88562, 24.529784], + [121.892395, 24.617953], + [121.86283, 24.671261], + [121.841272, 24.734329], + [121.844968, 24.836476], + [121.933047, 24.938539], + [122.012503, 25.001471], + [121.98109, 25.030757], + [121.947214, 25.031841], + [121.917033, 25.138076], + [121.841888, 25.135367], + [121.782142, 25.160287], + [121.745186, 25.161912], + [121.707613, 25.191701], + [121.700222, 25.226896], + [121.655259, 25.242054], + [121.62323, 25.29455], + [121.585041, 25.309159], + [121.53515, 25.307535], + [121.444607, 25.27074], + [121.413194, 25.238806], + [121.371926, 25.159746], + [121.319572, 25.140785], + [121.209318, 25.12724], + [121.132942, 25.078466], + [121.102145, 25.075214], + [121.024537, 25.040517], + [121.009754, 24.993878], + [120.961095, 24.940167], + [120.914899, 24.864715], + [120.89211, 24.767482], + [120.82374, 24.688118], + [120.762147, 24.658208], + [120.68885, 24.600542], + [120.642654, 24.490033], + [120.589068, 24.43229], + [120.546568, 24.370159], + [120.520698, 24.311816], + [120.470807, 24.242533], + [120.451713, 24.182493], + [120.391967, 24.118055], + [120.316206, 23.984708], + [120.278018, 23.92783], + [120.245989, 23.840276], + [120.175156, 23.807427], + [120.102476, 23.701162], + [120.095084, 23.58768], + [120.12157, 23.504836], + [120.108019, 23.341191], + [120.081534, 23.291728], + [120.018708, 23.073322], + [120.029795, 23.048544], + [120.133272, 23.000625], + [120.149287, 22.896468], + [120.20041, 22.721039], + [120.274323, 22.560307], + [120.297112, 22.531565], + [120.443706, 22.441432] + ] + ], + [ + [ + [124.542782, 25.903886], + [124.584666, 25.908731], + [124.566804, 25.941563], + [124.542782, 25.903886] + ] + ], + [ + [ + [123.445178, 25.726102], + [123.469816, 25.712623], + [123.50862, 25.722867], + [123.512316, 25.755212], + [123.479055, 25.768687], + [123.445794, 25.749822], + [123.445178, 25.726102] + ] + ], + [ + [ + [119.646064, 23.550928], + [119.691028, 23.547087], + [119.678093, 23.600294], + [119.61034, 23.604132], + [119.601717, 23.575613], + [119.566608, 23.584937], + [119.562297, 23.530627], + [119.578927, 23.502641], + [119.609108, 23.503738], + [119.646064, 23.550928] + ] + ], + [ + [ + [123.666916, 25.914114], + [123.706952, 25.91519], + [123.689706, 25.939949], + [123.666916, 25.914114] + ] + ], + [ + [ + [119.506246, 23.625518], + [119.506246, 23.577259], + [119.47237, 23.556962], + [119.519181, 23.559705], + [119.52534, 23.62497], + [119.506246, 23.625518] + ] + ], + [ + [ + [119.497623, 23.38679], + [119.495159, 23.349982], + [119.516717, 23.349982], + [119.497623, 23.38679] + ] + ], + [ + [ + [119.557369, 23.666634], + [119.608492, 23.620035], + [119.615268, 23.661153], + [119.586318, 23.675952], + [119.557369, 23.666634] + ] + ], + [ + [ + [122.066706, 25.6247], + [122.087032, 25.61067], + [122.092575, 25.639268], + [122.066706, 25.6247] + ] + ], + [ + [ + [121.468013, 22.67687], + [121.474788, 22.643734], + [121.513592, 22.631582], + [121.514824, 22.676318], + [121.468013, 22.67687] + ] + ], + [ + [ + [121.510513, 22.086972], + [121.507433, 22.048704], + [121.533918, 22.022076], + [121.594281, 21.995443], + [121.604752, 22.022631], + [121.575186, 22.037055], + [121.575802, 22.0842], + [121.510513, 22.086972] + ] + ], + [ + [ + [122.097503, 25.499987], + [122.110438, 25.465952], + [122.122141, 25.495666], + [122.097503, 25.499987] + ] + ], + [ + [ + [119.421247, 23.216949], + [119.436029, 23.186146], + [119.453275, 23.216399], + [119.421247, 23.216949] + ] + ], + [ + [ + [120.355011, 22.327439], + [120.395663, 22.342385], + [120.383344, 22.355669], + [120.355011, 22.327439] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 810000, + "name": "香港特别行政区", + "center": [114.173355, 22.320048], + "centroid": [114.134357, 22.377366], + "childrenNum": 18, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 32, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [114.031778, 22.503923], + [114.000981, 22.491206], + [113.977575, 22.45692], + [113.918445, 22.418199], + [113.920293, 22.367845], + [113.951706, 22.355116], + [113.956633, 22.359543], + [113.980039, 22.366185], + [114.026234, 22.34792], + [113.955401, 22.298649], + [113.969568, 22.321349], + [113.898119, 22.308615], + [113.889496, 22.271514], + [113.8433, 22.229418], + [113.84946, 22.191188], + [113.899351, 22.215568], + [113.935691, 22.205041], + [113.981271, 22.229972], + [113.996669, 22.206149], + [114.026234, 22.229418], + [114.004676, 22.239389], + [114.02993, 22.263207], + [114.034857, 22.300864], + [114.069966, 22.326885], + [114.121089, 22.320795], + [114.145726, 22.300864], + [114.120473, 22.272068], + [114.164821, 22.226648], + [114.200545, 22.232188], + [114.203009, 22.206703], + [114.265835, 22.200608], + [114.248588, 22.274837], + [114.262139, 22.294773], + [114.284929, 22.263761], + [114.313262, 22.264315], + [114.315726, 22.299203], + [114.315726, 22.299756], + [114.278153, 22.328546], + [114.283081, 22.386661], + [114.322501, 22.385554], + [114.323117, 22.385554], + [114.323733, 22.385001], + [114.323733, 22.384447], + [114.356994, 22.340171], + [114.394566, 22.361757], + [114.385327, 22.41156], + [114.406269, 22.432582], + [114.406269, 22.433688], + [114.376088, 22.436454], + [114.325581, 22.479041], + [114.278769, 22.435901], + [114.220255, 22.427603], + [114.205473, 22.449729], + [114.23319, 22.466875], + [114.2529, 22.445304], + [114.340979, 22.50337], + [114.309566, 22.497288], + [114.28924, 22.52272], + [114.263987, 22.541515], + [114.263371, 22.541515], + [114.260291, 22.547595], + [114.232574, 22.528801], + [114.232574, 22.539857], + [114.222719, 22.553122], + [114.166052, 22.559201], + [114.156813, 22.543726], + [114.095219, 22.534329], + [114.082285, 22.512216], + [114.031778, 22.503923] + ] + ], + [ + [ + [114.142647, 22.213906], + [114.123553, 22.238836], + [114.120473, 22.177888], + [114.154965, 22.177888], + [114.166668, 22.205041], + [114.142647, 22.213906] + ] + ], + [ + [ + [114.305871, 22.372273], + [114.313878, 22.340724], + [114.332972, 22.353455], + [114.305255, 22.372826], + [114.305871, 22.372273] + ] + ], + [ + [ + [114.320037, 22.381127], + [114.323733, 22.384447], + [114.323733, 22.385001], + [114.323117, 22.385554], + [114.322501, 22.385554], + [114.319421, 22.382234], + [114.320037, 22.38168], + [114.320037, 22.381127] + ] + ], + [ + [ + [114.305871, 22.369506], + [114.305871, 22.372273], + [114.305255, 22.372826], + [114.305871, 22.369506] + ] + ], + [ + [ + [114.315726, 22.299203], + [114.316958, 22.298649], + [114.316342, 22.30031], + [114.315726, 22.299756], + [114.315726, 22.299203] + ] + ], + [ + [ + [114.319421, 22.382234], + [114.320037, 22.381127], + [114.320037, 22.38168], + [114.319421, 22.382234] + ] + ], + [ + [ + [114.372392, 22.32301], + [114.373008, 22.323564], + [114.372392, 22.323564], + [114.372392, 22.32301] + ] + ], + [ + [ + [114.323733, 22.297541], + [114.324349, 22.297541], + [114.323733, 22.298095], + [114.323733, 22.297541] + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "adcode": 820000, + "name": "澳门特别行政区", + "center": [113.54909, 22.198951], + "centroid": [113.566988, 22.159307], + "childrenNum": 8, + "level": "province", + "parent": { "adcode": 100000 }, + "subFeatureIndex": 33, + "acroutes": [100000] + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [113.554425, 22.107489], + [113.6037, 22.132438], + [113.575983, 22.194513], + [113.558736, 22.212244], + [113.53841, 22.209473], + [113.534715, 22.174009], + [113.554425, 22.142416], + [113.554425, 22.107489] + ] + ], + [ + [ + [113.586453, 22.201162], + [113.575983, 22.201162], + [113.575983, 22.194513], + [113.586453, 22.201162] + ] + ] + ] + } + } + ] +} diff --git a/web-admin/src/mock/upgrade/changeLog.ts b/web-admin/src/mock/upgrade/changeLog.ts new file mode 100644 index 00000000..a7743cfc --- /dev/null +++ b/web-admin/src/mock/upgrade/changeLog.ts @@ -0,0 +1,449 @@ +interface UpgradeLog { + version: string // 版本号 + title: string // 更新标题 + date: string // 更新日期 + detail?: string[] // 更新内容 + requireReLogin?: boolean // 是否需要重新登录 + remark?: string // 备注 +} + +export const upgradeLogList = ref([ + { + version: 'v3.0.2', + title: '问题修复、表单与路由体验优化', + date: '2026-03-15', + detail: [ + '修复:富文本编辑器样式异常问题', + '修复:菜单区域无法滚动的问题', + '修复:特殊路由打开后显示空白页面的问题', + '修复:WebSocket 重连异常问题', + '修复:特殊动态路由参数处理异常问题', + '优化:ArtForm、ArtSearchBar 表单提交前增加数据清洗,避免无效字段提交到后端', + '修复:ArtTable 与 ElForm 组合使用时动态表单校验错误的问题', + '修复:隐藏子菜单时父级菜单被一并隐藏的问题', + '修复:静态路由刷新后跳回首页的问题', + '修复:art-table 属性继承异常问题', + '修复:PC 端切换到移动端后再切回 PC 端,菜单无法恢复原桌面布局的问题' + ] + }, + { + version: 'v3.0.1', + title: 'bug修复、新增功能', + date: '2025-11-15', + detail: [ + '修复:路由注册时不存在接口的重复请求问题', + '修复:一键精简脚本打包失败的问题', + '优化:完善路由配置验证机制,自动检测并提示非一级菜单的路径配置错误', + '优化:顶部进度条残影', + '优化:vite 预构建优化', + '优化:圆角、边框统一', + '优化:锁屏页面重新设计', + '优化:退出登录菜单提前消失造成的视觉体验不好问题', + '新增:ArtForm 和 ArtSearchBar 组件的 label 支持自定义渲染函数,可实现带 tooltip 等复杂标签', + '新增:菜单管理表单关键字段新增 Tooltip 提示,降低用户配置门槛', + '新增:iconify 新增离线图标加载模式', + '新增:退出登录新增 redirect 属性,用于重新登录后跳转到对应页面', + '新增:退出登录重新进入系统保留用户标签页,根据 userId 进行身份识别', + '新增:双列菜单新增折叠按钮', + '新增:菜单图标完善', + '新增:多标签页增加图标', + '新增:WebSocket 连接' + ] + }, + { + version: 'v3.0.0', + title: 'Sass 重构为 Tailwind CSS,Iconfont 替换为 Iconify,性能,目录结构,文件注释全方位优化', + date: '2025-11-9', + requireReLogin: true, + detail: [ + '样式系统重构:Sass 全面迁移至 Tailwind CSS,提升开发效率与样式一致性', + '图标方案升级:Iconfont 替换为 Iconify,支持更丰富的图标库与按需加载', + '构建优化:完整包体积减少 1.3 MB,显著提升加载性能', + '路由注册重构:全面重构路由注册系统,引入面向对象设计,提高代码的可维护性、可测试性和扩展能力', + '架构优化:优化目录结构,职责划分更清晰,降低用户学习成本与上手难度', + '注释优化:统一模块注释规范,完善每一个组件介绍、功能说明与使用示例,降低用户理解成本与上手难度', + '性能提升:优化核心代码逻辑,提升系统运行效率', + '设计系统:重构颜色体系,统一 UI 视觉规范,提升界面一致性', + '菜单优化:细化菜单样式,优化交互体验与视觉呈现', + '组件重构:重构 ArtTextScroll 组件,提升性能与可维护性', + '问题修复:修复 ArtForm、ArtSearchBar 自定义组件渲染异常', + '功能增强:ArtForm、ArtSearchBar 新增 render 属性,支持自定义组件渲染', + '功能增强:useTable hooks 新增 visible 属性,用于控制列默认是否显示', + '响应式优化:优化 ArtForm、ArtSearchBar 栅格布局,适配多种屏幕尺寸', + '节日功能增强:礼花配置支持跨日期范围设置与自定义播放次数', + '依赖更新:升级核心依赖至最新稳定版本', + '配置管理优化:新增 setting.ts 配置文件,支持一键复制与重置系统默认设置' + ], + remark: + '重要提示:本次升级涉及样式系统(Sass → Tailwind CSS)与图标库(Iconfont → Iconify)的底层重构,属于破坏性更新。建议新项目直接使用 v3.0,旧版本项目不建议升级。' + }, + { + version: 'v2.6.1', + title: 'bug修复、授权页增加主题色切换功能', + date: '2025-10-19', + detail: [ + '修复获取用户信息、获取菜单接口访问无效地址重复调用问题', + '升级部分依赖兼容 tailwindcss', + '修复 ElButton circle 模式样式', + '修复 ElSlect 无法通过键盘选择问题', + '修复带参数静态路由跳转登录页面问题', + '优化外部链接菜单点击选中状态', + '授权页增加主题色切换功能' + ] + }, + { + version: 'v2.6.0', + title: '代码优化、bug修复', + date: '2025-10-16', + detail: [ + '优化精简版本菜单数据结构,提升数据一致性', + '优化本地开发环境网络请求代理配置', + '优化 ElTree 组件默认样式', + '新增 VsCode 推荐插件相关配置', + '优化 ElDropdown 组件点击触发模式下的交互样式', + '扩展注册、密码重置页面顶部组件支持', + '优化菜单过滤逻辑', + '优化页面切换动画,提升加载速度', + '优化暗黑模式文字颜色', + '修复静态路由自定义首页路径首次访问跳转登录页问题', + '修复退出登录时短暂跳转至 500 页的问题', + '修复 v2.5.9 版本首页路由跳转配置失效问题', + '修复 v2.5.9 自动导包机制导致的构建异常' + ], + requireReLogin: true + }, + { + version: 'v2.5.9', + title: '代码优化', + date: '2025-10-12', + detail: [ + 'views 文件目录、文件名、代码优化', + 'useTable 分页请求字段增加全局配置 tableConfig.ts', + '优化路由配置为模块化结构', + '获取菜单接口使用 apifox mock 数据(需在 .env 中 将 VITE_ACCESS_MODE 设为 backend 模式)' + ] + }, + { + version: 'v2.5.8', + title: '依赖升级、bug修复', + date: '2025-09-29', + detail: [ + 'vue、vite、element-plus 等核心库升级', + '修复富文本编辑器全屏顶栏层级问题', + '修复表格列排序组件文字益处问题', + '修复统计卡片条件判断', + '优化 el-tag 样式', + '优化顶部进度条颜色', + '优化自定义主题配置', + '优化 ElementPlus 自定义主题问题', + '修复根路径 / 与 HOME_PAGE_PATH 同为 / 时出现的无限重定向' + ], + remark: '由于项目依赖升级,node 版本需要升级到 v20.19.0 或以上' + }, + { + version: 'v2.5.7', + title: '新增表单组件', + date: '2025-09-14', + detail: [ + '新增 ArtForm 组件', + '修复新版本谷歌浏览器切换主题闪烁问题', + '优化表单 label 高度没有对齐问题', + '首屏启动性能优化' + ] + }, + { + version: 'v2.5.6', + title: '优化用户体验、bug修复', + date: '2025-09-06', + detail: [ + 'useTable 类型推导优化,不需要手动传递类型即可实现类型提示', + 'useTable removeColumn 支持多数据删除', + 'useTable 自动识别响应体支持自定义配置 (src/utils/table/tableConfig.ts)', + 'useTable 空数据浏览器警告优化', + 'api 接口请求代码优化、api.d.ts 类型优化', + '优化 ArtTable 顶部按钮换行无法自适应问题(示例:功能示例 / 左右布局表格)', + 'ArtTable 分页组件选中样式优化', + 'ArtTable 空状态高度默认撑满', + 'ArtButtonMore 组件新增图标、颜色配置', + 'ArtTableHeader 新增搜索按钮,用于控制顶部搜索栏的显示与隐藏', + 'ArtSearchBar label 为空时不占空间', + '表格操作栏拖拽禁止固定列拖拽', + '角色管理页面接口对接、代码优化', + '菜单管理页面优化', + '优化设置中心滚动页面跟随滚动问题', + '一级路由是外链时,component 校验逻辑优化', + '优化地图右下角拖动问题', + '优化暗黑模式刷新页面白色背景问题', + '优化左侧菜单折叠按钮间距问题', + '移动端显示左侧菜单 logo', + '网络请求新增 showSuccessMessage,用于配置是否显示成功消息', + '添加全局错误处理基础框架', + '修复批量删除整页数据没有返回上一页的bug', + '修复动态路由参数导致的问题', + '修复动态路由配置 一级路由是 iframe 页面时,全屏问题', + '新增权限演示示例', + '全局组件采用异步加载策略,提升首屏加载性能' + ] + }, + { + version: 'v2.5.5', + title: 'bug修复、优化用户体验', + date: '2025-08-17', + detail: [ + '重构 ArtSearchBar 组件,支持更多组件、表单校验等能力', + 'useTable 列配置:支持动态更新能力', + '修复多个富文本编辑器图标不统一问题', + '优化颜色选择器圆角', + 'el-radio、el-checkbox 统一大小', + 'art-stats-card 新增小数位、分隔符配置', + '路由配置示例优化', + '高级表格新增自定义获取数据示例(等待其他请求完成后执行 useTable 数据获取)', + 'useTable 新增 excludeParams,用于排除某些参数不参与请求', + '优化路径别名类型问题', + '本地开发跨域配置优化', + '修复 useTable 删除最后一整页数据没有返回上一页的问题', + '修复 echarts 图表数据初始化、更新数据浏览器报错', + '删除 art-chart-empty 组件', + '新增 ArtSearchBar 组件示例', + '网络请求支持 http 状态码为 401 时退出登录', + '优化网络请求退出登录多次提示问题', + 'useTable 属性、方法命名优化', + '登录页UI升级', + '403、404、500 页面UI升级' + ] + }, + { + version: 'v2.5.4', + title: 'bug修复、优化用户体验', + date: '2025-07-27', + detail: [ + '修复获取用户信息接口时序问题导致路由注册菜单渲染错误bug', + '修复动态路由校验问题导致的 iframe 不显示bug', + '修复 reset 文件语法错误', + '修复 ArtTable 数据类型错误', + '路由注册新增 component 校验', + '修复地图滚轮滚动放大问题', + '网络请求 headers 支持自定义配置', + '展开行支持 formatter 渲染' + ] + }, + { + version: 'v2.5.3', + title: 'bug修复、优化用户体验', + date: '2025-07-20', + detail: [ + 'ArtTable 组件重构', + 'Element Plus 升级到 v2.10.2', + '优化 useTable 分页参数问题', + '修复 ArtTable 切换分页大小时执行两次请求bug', + '优化网络请求示例:初始化参数、分页携带参数问题', + '优化搜索日期范围参数处理', + '优化 el-date-picker 组件圆角问题', + '优化 el-select 组件 hover 样式', + '新增表格左右布局示例', + '搜索组件、分页组件高度降低', + '优化登录页面滑块动画间隔时长', + '优化菜单没有子菜单显示的问题' + ] + }, + { + version: 'v2.5.2', + title: 'bug修复、优化用户体验', + date: '2025-07-13', + detail: [ + '新增一键精简脚本,快速准备开发环境', + '优化表格无数据时表头不显示问题', + 'useTable hooks 支持分页字段名自定义映射', + '修复 v2.5.0 顶部进度条不显示问题', + '修复左侧菜单遮罩异常显示问题', + '修复隐藏所有子菜单时仍显示父级菜单的问题', + '水平菜单、混合菜单、双列菜单支持徽章显示', + '修复 stylelint 导致的登录页滑块样式异常', + '修复老旧移动端设备 loading 定位问题', + '快速入口支持配置文件模式', + '顶栏功能支持配置文件模式', + '全局事件总线 mittBus 类型安全优化', + '支持自定义首页路径', + '优化移动端设置中容器宽度样式', + '优化登录页验证滑块文字居中效果', + '路由支持配置 redirect 等属性' + ] + }, + { + version: 'v2.5.1', + title: 'bug修复、优化用户体验', + date: '2025-07-08', + detail: [ + '修复首次登录系统时 loading 提前关闭bug', + 'el-card、el-table 背景色跟系统保持一致', + '修复 v2.5.0 版本引起的全屏页样式层级过低bug', + '修复 v2.5.0 版本引起的表格展开行折叠bug' + ] + }, + { + version: 'v2.5.0', + title: '新增 useTable hooks 表格封装、组件重构', + date: '2025-07-06', + remark: '建议升级,带来更高效、更智能的表格开发体验', + detail: [ + '重构 ArtTable、ArtTableHeader、ArtNotification 组件', + '新增 useTable hooks 表格封装,支持数据获取、转换、响应适配、智能缓存(基于 LRU 算法)、错误处理、列配置与插槽、分页控制、刷新策略等核心功能,全面提升开发效率与用户体验', + '修复菜单管理搜索直接修改 pinia 数据的问题', + '移除 CountTo 插件,替换为 ArtCountTo 组件', + 'Echarts 版本升级到 5.6.0', + '修复路由守卫 loading 闪烁问题' + ] + }, + { + version: 'v2.4.2.9', + title: '代码重构、修复bug、优化用户体验', + date: '2025-07-02', + detail: [ + '菜单布局、顶部导航代码重构', + '修复移动端锁屏页部分浏览器无法解锁bug', + '优化移动端菜单滚动用户体验', + '优化顶部菜单样式问题', + '顶部菜单宽度自适应,可显示更多内容,混合菜单支持鼠标滚动', + 'asyncRoutes 路由配置 auth_mark 字段改为 authMark', + '去除重复的 components.d.ts 文件,components.d.ts、auto-imports.d.ts 忽略提交', + '优化国际化语言文件加载方式,异步改成同步模式', + '优化 el-pagination 大小不一致问题' + ] + }, + { + version: 'v2.4.2.8', + title: '修复 v2.4.2.7 版本访问 / 路径时显示 404 的问题', + date: '2025-06-26' + }, + { + version: 'v2.4.2.7', + title: 'bug修复、优化用户体验', + date: '2025-06-25', + detail: [ + '路由支持配置全屏模式', + '路由支持自动跳转到菜单的第一个有效路由', + '动态路由新增 removeAllDynamicRoutes 方法,可用于彻底清除所有动态路由', + '权限自定义指令优化、新增角色权限指令 v-roles、可用于控制元素的显示与隐藏', + '修复登录页面拖拽组件 ArtDragVerify 宽度、颜色异常bug', + '修复 iframe 页面混合模式、双列模式异常bug', + '优化锁屏页面被 el-loading 穿透bug', + '跨域请求携带 cookie 配置从环境变量中获取,默认关闭', + '针对SEO、可访问性做一些优化', + '新增标签页操作示例' + ] + }, + { + version: 'v2.4.2.6', + title: '组件重构与性能优化', + date: '2025-06-23', + detail: [ + '重构 components/core/forms 文件夹下的表单相关组件,提升可维护性与一致性', + '重构 ArtBreadcrumb 面包屑导航组件,优化逻辑结构与样式', + '优化 ArtChatWindow 与 ArtFastEnter 组件代码,提升可读性与性能', + '重构 ArtFireworksEffect 烟花效果组件,显著提升渲染性能与动画流畅度', + 'README 文档新增官方网站链接,便于用户查看项目文档' + ] + }, + { + version: 'v2.4.2.5', + title: '图表组件重构', + date: '2025-06-22', + detail: [ + '重构图表组件,优化代码结构与可维护性', + '精细调整图表动画与主题配色方案,提升视觉一致性' + ] + }, + { + version: 'v2.4.2.4', + title: '组件重构、代码优化', + date: '2025-06-18', + detail: [ + 'ArtMenuRight 组件重构', + 'ArtWatermark 增加类型注释', + 'components/core/cards 下面的组件重构,代码优化' + ] + }, + { + version: 'v2.4.2.3', + title: '组件重构、代码优化', + date: '2025-06-18', + detail: [ + 'ArtResultPage 组件重构', + 'ArtTextScroll 组件代码优化', + 'ArtException 组件增加类型提示', + 'ArtCutterImg 组件样式优化、增加类型定义', + 'ArtVideoPlayer 组件增加类型定义' + ] + }, + { + version: 'v2.4.2.2', + title: '组件重构', + date: '2025-06-16', + detail: ['返回顶部组件重构', '图标选择器组件重构', '系统Logo组件属性变更'] + }, + { + version: 'v2.4.2.1', + title: '横幅组件重构、Bug修复', + date: '2025-06-16', + detail: ['横幅组件重构以及优化', '修复混合菜单下第一个菜单是嵌套菜单跳转bug'] + }, + { + version: 'v2.4.2', + title: 'Bug修复与体验优化', + date: '2025-06-14', + detail: [ + '重构网络请求模块,增强错误处理、类型安全与多语言支持', + '修复移动端搜索栏无法滚动、iPad端页面滚动异常问题', + '修复 el-dialog 启用 draggable 属性后,自定义动画失效的问题', + '修复 2.3.0 版本本地存储重构后,导致登录、注册等页面多语言设置无法持久化的问题', + '引导、列设置多语言完善', + '修复表格固定列不起作用bug', + '路由配置新增 activePath 激活菜单路径属性', + '去除用户列表、菜单管理页面无效代码', + '更新技术支持链接' + ], + requireReLogin: true + }, + { + version: 'v2.4.1.1', + title: 'Bug修复与体验优化', + date: '2025-06-07', + detail: [ + '修复菜单管理折叠 bug', + '优化角色管理页面代码', + '修复表格数据为空高度无限变大bug', + 'el-dialog视觉效果优化,支持配置线条', + '系统主题模式从Light改成跟随系统模式' + ] + }, + { + version: 'v2.4.1', + title: '优化菜单交互体验、Echarts 图表性能优化', + date: '2025-06-07', + detail: [ + '提升菜单操作跟手感', + '页面入场动画时间减少0.04s', + '修复 Echarts 图表组件在弹窗中不显示的 bug', + 'Echarts 图表性能优化,新增可视区域初始化、内存泄漏防护、防抖处理', + '锁屏状下禁止使用开发者工具破解锁屏' + ] + }, + { + version: 'v2.4.0', + title: '代码重构与资源优化', + date: '2025-06-06', + detail: [ + '全局 TypeScript 类型体系重构,提升类型准确性与可维护性', + '重构 utils 工具包,统一工具方法结构,增强可读性与复用性', + 'utils 新增表单验证与 Cookie 操作相关工具函数', + '删除未使用的工具模块与无效资源,精简项目体积', + '优化 views 页面结构,移除冗余页面文件', + '页面组件增加 defineOptions,明确组件命名', + '异常页面多语言支持, 提升国际化体验', + '图片资源统一转换为 webp 格式,整体资源体积减少约 50%', + '打包产物减少约 1MB,提高加载效率', + 'HTTP 请求增加 token 过期自动处理逻辑,提升安全性与用户体验' + ], + requireReLogin: true + } +]) diff --git a/web-admin/src/plugins/echarts.ts b/web-admin/src/plugins/echarts.ts new file mode 100644 index 00000000..4f56d89f --- /dev/null +++ b/web-admin/src/plugins/echarts.ts @@ -0,0 +1,76 @@ +/** + * ECharts 插件配置 + * + * 按需导入 ECharts 图表和组件,减小打包体积。 + * 只注册项目中实际使用的图表类型和组件。 + * + * @module plugins/echarts + * @author Art Design Pro Team + */ + +// ECharts 按需导入配置 +import * as echarts from 'echarts/core' + +// 导入图表类型 +import { + BarChart, + LineChart, + PieChart, + ScatterChart, + RadarChart, + MapChart, + CandlestickChart +} from 'echarts/charts' + +// 导入组件 +import { + TitleComponent, + TooltipComponent, + GridComponent, + LegendComponent, + DataZoomComponent, + MarkPointComponent, + MarkLineComponent, + ToolboxComponent, + BrushComponent, + GeoComponent, + VisualMapComponent +} from 'echarts/components' + +// 导入渲染器 +import { CanvasRenderer } from 'echarts/renderers' + +// 注册必要的组件 +echarts.use([ + // 图表类型 + BarChart, + LineChart, + PieChart, + ScatterChart, + RadarChart, + MapChart, + CandlestickChart, + + // 组件 + TitleComponent, + TooltipComponent, + GridComponent, + LegendComponent, + DataZoomComponent, + MarkPointComponent, + MarkLineComponent, + ToolboxComponent, + BrushComponent, + GeoComponent, + VisualMapComponent, + + // 渲染器 + CanvasRenderer +]) + +// 导出 echarts 实例和类型 +export { echarts } +export type { EChartsOption, BarSeriesOption } from 'echarts' + +// 导出常用的图形工具 +export const graphic = echarts.graphic diff --git a/web-admin/src/plugins/index.ts b/web-admin/src/plugins/index.ts new file mode 100644 index 00000000..4536a860 --- /dev/null +++ b/web-admin/src/plugins/index.ts @@ -0,0 +1,6 @@ +/** + * 插件统一导出 + * 集中管理第三方库的封装和配置 + */ + +export * from './echarts' diff --git a/web-admin/src/router/core/ComponentLoader.ts b/web-admin/src/router/core/ComponentLoader.ts new file mode 100644 index 00000000..8af3ce3b --- /dev/null +++ b/web-admin/src/router/core/ComponentLoader.ts @@ -0,0 +1,82 @@ +/** + * 组件加载器 + * + * 负责动态加载 Vue 组件 + * + * @module router/core/ComponentLoader + * @author Art Design Pro Team + */ + +import { h } from 'vue' + +export class ComponentLoader { + private modules: Record Promise> + + constructor() { + // 动态导入 views 目录下所有 .vue 组件 + this.modules = import.meta.glob('../../views/**/*.vue') + } + + /** + * 加载组件 + */ + load(componentPath: string): () => Promise { + if (!componentPath) { + return this.createEmptyComponent() + } + + // 构建可能的路径 + const fullPath = `../../views${componentPath}.vue` + const fullPathWithIndex = `../../views${componentPath}/index.vue` + + // 先尝试直接路径,再尝试添加/index的路径 + const module = this.modules[fullPath] || this.modules[fullPathWithIndex] + + if (!module) { + console.error( + `[ComponentLoader] 未找到组件: ${componentPath},尝试过的路径: ${fullPath} 和 ${fullPathWithIndex}` + ) + return this.createErrorComponent(componentPath) + } + + return module + } + + /** + * 加载布局组件 + */ + loadLayout(): () => Promise { + return () => import('@/views/index/index.vue') + } + + /** + * 加载 iframe 组件 + */ + loadIframe(): () => Promise { + return () => import('@/views/outside/Iframe.vue') + } + + /** + * 创建空组件 + */ + private createEmptyComponent(): () => Promise { + return () => + Promise.resolve({ + render() { + return h('div', {}) + } + }) + } + + /** + * 创建错误提示组件 + */ + private createErrorComponent(componentPath: string): () => Promise { + return () => + Promise.resolve({ + render() { + return h('div', { class: 'route-error' }, `组件未找到: ${componentPath}`) + } + }) + } +} diff --git a/web-admin/src/router/core/IframeRouteManager.ts b/web-admin/src/router/core/IframeRouteManager.ts new file mode 100644 index 00000000..c054ca19 --- /dev/null +++ b/web-admin/src/router/core/IframeRouteManager.ts @@ -0,0 +1,78 @@ +/** + * Iframe 路由管理器 + * + * 负责管理 iframe 类型的路由 + * + * @module router/core/IframeRouteManager + * @author Art Design Pro Team + */ + +import type { AppRouteRecord } from '@/types/router' + +export class IframeRouteManager { + private static instance: IframeRouteManager + private iframeRoutes: AppRouteRecord[] = [] + + private constructor() {} + + static getInstance(): IframeRouteManager { + if (!IframeRouteManager.instance) { + IframeRouteManager.instance = new IframeRouteManager() + } + return IframeRouteManager.instance + } + + /** + * 添加 iframe 路由 + */ + add(route: AppRouteRecord): void { + if (!this.iframeRoutes.find((r) => r.path === route.path)) { + this.iframeRoutes.push(route) + } + } + + /** + * 获取所有 iframe 路由 + */ + getAll(): AppRouteRecord[] { + return this.iframeRoutes + } + + /** + * 根据路径查找 iframe 路由 + */ + findByPath(path: string): AppRouteRecord | undefined { + return this.iframeRoutes.find((route) => route.path === path) + } + + /** + * 清空所有 iframe 路由 + */ + clear(): void { + this.iframeRoutes = [] + } + + /** + * 保存到 sessionStorage + */ + save(): void { + if (this.iframeRoutes.length > 0) { + sessionStorage.setItem('iframeRoutes', JSON.stringify(this.iframeRoutes)) + } + } + + /** + * 从 sessionStorage 加载 + */ + load(): void { + try { + const data = sessionStorage.getItem('iframeRoutes') + if (data) { + this.iframeRoutes = JSON.parse(data) + } + } catch (error) { + console.error('[IframeRouteManager] 加载 iframe 路由失败:', error) + this.iframeRoutes = [] + } + } +} diff --git a/web-admin/src/router/core/MenuProcessor.ts b/web-admin/src/router/core/MenuProcessor.ts new file mode 100644 index 00000000..f43e3b60 --- /dev/null +++ b/web-admin/src/router/core/MenuProcessor.ts @@ -0,0 +1,343 @@ +/** + * 菜单处理器 + * + * 负责菜单数据的获取、过滤和处理 + * + * @module router/core/MenuProcessor + * @author Art Design Pro Team + */ + +import type { AppRouteRecord } from '@/types/router' +import { useUserStore } from '@/store/modules/user' +import { useAppMode } from '@/hooks/core/useAppMode' +import { fetchGetMenuList } from '@/api/system-manage' +import { fetchGetMenuCodes } from '@/api/auth' +import { asyncRoutes } from '../routes/asyncRoutes' +import { RoutesAlias } from '../routesAlias' +import { formatMenuTitle } from '@/utils' + +export class MenuProcessor { + /** + * 将路由上的“菜单标识”规范化为数据库/权限体系使用的 code 形态。 + * 例如:DeliveryList -> delivery_list + */ + private normalizeMenuCode(input: unknown): string { + const raw = String(input ?? '').trim() + if (!raw) return '' + + // 兼容已是 snake_case 的情况 + const withUnderscore = raw + .replace(/[\s-]+/g, '_') + // PascalCase / camelCase -> snake_case + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + + return withUnderscore.toLowerCase() + } + + /** + * 获取菜单数据 + */ + async getMenuList(): Promise { + const { isFrontendMode } = useAppMode() + + let menuList: AppRouteRecord[] + if (isFrontendMode.value) { + menuList = await this.processFrontendMenu() + } else { + menuList = await this.processBackendMenu() + } + + // 在规范化路径之前,验证原始路径配置 + this.validateMenuPaths(menuList) + + // 规范化路径(将相对路径转换为完整路径) + return this.normalizeMenuPaths(menuList) + } + + /** + * 处理前端控制模式的菜单 + */ + private async processFrontendMenu(): Promise { + const userStore = useUserStore() + const info = userStore.info + const roles = info?.roles?.length ? info.roles : info?.role ? [info.role] : undefined + + let menuList = [...asyncRoutes] + + // 根据角色过滤菜单 + if (roles && roles.length > 0) { + // super_admin:前端静态菜单全量展示,不依赖 meta.roles 的维护 + if (!roles.includes('super_admin')) { + menuList = this.filterMenuByRoles(menuList, roles) + } + } + + // 静态菜单模式下,admin 按后端返回的 menuCodes 过滤菜单 + if (info?.role === 'admin') { + const perm = await fetchGetMenuCodes() + const codeSet = new Set( + (perm?.menuCodes || []).map((x) => this.normalizeMenuCode(x)).filter(Boolean) + ) + if (!perm?.all) { + menuList = this.filterMenuByCodes(menuList, codeSet) + } + } + + return this.filterEmptyMenus(menuList) + } + + /** + * 处理后端控制模式的菜单 + */ + private async processBackendMenu(): Promise { + const list = await fetchGetMenuList() + return this.filterEmptyMenus(list) + } + + /** + * 根据角色过滤菜单 + */ + private filterMenuByRoles(menu: AppRouteRecord[], roles: string[]): AppRouteRecord[] { + return menu.reduce((acc: AppRouteRecord[], item) => { + const itemRoles = item.meta?.roles + const hasPermission = !itemRoles || itemRoles.some((role) => roles?.includes(role)) + + if (hasPermission) { + const filteredItem = { ...item } + if (filteredItem.children?.length) { + filteredItem.children = this.filterMenuByRoles(filteredItem.children, roles) + } + acc.push(filteredItem) + } + + return acc + }, []) + } + + /** + * 根据 menu code 过滤菜单(仅补齐顶级父菜单) + */ + private filterMenuByCodes( + menu: AppRouteRecord[], + codes: Set, + level = 1 + ): AppRouteRecord[] { + return menu.reduce((acc: AppRouteRecord[], item) => { + const rawCode = (item.meta as any)?.menuCode ?? item.name + const code = this.normalizeMenuCode(rawCode) + const hasSelfPermission = !!code && codes.has(code) + const filteredChildren = item.children?.length + ? this.filterMenuByCodes(item.children, codes, level + 1) + : item.children + + const shouldKeep = + hasSelfPermission || + (level === 1 && Array.isArray(filteredChildren) && filteredChildren.length > 0) + + if (shouldKeep) { + acc.push({ + ...item, + children: filteredChildren + }) + } + return acc + }, []) + } + + /** + * 递归过滤空菜单项 + */ + private filterEmptyMenus(menuList: AppRouteRecord[]): AppRouteRecord[] { + return menuList + .map((item) => { + // 如果有子菜单,先递归过滤子菜单 + if (item.children && item.children.length > 0) { + const filteredChildren = this.filterEmptyMenus(item.children) + return { + ...item, + children: filteredChildren + } + } + return item + }) + .filter((item) => { + // 如果定义了 children 属性(即使是空数组),说明这是一个目录菜单,应该保留 + if ('children' in item) { + return true + } + + // 如果有外链或 iframe,保留 + if (item.meta?.isIframe === true || item.meta?.link) { + return true + } + + // 如果有有效的 component,保留 + if (item.component && item.component !== '' && item.component !== RoutesAlias.Layout) { + return true + } + + // 其他情况过滤掉 + return false + }) + } + + /** + * 验证菜单列表是否有效 + */ + validateMenuList(menuList: AppRouteRecord[]): boolean { + return Array.isArray(menuList) && menuList.length > 0 + } + + /** + * 规范化菜单路径 + * 将相对路径转换为完整路径,确保菜单跳转正确 + */ + private normalizeMenuPaths(menuList: AppRouteRecord[], parentPath = ''): AppRouteRecord[] { + return menuList.map((item) => { + // 构建完整路径 + const fullPath = this.buildFullPath(item.path || '', parentPath) + + // 递归处理子菜单 + const children = item.children?.length + ? this.normalizeMenuPaths(item.children, fullPath) + : item.children + + const redirect = item.redirect || this.resolveDefaultRedirect(children) + + return { + ...item, + path: fullPath, + redirect, + children + } + }) + } + + /** + * 为目录型菜单推导默认跳转地址 + */ + private resolveDefaultRedirect(children?: AppRouteRecord[]): string | undefined { + if (!children?.length) { + return undefined + } + + for (const child of children) { + if (this.isNavigableRoute(child)) { + return child.path + } + + const nestedRedirect = this.resolveDefaultRedirect(child.children) + if (nestedRedirect) { + return nestedRedirect + } + } + + return undefined + } + + /** + * 判断子路由是否可以作为默认落点 + */ + private isNavigableRoute(route: AppRouteRecord): boolean { + return Boolean( + route.path && + route.path !== '/' && + !route.meta?.link && + route.meta?.isIframe !== true && + route.component && + route.component !== '' + ) + } + + /** + * 验证菜单路径配置 + * 检测非一级菜单是否错误使用了 / 开头的路径 + */ + /** + * 验证菜单路径配置 + * 检测非一级菜单是否错误使用了 / 开头的路径 + */ + private validateMenuPaths(menuList: AppRouteRecord[], level = 1): void { + menuList.forEach((route) => { + if (!route.children?.length) return + + const parentName = String(route.name || route.path || '未知路由') + + route.children.forEach((child) => { + const childPath = child.path || '' + + // 跳过合法的绝对路径:外部链接和 iframe 路由 + if (this.isValidAbsolutePath(childPath)) return + + // 检测非法的绝对路径 + if (childPath.startsWith('/')) { + this.logPathError(child, childPath, parentName, level) + } + }) + + // 递归检查更深层级的子路由 + this.validateMenuPaths(route.children, level + 1) + }) + } + + /** + * 判断是否为合法的绝对路径 + */ + private isValidAbsolutePath(path: string): boolean { + return ( + path.startsWith('http://') || + path.startsWith('https://') || + path.startsWith('/outside/iframe/') + ) + } + + /** + * 输出路径配置错误日志 + */ + private logPathError( + route: AppRouteRecord, + path: string, + parentName: string, + level: number + ): void { + const routeName = String(route.name || path || '未知路由') + const menuTitle = route.meta?.title || routeName + const suggestedPath = path.split('/').pop() || path.slice(1) + + console.error( + `[路由配置错误] 菜单 "${formatMenuTitle(menuTitle)}" (name: ${routeName}, path: ${path}) 配置错误\n` + + ` 位置: ${parentName} > ${routeName}\n` + + ` 问题: ${level + 1}级菜单的 path 不能以 / 开头\n` + + ` 当前配置: path: '${path}'\n` + + ` 应该改为: path: '${suggestedPath}'` + ) + } + + /** + * 构建完整路径 + */ + private buildFullPath(path: string, parentPath: string): string { + if (!path) return '' + + // 外部链接直接返回 + if (path.startsWith('http://') || path.startsWith('https://')) { + return path + } + + // 如果已经是绝对路径,直接返回 + if (path.startsWith('/')) { + return path + } + + // 拼接父路径和当前路径 + if (parentPath) { + // 移除父路径末尾的斜杠,移除子路径开头的斜杠,然后拼接 + const cleanParent = parentPath.replace(/\/$/, '') + const cleanChild = path.replace(/^\//, '') + return `${cleanParent}/${cleanChild}` + } + + // 没有父路径,添加前导斜杠 + return `/${path}` + } +} diff --git a/web-admin/src/router/core/RoutePermissionValidator.ts b/web-admin/src/router/core/RoutePermissionValidator.ts new file mode 100644 index 00000000..1e607e08 --- /dev/null +++ b/web-admin/src/router/core/RoutePermissionValidator.ts @@ -0,0 +1,161 @@ +/** + * 路由权限验证模块 + * + * 提供路由权限验证和路径检查功能 + * + * ## 主要功能 + * + * - 验证路径是否在用户菜单权限中 + * - 构建菜单路径集合(扁平化处理) + * - 支持动态路由参数匹配 + * - 路径前缀匹配 + * + * ## 使用场景 + * + * - 路由守卫中验证用户权限 + * - 动态路由注册后的权限检查 + * - 防止用户访问无权限的页面 + * + * @module router/core/RoutePermissionValidator + * @author Art Design Pro Team + */ + +import type { AppRouteRecord } from '@/types/router' + +/** + * 路由权限验证器 + */ +export class RoutePermissionValidator { + /** + * 验证路径是否在用户菜单权限中 + * @param targetPath 目标路径 + * @param menuList 菜单列表 + * @returns 是否有权限访问 + */ + static hasPermission(targetPath: string, menuList: AppRouteRecord[]): boolean { + // 根路径始终允许访问 + if (targetPath === '/') { + return true + } + + return this.matchRoute(targetPath, menuList) + } + + /** + * 构建菜单路径集合(扁平化处理) + * @param menuList 菜单列表 + * @param pathSet 路径集合 + * @returns 路径集合 + */ + static buildMenuPathSet( + menuList: AppRouteRecord[], + pathSet: Set = new Set() + ): Set { + if (!Array.isArray(menuList) || menuList.length === 0) { + return pathSet + } + + for (const menuItem of menuList) { + if (!menuItem.path) { + continue + } + + // 标准化路径并添加到集合 + const menuPath = menuItem.path.startsWith('/') ? menuItem.path : `/${menuItem.path}` + pathSet.add(menuPath) + + // 递归处理子菜单 + if (menuItem.children?.length) { + this.buildMenuPathSet(menuItem.children, pathSet) + } + } + + return pathSet + } + + /** + * 检查目标路径是否匹配集合中的某个路径前缀 + * 用于支持动态路由参数匹配,如 /user/123 匹配 /user + * @param targetPath 目标路径 + * @param pathSet 路径集合 + * @returns 是否匹配 + */ + static checkPathPrefix(targetPath: string, pathSet: Set): boolean { + // 遍历路径集合,检查是否有前缀匹配 + for (const menuPath of pathSet) { + if (targetPath.startsWith(`${menuPath}/`)) { + return true + } + } + return false + } + + /** + * 递归匹配路由配置,支持隐藏路由和动态参数路由 + */ + static matchRoute(targetPath: string, routes: AppRouteRecord[]): boolean { + if (!Array.isArray(routes) || routes.length === 0) { + return false + } + + for (const route of routes) { + if (!route.path) { + continue + } + + const routePath = route.path.startsWith('/') ? route.path : `/${route.path}` + + if ( + routePath === targetPath || + this.isDynamicRouteMatch(targetPath, routePath) || + targetPath.startsWith(`${routePath}/`) + ) { + return true + } + + if (route.children?.length && this.matchRoute(targetPath, route.children)) { + return true + } + } + + return false + } + + /** + * 检查目标路径是否匹配动态参数路由,如 /demo/123 匹配 /demo/:id + */ + static isDynamicRouteMatch(targetPath: string, routePath: string): boolean { + if (!routePath.includes(':')) { + return false + } + + const pattern = routePath + .replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + .replace(/:([^/]+)/g, '[^/]+') + .replace(/\\\*/g, '.*') + + return new RegExp(`^${pattern}$`).test(targetPath) + } + + /** + * 验证并返回有效的路径 + * 如果目标路径无权限,返回首页路径 + * @param targetPath 目标路径 + * @param menuList 菜单列表 + * @param homePath 首页路径 + * @returns 验证后的路径 + */ + static validatePath( + targetPath: string, + menuList: AppRouteRecord[], + homePath: string = '/' + ): { path: string; hasPermission: boolean } { + const hasPermission = this.hasPermission(targetPath, menuList) + + if (hasPermission) { + return { path: targetPath, hasPermission: true } + } + + return { path: homePath, hasPermission: false } + } +} diff --git a/web-admin/src/router/core/RouteRegistry.ts b/web-admin/src/router/core/RouteRegistry.ts new file mode 100644 index 00000000..e1acb9e1 --- /dev/null +++ b/web-admin/src/router/core/RouteRegistry.ts @@ -0,0 +1,90 @@ +/** + * 路由注册核心类 + * + * 负责动态路由的注册、验证和管理 + * + * @module router/core/RouteRegistry + * @author Art Design Pro Team + */ + +import type { Router, RouteRecordRaw } from 'vue-router' +import type { AppRouteRecord } from '@/types/router' +import { ComponentLoader } from './ComponentLoader' +import { RouteValidator } from './RouteValidator' +import { RouteTransformer } from './RouteTransformer' + +export class RouteRegistry { + private router: Router + private componentLoader: ComponentLoader + private validator: RouteValidator + private transformer: RouteTransformer + private removeRouteFns: (() => void)[] = [] + private registered = false + + constructor(router: Router) { + this.router = router + this.componentLoader = new ComponentLoader() + this.validator = new RouteValidator() + this.transformer = new RouteTransformer(this.componentLoader) + } + + /** + * 注册动态路由 + */ + register(menuList: AppRouteRecord[]): void { + if (this.registered) { + console.warn('[RouteRegistry] 路由已注册,跳过重复注册') + return + } + + // 验证路由配置 + const validationResult = this.validator.validate(menuList) + if (!validationResult.valid) { + throw new Error(`路由配置验证失败: ${validationResult.errors.join(', ')}`) + } + + // 转换并注册路由 + const removeRouteFns: (() => void)[] = [] + + menuList.forEach((route) => { + if (route.name && !this.router.hasRoute(route.name)) { + const routeConfig = this.transformer.transform(route) + const removeRouteFn = this.router.addRoute(routeConfig as RouteRecordRaw) + removeRouteFns.push(removeRouteFn) + } + }) + + this.removeRouteFns = removeRouteFns + this.registered = true + } + + /** + * 移除所有动态路由 + */ + unregister(): void { + this.removeRouteFns.forEach((fn) => fn()) + this.removeRouteFns = [] + this.registered = false + } + + /** + * 检查是否已注册 + */ + isRegistered(): boolean { + return this.registered + } + + /** + * 获取移除函数列表(用于 store 管理) + */ + getRemoveRouteFns(): (() => void)[] { + return this.removeRouteFns + } + + /** + * 标记为已注册(用于错误处理场景,避免重复请求) + */ + markAsRegistered(): void { + this.registered = true + } +} diff --git a/web-admin/src/router/core/RouteTransformer.ts b/web-admin/src/router/core/RouteTransformer.ts new file mode 100644 index 00000000..0f6900c5 --- /dev/null +++ b/web-admin/src/router/core/RouteTransformer.ts @@ -0,0 +1,132 @@ +/** + * 路由转换器 + * + * 负责将菜单数据转换为 Vue Router 路由配置 + * + * @module router/core/RouteTransformer + * @author Art Design Pro Team + */ + +import type { RouteRecordRaw } from 'vue-router' +import type { AppRouteRecord } from '@/types/router' +import { ComponentLoader } from './ComponentLoader' +import { IframeRouteManager } from './IframeRouteManager' + +interface ConvertedRoute extends Omit { + id?: number + children?: ConvertedRoute[] + component?: RouteRecordRaw['component'] | (() => Promise) +} + +export class RouteTransformer { + private componentLoader: ComponentLoader + private iframeManager: IframeRouteManager + + constructor(componentLoader: ComponentLoader) { + this.componentLoader = componentLoader + this.iframeManager = IframeRouteManager.getInstance() + } + + /** + * 转换路由配置 + */ + transform(route: AppRouteRecord, depth = 0): ConvertedRoute { + const { component, children, ...routeConfig } = route + + // 基础路由配置 + const converted: ConvertedRoute = { + ...routeConfig, + component: undefined + } + + // 处理不同类型的路由 + if (route.meta.isIframe) { + this.handleIframeRoute(converted, route, depth) + } else if (this.isFirstLevelRoute(route, depth)) { + this.handleFirstLevelRoute(converted, route, component as string) + } else { + this.handleNormalRoute(converted, component as string) + } + + // 递归处理子路由 + if (children?.length) { + converted.children = children.map((child) => this.transform(child, depth + 1)) + } + + return converted + } + + /** + * 判断是否为一级路由(需要 Layout 包裹) + */ + private isFirstLevelRoute(route: AppRouteRecord, depth: number): boolean { + return depth === 0 && (!route.children || route.children.length === 0) + } + + /** + * 处理 iframe 类型路由 + */ + private handleIframeRoute( + targetRoute: ConvertedRoute, + sourceRoute: AppRouteRecord, + depth: number + ): void { + if (depth === 0) { + // 顶级 iframe:用 Layout 包裹 + targetRoute.component = this.componentLoader.loadLayout() + targetRoute.path = this.extractFirstSegment(sourceRoute.path || '') + targetRoute.name = '' + + targetRoute.children = [ + { + ...sourceRoute, + component: this.componentLoader.loadIframe() + } as ConvertedRoute + ] + } else { + // 非顶级(嵌套)iframe:直接使用 Iframe.vue + targetRoute.component = this.componentLoader.loadIframe() + } + + // 记录 iframe 路由 + this.iframeManager.add(sourceRoute) + } + + /** + * 处理一级菜单路由 + */ + private handleFirstLevelRoute( + converted: ConvertedRoute, + route: AppRouteRecord, + component: string | undefined + ): void { + converted.component = this.componentLoader.loadLayout() + converted.path = this.extractFirstSegment(route.path || '') + converted.name = '' + route.meta.isFirstLevel = true + + converted.children = [ + { + ...route, + component: component ? this.componentLoader.load(component) : undefined + } as ConvertedRoute + ] + } + + /** + * 处理普通路由 + */ + private handleNormalRoute(converted: ConvertedRoute, component: string | undefined): void { + if (component) { + converted.component = this.componentLoader.load(component) + } + } + + /** + * 提取路径的第一段 + */ + private extractFirstSegment(path: string): string { + const segments = path.split('/').filter(Boolean) + return segments.length > 0 ? `/${segments[0]}` : '/' + } +} diff --git a/web-admin/src/router/core/RouteValidator.ts b/web-admin/src/router/core/RouteValidator.ts new file mode 100644 index 00000000..f8e58fc7 --- /dev/null +++ b/web-admin/src/router/core/RouteValidator.ts @@ -0,0 +1,187 @@ +/** + * 路由验证器 + * + * 负责验证路由配置的合法性 + * + * @module router/core/RouteValidator + * @author Art Design Pro Team + */ + +import type { AppRouteRecord } from '@/types/router' +import { RoutesAlias } from '../routesAlias' + +export interface ValidationResult { + valid: boolean + errors: string[] + warnings: string[] +} + +export class RouteValidator { + // 用于记录已经提示过的路由,避免重复提示 + private warnedRoutes = new Set() + + /** + * 验证路由配置 + */ + validate(routes: AppRouteRecord[]): ValidationResult { + const errors: string[] = [] + const warnings: string[] = [] + + // 检测重复路由 + this.checkDuplicates(routes, errors, warnings) + + // 检测组件配置 + this.checkComponents(routes, errors, warnings) + + // 检测嵌套菜单的 /index/index 配置 + this.checkNestedIndexComponent(routes) + + return { + valid: errors.length === 0, + errors, + warnings + } + } + + /** + * 检测重复路由 + */ + private checkDuplicates( + routes: AppRouteRecord[], + errors: string[], + warnings: string[], + parentPath = '' + ): void { + const routeNameMap = new Map() + const componentPathMap = new Map() + + const checkRoutes = (routes: AppRouteRecord[], parentPath = '') => { + routes.forEach((route) => { + const currentPath = route.path || '' + const fullPath = this.resolvePath(parentPath, currentPath) + + // 名称重复检测 + if (route.name) { + const routeName = String(route.name) + if (routeNameMap.has(routeName)) { + warnings.push(`路由名称重复: "${routeName}" (${fullPath})`) + } else { + routeNameMap.set(routeName, fullPath) + } + } + + // 组件路径重复检测 + if (route.component && typeof route.component === 'string') { + const componentPath = route.component + if (componentPath !== RoutesAlias.Layout) { + const componentKey = `${parentPath}:${componentPath}` + if (componentPathMap.has(componentKey)) { + warnings.push(`组件路径重复: "${componentPath}" (${fullPath})`) + } else { + componentPathMap.set(componentKey, fullPath) + } + } + } + + // 递归处理子路由 + if (route.children?.length) { + checkRoutes(route.children, fullPath) + } + }) + } + + checkRoutes(routes, parentPath) + } + + /** + * 检测组件配置 + */ + private checkComponents( + routes: AppRouteRecord[], + errors: string[], + warnings: string[], + parentPath = '' + ): void { + routes.forEach((route) => { + const hasExternalLink = !!route.meta?.link?.trim() + const hasChildren = Array.isArray(route.children) && route.children.length > 0 + const routePath = route.path || '[未定义路径]' + const isIframe = route.meta?.isIframe + + // 如果配置了 component,则无需校验 + if (route.component) { + // 递归检查子路由 + if (route.children?.length) { + const fullPath = this.resolvePath(parentPath, route.path || '') + this.checkComponents(route.children, errors, warnings, fullPath) + } + return + } + + // 一级菜单:必须指定 Layout,除非是外链或 iframe + if (parentPath === '' && !hasExternalLink && !isIframe) { + errors.push(`一级菜单(${routePath}) 缺少 component,必须指向 ${RoutesAlias.Layout}`) + return + } + + // 非一级菜单:如果既不是外链、iframe,也没有子路由,则必须配置 component + if (!hasExternalLink && !isIframe && !hasChildren) { + errors.push(`路由(${routePath}) 缺少 component 配置`) + } + + // 递归检查子路由 + if (route.children?.length) { + const fullPath = this.resolvePath(parentPath, route.path || '') + this.checkComponents(route.children, errors, warnings, fullPath) + } + }) + } + + /** + * 检测嵌套菜单的 Layout 组件配置 + * 只有一级菜单才能使用 Layout,二级及以下菜单不能使用 + */ + private checkNestedIndexComponent(routes: AppRouteRecord[], level = 1): void { + routes.forEach((route) => { + // 检查二级及以下菜单是否错误使用了 Layout + if (level > 1 && route.component === RoutesAlias.Layout) { + this.logLayoutError(route, level) + } + + // 递归检查子路由 + if (route.children?.length) { + this.checkNestedIndexComponent(route.children, level + 1) + } + }) + } + + /** + * 输出 Layout 组件配置错误日志 + */ + private logLayoutError(route: AppRouteRecord, level: number): void { + const routeName = String(route.name || route.path || '未知路由') + const routeKey = `${routeName}_${route.path}` + + // 避免重复提示 + if (this.warnedRoutes.has(routeKey)) return + this.warnedRoutes.add(routeKey) + + const menuTitle = route.meta?.title || routeName + const routePath = route.path || '/' + + console.error( + `[路由配置错误] 菜单 "${menuTitle}" (name: ${routeName}, path: ${routePath}) 配置错误\n` + + ` 问题: ${level}级菜单不能使用 ${RoutesAlias.Layout} 作为 component\n` + + ` 说明: 只有一级菜单才能使用 ${RoutesAlias.Layout},二级及以下菜单应该指向具体的组件路径\n` + + ` 当前配置: component: '${RoutesAlias.Layout}'\n` + + ` 应该改为: component: '/your/component/path' 或留空 ''(如果是目录菜单)` + ) + } + + /** + * 路径解析 + */ + private resolvePath(parent: string, child: string): string { + return [parent.replace(/\/$/, ''), child.replace(/^\//, '')].filter(Boolean).join('/') + } +} diff --git a/web-admin/src/router/core/index.ts b/web-admin/src/router/core/index.ts new file mode 100644 index 00000000..fcfecfc8 --- /dev/null +++ b/web-admin/src/router/core/index.ts @@ -0,0 +1,14 @@ +/** + * 路由核心模块导出 + * + * @module router/core + * @author Art Design Pro Team + */ + +export { RouteRegistry } from './RouteRegistry' +export { ComponentLoader } from './ComponentLoader' +export { RouteValidator } from './RouteValidator' +export { RouteTransformer } from './RouteTransformer' +export { IframeRouteManager } from './IframeRouteManager' +export { MenuProcessor } from './MenuProcessor' +export { RoutePermissionValidator } from './RoutePermissionValidator' diff --git a/web-admin/src/router/guards/afterEach.ts b/web-admin/src/router/guards/afterEach.ts new file mode 100644 index 00000000..d60572da --- /dev/null +++ b/web-admin/src/router/guards/afterEach.ts @@ -0,0 +1,34 @@ +import { nextTick } from 'vue' +import { useSettingStore } from '@/store/modules/setting' +import { Router } from 'vue-router' +import NProgress from 'nprogress' +import { useCommon } from '@/hooks/core/useCommon' +import { loadingService } from '@/utils/ui' +import { getPendingLoading, resetPendingLoading } from './beforeEach' + +/** 路由全局后置守卫 */ +export function setupAfterEachGuard(router: Router) { + const { scrollToTop } = useCommon() + + router.afterEach(() => { + scrollToTop() + + // 关闭进度条 + const settingStore = useSettingStore() + if (settingStore.showNprogress) { + NProgress.done() + // 确保进度条完全移除,避免残影 + setTimeout(() => { + NProgress.remove() + }, 600) + } + + // 关闭 loading 效果 + if (getPendingLoading()) { + nextTick(() => { + loadingService.hideLoading() + resetPendingLoading() + }) + } + }) +} diff --git a/web-admin/src/router/guards/beforeEach.ts b/web-admin/src/router/guards/beforeEach.ts new file mode 100644 index 00000000..197b619e --- /dev/null +++ b/web-admin/src/router/guards/beforeEach.ts @@ -0,0 +1,426 @@ +/** + * 路由全局前置守卫模块 + * + * 提供完整的路由导航守卫功能 + * + * ## 主要功能 + * + * - 登录状态验证和重定向 + * - 动态路由注册和权限控制 + * - 菜单数据获取和处理(前端/后端模式) + * - 用户信息获取和缓存 + * - 页面标题设置 + * - 工作标签页管理 + * - 进度条和加载动画控制 + * - 静态路由识别和处理 + * - 错误处理和异常跳转 + * + * ## 使用场景 + * + * - 路由跳转前的权限验证 + * - 动态菜单加载和路由注册 + * - 用户登录状态管理 + * - 页面访问控制 + * - 路由级别的加载状态管理 + * + * ## 工作流程 + * + * 1. 检查登录状态,未登录跳转到登录页 + * 2. 首次访问时获取用户信息和菜单数据 + * 3. 根据权限动态注册路由 + * 4. 设置页面标题和工作标签页 + * 5. 处理根路径重定向到首页 + * 6. 未匹配路由跳转到 404 页面 + * + * @module router/guards/beforeEach + * @author Art Design Pro Team + */ +import type { Router, RouteLocationNormalized, NavigationGuardNext } from 'vue-router' +import { nextTick } from 'vue' +import NProgress from 'nprogress' +import { useSettingStore } from '@/store/modules/setting' +import { useUserStore } from '@/store/modules/user' +import { useMenuStore } from '@/store/modules/menu' +import { setWorktab } from '@/utils/navigation' +import { setPageTitle } from '@/utils/router' +import { RoutesAlias } from '../routesAlias' +import { staticRoutes } from '../routes/staticRoutes' +import { loadingService } from '@/utils/ui' +import { useCommon } from '@/hooks/core/useCommon' +import { useWorktabStore } from '@/store/modules/worktab' +import { fetchGetUserInfo } from '@/api/auth' +import { ApiStatus } from '@/utils/http/status' +import { isHttpError } from '@/utils/http/error' +import { RouteRegistry, MenuProcessor, IframeRouteManager, RoutePermissionValidator } from '../core' +import AppConfig from '@/config' + +// 路由注册器实例 +let routeRegistry: RouteRegistry | null = null + +// 菜单处理器实例 +const menuProcessor = new MenuProcessor() + +// 跟踪是否需要关闭 loading +let pendingLoading = false + +// 路由初始化失败标记,防止死循环 +// 一旦设置为 true,只有刷新页面或重新登录才能重置 +let routeInitFailed = false + +// 路由初始化进行中标记,防止并发请求 +let routeInitInProgress = false + +/** + * 获取 pendingLoading 状态 + */ +export function getPendingLoading(): boolean { + return pendingLoading +} + +/** + * 重置 pendingLoading 状态 + */ +export function resetPendingLoading(): void { + pendingLoading = false +} + +/** + * 获取路由初始化失败状态 + */ +export function getRouteInitFailed(): boolean { + return routeInitFailed +} + +/** + * 重置路由初始化状态(用于重新登录场景) + */ +export function resetRouteInitState(): void { + routeInitFailed = false + routeInitInProgress = false +} + +/** + * 设置路由全局前置守卫 + */ +export function setupBeforeEachGuard(router: Router): void { + // 初始化路由注册器 + routeRegistry = new RouteRegistry(router) + + router.beforeEach( + async ( + to: RouteLocationNormalized, + from: RouteLocationNormalized, + next: NavigationGuardNext + ) => { + try { + await handleRouteGuard(to, from, next, router) + } catch (error) { + console.error('[RouteGuard] 路由守卫处理失败:', error) + closeLoading() + next({ name: 'Exception500' }) + } + } + ) +} + +/** + * 关闭 loading 效果 + */ +function closeLoading(): void { + if (pendingLoading) { + nextTick(() => { + loadingService.hideLoading() + pendingLoading = false + }) + } +} + +/** + * 处理路由守卫逻辑 + */ +async function handleRouteGuard( + to: RouteLocationNormalized, + from: RouteLocationNormalized, + next: NavigationGuardNext, + router: Router +): Promise { + const settingStore = useSettingStore() + const userStore = useUserStore() + + // 启动进度条 + if (settingStore.showNprogress) { + NProgress.start() + } + + // 1. 检查登录状态 + if (!handleLoginStatus(to, userStore, next)) { + return + } + + // 2. 检查路由初始化是否已失败(防止死循环) + if (routeInitFailed) { + // 已经失败过,直接放行到错误页面,不再重试 + if (to.matched.length > 0) { + next() + } else { + // 未匹配到路由,跳转到 500 页面 + next({ name: 'Exception500', replace: true }) + } + return + } + + // 3. 处理动态路由注册 + if (!routeRegistry?.isRegistered() && userStore.isLogin) { + // 防止并发请求(快速连续导航场景) + if (routeInitInProgress) { + // 正在初始化中,等待完成后重新导航 + next(false) + return + } + await handleDynamicRoutes(to, next, router) + return + } + + // 4. 处理根路径重定向 + if (handleRootPathRedirect(to, next)) { + return + } + + // 5. 处理已匹配的路由 + if (to.matched.length > 0) { + setWorktab(to) + setPageTitle(to) + next() + return + } + + // 6. 未匹配到路由,跳转到 404 + next({ name: 'Exception404' }) +} + +/** + * 处理登录状态 + * @returns true 表示可以继续,false 表示已处理跳转 + */ +function handleLoginStatus( + to: RouteLocationNormalized, + userStore: ReturnType, + next: NavigationGuardNext +): boolean { + // 纯样式骨架:不校验登录态 + if (AppConfig.stylePreviewOnly) { + return true + } + + // 已登录或访问登录页或静态路由,直接放行 + if (userStore.isLogin || to.path === RoutesAlias.Login || isStaticRoute(to.path)) { + return true + } + + // 未登录且访问需要权限的页面,跳转到登录页并携带 redirect 参数 + userStore.logOut() + next({ + name: 'Login', + query: { redirect: to.fullPath } + }) + return false +} + +/** + * 检查路由是否为静态路由 + */ +function isStaticRoute(path: string): boolean { + const checkRoute = (routes: any[], targetPath: string): boolean => { + return routes.some((route) => { + // 404 catch-all 路由不应视为可匿名访问的静态页, + // 否则未登录时手动输入任意地址会直接落到 404,无法跳转登录页。 + if (route.name === 'Exception404') { + return false + } + + // 处理动态路由参数匹配 + const routePath = route.path + const pattern = routePath.replace(/:[^/]+/g, '[^/]+').replace(/\*/g, '.*') + const regex = new RegExp(`^${pattern}$`) + + if (regex.test(targetPath)) { + return true + } + if (route.children && route.children.length > 0) { + return checkRoute(route.children, targetPath) + } + return false + }) + } + + return checkRoute(staticRoutes, path) +} + +/** + * 处理动态路由注册 + */ +async function handleDynamicRoutes( + to: RouteLocationNormalized, + next: NavigationGuardNext, + router: Router +): Promise { + // 标记初始化进行中 + routeInitInProgress = true + + // 显示 loading + pendingLoading = true + loadingService.showLoading() + + try { + // 1. 获取用户信息(样式骨架模式跳过接口) + if (!AppConfig.stylePreviewOnly) { + await fetchUserInfo() + } + + // 2. 获取菜单数据 + const menuList = await menuProcessor.getMenuList() + + // 3. 验证菜单数据 + if (!menuProcessor.validateMenuList(menuList)) { + throw new Error('获取菜单列表失败,请重新登录') + } + + // 4. 注册动态路由 + routeRegistry?.register(menuList) + + // 5. 保存菜单数据到 store + const menuStore = useMenuStore() + menuStore.setMenuList(menuList) + menuStore.addRemoveRouteFns(routeRegistry?.getRemoveRouteFns() || []) + + // 6. 保存 iframe 路由 + IframeRouteManager.getInstance().save() + + // 7. 验证工作标签页 + useWorktabStore().validateWorktabs(router) + + // 8. 静态路由不依赖菜单权限,初始化后直接恢复目标地址。 + if (isStaticRoute(to.path)) { + routeInitInProgress = false + next({ + path: to.path, + query: to.query, + hash: to.hash, + replace: true + }) + return + } + + // 8. 验证目标路径权限 + const { homePath } = useCommon() + const { path: validatedPath, hasPermission } = RoutePermissionValidator.validatePath( + to.path, + menuList, + homePath.value || '/' + ) + + // 初始化成功,重置进行中标记 + routeInitInProgress = false + + // 9. 重新导航到目标路由 + if (!hasPermission) { + // 无权限访问,跳转到首页 + closeLoading() + + // 输出警告信息 + console.warn(`[RouteGuard] 用户无权限访问路径: ${to.path},已跳转到首页`) + + // 直接跳转到首页 + next({ + path: validatedPath, + replace: true + }) + } else { + // 有权限,正常导航 + next({ + path: to.path, + query: to.query, + hash: to.hash, + replace: true + }) + } + } catch (error) { + console.error('[RouteGuard] 动态路由注册失败:', error) + + // 关闭 loading + closeLoading() + + // 401 错误:axios 拦截器已处理退出登录,取消当前导航 + if (isUnauthorizedError(error)) { + // 重置状态,允许重新登录后再次初始化 + routeInitInProgress = false + next(false) + return + } + + // 标记初始化失败,防止死循环 + routeInitFailed = true + routeInitInProgress = false + + // 输出详细错误信息,便于排查 + if (isHttpError(error)) { + console.error(`[RouteGuard] 错误码: ${error.code}, 消息: ${error.message}`) + } + + // 跳转到 500 页面,使用 replace 避免产生历史记录 + next({ name: 'Exception500', replace: true }) + } +} + +/** + * 获取用户信息 + */ +async function fetchUserInfo(): Promise { + const userStore = useUserStore() + const data = await fetchGetUserInfo() + userStore.setUserInfo(data) + // 检查并清理工作台标签页(如果是不同用户登录) + userStore.checkAndClearWorktabs() +} + +/** + * 重置路由相关状态 + */ +export function resetRouterState(delay: number): void { + setTimeout(() => { + routeRegistry?.unregister() + IframeRouteManager.getInstance().clear() + + const menuStore = useMenuStore() + menuStore.removeAllDynamicRoutes() + menuStore.setMenuList([]) + + // 重置路由初始化状态,允许重新登录后再次初始化 + resetRouteInitState() + }, delay) +} + +/** + * 处理根路径重定向到首页 + * @returns true 表示已处理跳转,false 表示无需跳转 + */ +function handleRootPathRedirect(to: RouteLocationNormalized, next: NavigationGuardNext): boolean { + if (to.path !== '/') { + return false + } + + const { homePath } = useCommon() + if (homePath.value && homePath.value !== '/') { + next({ path: homePath.value, replace: true }) + return true + } + + return false +} + +/** + * 判断是否为未授权错误(401) + */ +function isUnauthorizedError(error: unknown): boolean { + return isHttpError(error) && error.code === ApiStatus.unauthorized +} diff --git a/web-admin/src/router/index.ts b/web-admin/src/router/index.ts new file mode 100755 index 00000000..286ae582 --- /dev/null +++ b/web-admin/src/router/index.ts @@ -0,0 +1,23 @@ +import type { App } from 'vue' +import { createRouter, createWebHashHistory } from 'vue-router' +import { staticRoutes } from './routes/staticRoutes' +import { configureNProgress } from '@/utils/router' +import { setupBeforeEachGuard } from './guards/beforeEach' +import { setupAfterEachGuard } from './guards/afterEach' + +// 创建路由实例 +export const router = createRouter({ + history: createWebHashHistory(), + routes: staticRoutes // 静态路由 +}) + +// 初始化路由 +export function initRouter(app: App): void { + configureNProgress() // 顶部进度条 + setupBeforeEachGuard(router) // 路由前置守卫 + setupAfterEachGuard(router) // 路由后置守卫 + app.use(router) +} + +// 主页路径,默认使用菜单第一个有效路径,配置后使用此路径 +export const HOME_PAGE_PATH = '' diff --git a/web-admin/src/router/modules/article.ts b/web-admin/src/router/modules/article.ts new file mode 100644 index 00000000..fd4ef7ab --- /dev/null +++ b/web-admin/src/router/modules/article.ts @@ -0,0 +1,60 @@ +import { AppRouteRecord } from '@/types/router' + +export const articleRoutes: AppRouteRecord = { + path: '/article', + name: 'Article', + component: '/index/index', + meta: { + title: 'menus.article.title', + icon: 'ri:book-2-line', + roles: ['R_SUPER', 'R_ADMIN'] + }, + children: [ + { + path: 'article-list', + name: 'ArticleList', + component: '/article/list', + meta: { + title: 'menus.article.articleList', + icon: 'ri:article-line', + keepAlive: true, + authList: [ + { title: '新增', authMark: 'add' }, + { title: '编辑', authMark: 'edit' } + ] + } + }, + { + path: 'detail/:id', + name: 'ArticleDetail', + component: '/article/detail', + meta: { + title: 'menus.article.articleDetail', + isHide: true, + keepAlive: true, + activePath: '/article/article-list' + } + }, + { + path: 'comment', + name: 'ArticleComment', + component: '/article/comment', + meta: { + title: 'menus.article.comment', + icon: 'ri:mail-line', + keepAlive: true + } + }, + { + path: 'publish', + name: 'ArticlePublish', + component: '/article/publish', + meta: { + title: 'menus.article.articlePublish', + icon: 'ri:telegram-2-line', + keepAlive: true, + authList: [{ title: '发布', authMark: 'add' }] + } + } + ] +} diff --git a/web-admin/src/router/modules/exception.ts b/web-admin/src/router/modules/exception.ts new file mode 100644 index 00000000..84b0eb69 --- /dev/null +++ b/web-admin/src/router/modules/exception.ts @@ -0,0 +1,46 @@ +import { AppRouteRecord } from '@/types/router' + +export const exceptionRoutes: AppRouteRecord = { + path: '/exception', + name: 'Exception', + component: '/index/index', + meta: { + title: 'menus.exception.title', + icon: 'ri:error-warning-line' + }, + children: [ + { + path: '403', + name: 'Exception403', + component: '/exception/403/index', + meta: { + title: 'menus.exception.forbidden', + keepAlive: true, + isHideTab: true, + isFullPage: true + } + }, + { + path: '404', + name: 'Exception404', + component: '/exception/404/index', + meta: { + title: 'menus.exception.notFound', + keepAlive: true, + isHideTab: true, + isFullPage: true + } + }, + { + path: '500', + name: 'Exception500', + component: '/exception/500/index', + meta: { + title: 'menus.exception.serverError', + keepAlive: true, + isHideTab: true, + isFullPage: true + } + } + ] +} diff --git a/web-admin/src/router/modules/help.ts b/web-admin/src/router/modules/help.ts new file mode 100644 index 00000000..1c2a331e --- /dev/null +++ b/web-admin/src/router/modules/help.ts @@ -0,0 +1,52 @@ +import { AppRouteRecord } from '@/types/router' +import { WEB_LINKS } from '@/utils/constants' + +export const helpRoutes: AppRouteRecord[] = [ + { + name: 'Document', + path: '', + component: '', + meta: { + title: 'menus.help.document', + icon: 'ri:bill-line', + link: WEB_LINKS.DOCS, + isIframe: false, + keepAlive: false + } + }, + { + name: 'LiteVersion', + path: '', + component: '', + meta: { + title: 'menus.help.liteVersion', + icon: 'ri:bus-2-line', + link: WEB_LINKS.LiteVersion, + isIframe: false, + keepAlive: false + } + }, + { + name: 'OldVersion', + path: '', + component: '', + meta: { + title: 'menus.help.oldVersion', + icon: 'ri:subway-line', + link: WEB_LINKS.OldVersion, + isIframe: false, + keepAlive: false + } + }, + { + name: 'ChangeLog', + path: '/change/log', + component: '/change/log/index', + meta: { + title: 'menus.plan.log', + showTextBadge: `v${__APP_VERSION__}`, + icon: 'ri:gamepad-line', + keepAlive: false + } + } +] diff --git a/web-admin/src/router/modules/index.ts b/web-admin/src/router/modules/index.ts new file mode 100644 index 00000000..6a327c44 --- /dev/null +++ b/web-admin/src/router/modules/index.ts @@ -0,0 +1,7 @@ +import { AppRouteRecord } from '@/types/router' +import { styleReferenceRoutes } from './style-reference' + +/** + * 动态路由(纯样式骨架:无业务菜单) + */ +export const routeModules: AppRouteRecord[] = [...styleReferenceRoutes] diff --git a/web-admin/src/router/modules/result.ts b/web-admin/src/router/modules/result.ts new file mode 100644 index 00000000..2bca067f --- /dev/null +++ b/web-admin/src/router/modules/result.ts @@ -0,0 +1,33 @@ +import { AppRouteRecord } from '@/types/router' + +export const resultRoutes: AppRouteRecord = { + path: '/result', + name: 'Result', + component: '/index/index', + meta: { + title: 'menus.result.title', + icon: 'ri:checkbox-circle-line' + }, + children: [ + { + path: 'success', + name: 'ResultSuccess', + component: '/result/success/index', + meta: { + title: 'menus.result.success', + icon: 'ri:checkbox-circle-line', + keepAlive: true + } + }, + { + path: 'fail', + name: 'ResultFail', + component: '/result/fail/index', + meta: { + title: 'menus.result.fail', + icon: 'ri:close-circle-line', + keepAlive: true + } + } + ] +} diff --git a/web-admin/src/router/modules/safeguard.ts b/web-admin/src/router/modules/safeguard.ts new file mode 100644 index 00000000..aac5de3d --- /dev/null +++ b/web-admin/src/router/modules/safeguard.ts @@ -0,0 +1,24 @@ +import { AppRouteRecord } from '@/types/router' + +export const safeguardRoutes: AppRouteRecord = { + path: '/safeguard', + name: 'Safeguard', + component: '/index/index', + meta: { + title: 'menus.safeguard.title', + icon: 'ri:shield-check-line', + keepAlive: false + }, + children: [ + { + path: 'server', + name: 'SafeguardServer', + component: '/safeguard/server/index', + meta: { + title: 'menus.safeguard.server', + icon: 'ri:hard-drive-3-line', + keepAlive: true + } + } + ] +} diff --git a/web-admin/src/router/modules/style-reference.ts b/web-admin/src/router/modules/style-reference.ts new file mode 100644 index 00000000..6af0ebb6 --- /dev/null +++ b/web-admin/src/router/modules/style-reference.ts @@ -0,0 +1,47 @@ +import type { AppRouteRecord } from '@/types/router' + +/** + * 仅保留界面样式参考:Mint 列表演示、登录区布局、Token 面板 + */ +export const styleReferenceRoutes: AppRouteRecord[] = [ + { + id: 1, + name: 'StylePreview', + path: '/preview', + component: '/index/index', + meta: { + title: '样式参考', + icon: 'ri:palette-line', + keepAlive: false, + roles: ['admin'] + }, + children: [ + { + id: 2, + name: 'MintListDemo', + path: 'mint-list', + component: '/style-reference/delivery-demo/index', + meta: { + title: 'Mint 列表骨架', + keepAlive: true, + fixedTab: true, + menuCode: 'dashboard' + } + }, + { + id: 3, + name: 'LoginSample', + path: 'login-sample', + component: '/style-reference/login-sample/index', + meta: { title: '登录页样式', keepAlive: false } + }, + { + id: 4, + name: 'MintTokens', + path: 'mint-tokens', + component: '/style-reference/mint-tokens/index', + meta: { title: 'Mint Token 面板', keepAlive: false } + } + ] + } +] diff --git a/web-admin/src/router/routes/asyncRoutes.ts b/web-admin/src/router/routes/asyncRoutes.ts new file mode 100644 index 00000000..ccf1201c --- /dev/null +++ b/web-admin/src/router/routes/asyncRoutes.ts @@ -0,0 +1,9 @@ +// 权限文档:https://www.artd.pro/docs/zh/guide/in-depth/permission.html +import { AppRouteRecord } from '@/types/router' +import { routeModules } from '../modules' + +/** + * 动态路由(需要权限才能访问的路由) + * 用于渲染菜单以及根据菜单权限动态加载路由,如果没有权限无法访问 + */ +export const asyncRoutes: AppRouteRecord[] = routeModules diff --git a/web-admin/src/router/routes/staticRoutes.ts b/web-admin/src/router/routes/staticRoutes.ts new file mode 100644 index 00000000..fc58f4c9 --- /dev/null +++ b/web-admin/src/router/routes/staticRoutes.ts @@ -0,0 +1,25 @@ +import { AppRouteRecordRaw } from '@/utils/router' + +/** + * 静态路由(样式骨架:无登录/注册页) + */ +export const staticRoutes: AppRouteRecordRaw[] = [ + { + path: '/403', + name: 'Exception403', + component: () => import('@views/exception/403/index.vue'), + meta: { title: '403', isHideTab: true } + }, + { + path: '/500', + name: 'Exception500', + component: () => import('@views/exception/500/index.vue'), + meta: { title: '500', isHideTab: true } + }, + { + path: '/:pathMatch(.*)*', + name: 'Exception404', + component: () => import('@views/exception/404/index.vue'), + meta: { title: '404', isHideTab: true } + } +] diff --git a/web-admin/src/router/routesAlias.ts b/web-admin/src/router/routesAlias.ts new file mode 100644 index 00000000..73ac6310 --- /dev/null +++ b/web-admin/src/router/routesAlias.ts @@ -0,0 +1,8 @@ +/** + * 公共路由别名 + * 存放系统级公共路由路径,如布局容器、登录页等 + */ +export enum RoutesAlias { + Layout = '/index/index', // 布局容器 + Login = '/auth/login' // 登录页 +} diff --git a/web-admin/src/shims-loose.d.ts b/web-admin/src/shims-loose.d.ts new file mode 100644 index 00000000..2ff13dfb --- /dev/null +++ b/web-admin/src/shims-loose.d.ts @@ -0,0 +1,8 @@ +declare module 'vue' { + export interface GlobalComponents { + ElTag: any + ElOption: any + } +} + +export {} diff --git a/web-admin/src/store/index.ts b/web-admin/src/store/index.ts new file mode 100755 index 00000000..b485999a --- /dev/null +++ b/web-admin/src/store/index.ts @@ -0,0 +1,52 @@ +/** + * Pinia Store 配置模块 + * + * 提供全局状态管理的初始化和配置 + * + * ## 主要功能 + * + * - Pinia Store 实例创建 + * - 持久化插件配置(pinia-plugin-persistedstate) + * - 版本化存储键管理 + * - 自动数据迁移(跨版本) + * - LocalStorage 序列化配置 + * - Store 初始化函数 + * + * ## 持久化策略 + * + * - 使用 StorageKeyManager 生成版本化的存储键 + * - 格式:sys-v{version}-{storeId} + * - 自动迁移旧版本数据到当前版本 + * - 使用 localStorage 作为存储介质 + * + * @module store/index + * @author Art Design Pro Team + */ +import type { App } from 'vue' +import { createPinia } from 'pinia' +import { createPersistedState } from 'pinia-plugin-persistedstate' +import { StorageKeyManager } from '@/utils/storage/storage-key-manager' + +export const store = createPinia() + +// 创建存储键管理器实例 +const storageKeyManager = new StorageKeyManager() + +// 配置持久化插件 +store.use( + createPersistedState({ + key: (storeId: string) => storageKeyManager.getStorageKey(storeId), + storage: localStorage, + serializer: { + serialize: JSON.stringify, + deserialize: JSON.parse + } + }) +) + +/** + * 初始化 Store + */ +export function initStore(app: App): void { + app.use(store) +} diff --git a/web-admin/src/store/modules/menu.ts b/web-admin/src/store/modules/menu.ts new file mode 100755 index 00000000..85d13da1 --- /dev/null +++ b/web-admin/src/store/modules/menu.ts @@ -0,0 +1,109 @@ +/** + * 菜单状态管理模块 + * + * 提供菜单数据和动态路由的状态管理 + * + * ## 主要功能 + * + * - 菜单列表存储和管理 + * - 首页路径配置 + * - 动态路由注册和移除 + * - 路由移除函数管理 + * - 菜单宽度配置 + * + * ## 使用场景 + * + * - 动态菜单加载和渲染 + * - 路由权限控制 + * - 首页路径动态设置 + * - 登出时清理动态路由 + * + * ## 工作流程 + * + * 1. 获取菜单数据(前端/后端模式) + * 2. 设置菜单列表和首页路径 + * 3. 注册动态路由并保存移除函数 + * 4. 登出时调用移除函数清理路由 + * + * @module store/modules/menu + * @author Art Design Pro Team + */ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { AppRouteRecord } from '@/types/router' +import { getFirstMenuPath } from '@/utils' +import { HOME_PAGE_PATH } from '@/router' + +/** + * 菜单状态管理 + * 管理应用的菜单列表、首页路径、菜单宽度和动态路由移除函数 + */ +export const useMenuStore = defineStore('menuStore', () => { + /** 首页路径 */ + const homePath = ref(HOME_PAGE_PATH) + /** 菜单列表 */ + const menuList = ref([]) + /** 菜单宽度 */ + const menuWidth = ref('') + /** 存储路由移除函数的数组 */ + const removeRouteFns = ref<(() => void)[]>([]) + + /** + * 设置菜单列表 + * @param list 菜单路由记录数组 + */ + const setMenuList = (list: AppRouteRecord[]) => { + menuList.value = list + setHomePath(HOME_PAGE_PATH || getFirstMenuPath(list)) + } + + /** + * 获取首页路径 + * @returns 首页路径字符串 + */ + const getHomePath = () => homePath.value + + /** + * 设置主页路径 + * @param path 主页路径 + */ + const setHomePath = (path: string) => { + homePath.value = path + } + + /** + * 添加路由移除函数 + * @param fns 要添加的路由移除函数数组 + */ + const addRemoveRouteFns = (fns: (() => void)[]) => { + removeRouteFns.value.push(...fns) + } + + /** + * 移除所有动态路由 + * 执行所有存储的路由移除函数并清空数组 + */ + const removeAllDynamicRoutes = () => { + removeRouteFns.value.forEach((fn) => fn()) + removeRouteFns.value = [] + } + + /** + * 清空路由移除函数数组 + */ + const clearRemoveRouteFns = () => { + removeRouteFns.value = [] + } + + return { + menuList, + menuWidth, + removeRouteFns, + setMenuList, + getHomePath, + setHomePath, + addRemoveRouteFns, + removeAllDynamicRoutes, + clearRemoveRouteFns + } +}) diff --git a/web-admin/src/store/modules/setting.ts b/web-admin/src/store/modules/setting.ts new file mode 100755 index 00000000..28782597 --- /dev/null +++ b/web-admin/src/store/modules/setting.ts @@ -0,0 +1,450 @@ +/** + * 系统设置状态管理模块 + * + * 提供完整的系统设置状态管理 + * + * ## 主要功能 + * + * - 菜单布局配置(左侧、顶部、混合、双栏) + * - 主题管理(亮色、暗色、自动) + * - 菜单主题样式配置 + * - 界面显示开关(面包屑、标签页、语言切换等) + * - 功能开关(手风琴模式、色弱模式、水印等) + * - 样式配置(边框、圆角、容器宽度、页面过渡) + * - 节日功能配置 + * - Element Plus 主题色动态设置 + * + * ## 使用场景 + * + * - 设置面板配置管理 + * - 主题切换和样式定制 + * - 界面功能开关控制 + * - 用户偏好设置持久化 + * + * ## 持久化 + * + * - 使用 localStorage 存储 + * - 存储键:sys-v{version}-setting + * - 支持跨版本数据迁移 + * + * @module store/modules/setting + * @author Art Design Pro Team + */ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { MenuThemeType } from '@/types/store' +import AppConfig from '@/config' +import { SystemThemeEnum, MenuThemeEnum, MenuTypeEnum, ContainerWidthEnum } from '@/enums/appEnum' +import { setElementThemeColor } from '@/utils/ui' +import { useCeremony } from '@/hooks/core/useCeremony' +import { StorageConfig } from '@/utils' +import { SETTING_DEFAULT_CONFIG } from '@/config/setting' + +/** + * 系统设置状态管理 + * 管理应用的菜单、主题、界面显示等各项设置 + */ +export const useSettingStore = defineStore( + 'settingStore', + () => { + // 菜单相关设置 + /** 菜单类型 */ + const menuType = ref(SETTING_DEFAULT_CONFIG.menuType) + /** 菜单展开宽度 */ + const menuOpenWidth = ref(SETTING_DEFAULT_CONFIG.menuOpenWidth) + /** 菜单是否展开 */ + const menuOpen = ref(SETTING_DEFAULT_CONFIG.menuOpen) + /** 双菜单是否显示文本 */ + const dualMenuShowText = ref(SETTING_DEFAULT_CONFIG.dualMenuShowText) + + // 主题相关设置 + /** 系统主题类型 */ + const systemThemeType = ref(SETTING_DEFAULT_CONFIG.systemThemeType) + /** 系统主题模式 */ + const systemThemeMode = ref(SETTING_DEFAULT_CONFIG.systemThemeMode) + /** 菜单主题类型 */ + const menuThemeType = ref(SETTING_DEFAULT_CONFIG.menuThemeType) + /** 系统主题颜色 */ + const systemThemeColor = ref(SETTING_DEFAULT_CONFIG.systemThemeColor) + + // 界面显示设置 + /** 是否显示菜单按钮 */ + const showMenuButton = ref(SETTING_DEFAULT_CONFIG.showMenuButton) + /** 是否显示快速入口 */ + const showFastEnter = ref(SETTING_DEFAULT_CONFIG.showFastEnter) + /** 是否显示刷新按钮 */ + const showRefreshButton = ref(SETTING_DEFAULT_CONFIG.showRefreshButton) + /** 是否显示面包屑 */ + const showCrumbs = ref(SETTING_DEFAULT_CONFIG.showCrumbs) + /** 是否显示工作台标签 */ + const showWorkTab = ref(SETTING_DEFAULT_CONFIG.showWorkTab) + /** 是否显示语言切换 */ + const showLanguage = ref(SETTING_DEFAULT_CONFIG.showLanguage) + /** 是否显示进度条 */ + const showNprogress = ref(SETTING_DEFAULT_CONFIG.showNprogress) + /** 是否显示设置引导 */ + const showSettingGuide = ref(SETTING_DEFAULT_CONFIG.showSettingGuide) + /** 是否显示节日文本 */ + const showFestivalText = ref(SETTING_DEFAULT_CONFIG.showFestivalText) + /** 是否显示水印 */ + const watermarkVisible = ref(SETTING_DEFAULT_CONFIG.watermarkVisible) + + // 功能设置 + /** 是否自动关闭 */ + const autoClose = ref(SETTING_DEFAULT_CONFIG.autoClose) + /** 是否唯一展开 */ + const uniqueOpened = ref(SETTING_DEFAULT_CONFIG.uniqueOpened) + /** 是否色弱模式 */ + const colorWeak = ref(SETTING_DEFAULT_CONFIG.colorWeak) + /** 是否刷新 */ + const refresh = ref(SETTING_DEFAULT_CONFIG.refresh) + /** 是否加载节日烟花 */ + const holidayFireworksLoaded = ref(SETTING_DEFAULT_CONFIG.holidayFireworksLoaded) + + // 样式设置 + /** 边框模式 */ + const boxBorderMode = ref(SETTING_DEFAULT_CONFIG.boxBorderMode) + /** 页面过渡效果 */ + const pageTransition = ref(SETTING_DEFAULT_CONFIG.pageTransition) + /** 标签页样式 */ + const tabStyle = ref(SETTING_DEFAULT_CONFIG.tabStyle) + /** 自定义圆角 */ + const customRadius = ref(SETTING_DEFAULT_CONFIG.customRadius) + /** 容器宽度 */ + const containerWidth = ref(SETTING_DEFAULT_CONFIG.containerWidth) + + // 节日相关 + /** 节日日期 */ + const festivalDate = ref('') + + /** + * 获取菜单主题 + * 根据当前主题类型和暗色模式返回对应的主题配置 + */ + const getMenuTheme = computed((): MenuThemeType => { + const list = AppConfig.themeList.filter((item) => item.theme === menuThemeType.value) + if (isDark.value) { + return AppConfig.darkMenuStyles[0] + } else { + return list[0] + } + }) + + /** + * 判断是否为暗色模式 + */ + const isDark = computed((): boolean => { + return systemThemeType.value === SystemThemeEnum.DARK + }) + + /** + * 获取菜单展开宽度 + */ + const getMenuOpenWidth = computed((): string => { + return menuOpenWidth.value + 'px' || SETTING_DEFAULT_CONFIG.menuOpenWidth + 'px' + }) + + /** + * 获取自定义圆角 + */ + const getCustomRadius = computed((): string => { + return customRadius.value + 'rem' || SETTING_DEFAULT_CONFIG.customRadius + 'rem' + }) + + /** + * 是否显示烟花 + * 根据当前日期和节日日期判断是否显示烟花效果 + */ + const isShowFireworks = computed((): boolean => { + return festivalDate.value === useCeremony().currentFestivalData.value?.date ? false : true + }) + + /** + * 切换菜单布局 + * @param type 菜单类型 + */ + const switchMenuLayouts = (type: MenuTypeEnum) => { + menuType.value = type + } + + /** + * 设置菜单展开宽度 + * @param width 宽度值 + */ + const setMenuOpenWidth = (width: number) => { + menuOpenWidth.value = width + } + + /** + * 设置全局主题 + * @param theme 主题类型 + * @param themeMode 主题模式 + */ + const setGlopTheme = (theme: SystemThemeEnum, themeMode: SystemThemeEnum) => { + systemThemeType.value = theme + systemThemeMode.value = themeMode + localStorage.setItem(StorageConfig.THEME_KEY, theme) + } + + /** + * 切换菜单样式 + * @param theme 菜单主题 + */ + const switchMenuStyles = (theme: MenuThemeEnum) => { + menuThemeType.value = theme + } + + /** + * 设置Element Plus主题颜色 + * @param theme 主题颜色 + */ + const setElementTheme = (theme: string) => { + systemThemeColor.value = theme + setElementThemeColor(theme) + } + + /** + * 切换边框模式 + */ + const setBorderMode = () => { + boxBorderMode.value = !boxBorderMode.value + } + + /** + * 设置容器宽度 + * @param width 容器宽度枚举值 + */ + const setContainerWidth = (width: ContainerWidthEnum) => { + containerWidth.value = width + } + + /** + * 切换唯一展开模式 + */ + const setUniqueOpened = () => { + uniqueOpened.value = !uniqueOpened.value + } + + /** + * 切换菜单按钮显示 + */ + const setButton = () => { + showMenuButton.value = !showMenuButton.value + } + + /** + * 切换快速入口显示 + */ + const setFastEnter = () => { + showFastEnter.value = !showFastEnter.value + } + + /** + * 切换自动关闭 + */ + const setAutoClose = () => { + autoClose.value = !autoClose.value + } + + /** + * 切换刷新按钮显示 + */ + const setShowRefreshButton = () => { + showRefreshButton.value = !showRefreshButton.value + } + + /** + * 切换面包屑显示 + */ + const setCrumbs = () => { + showCrumbs.value = !showCrumbs.value + } + + /** + * 设置工作台标签显示 + * @param show 是否显示 + */ + const setWorkTab = (show: boolean) => { + showWorkTab.value = show + } + + /** + * 切换语言切换显示 + */ + const setLanguage = () => { + showLanguage.value = !showLanguage.value + } + + /** + * 切换进度条显示 + */ + const setNprogress = () => { + showNprogress.value = !showNprogress.value + } + + /** + * 切换色弱模式 + */ + const setColorWeak = () => { + colorWeak.value = !colorWeak.value + } + + /** + * 隐藏设置引导 + */ + const hideSettingGuide = () => { + showSettingGuide.value = false + } + + /** + * 显示设置引导 + */ + const openSettingGuide = () => { + showSettingGuide.value = true + } + + /** + * 设置页面过渡效果 + * @param transition 过渡效果名称 + */ + const setPageTransition = (transition: string) => { + pageTransition.value = transition + } + + /** + * 设置标签页样式 + * @param style 样式名称 + */ + const setTabStyle = (style: string) => { + tabStyle.value = style + } + + /** + * 设置菜单展开状态 + * @param open 是否展开 + */ + const setMenuOpen = (open: boolean) => { + menuOpen.value = open + } + + /** + * 刷新页面 + */ + const reload = () => { + refresh.value = !refresh.value + } + + /** + * 设置水印显示 + * @param visible 是否显示 + */ + const setWatermarkVisible = (visible: boolean) => { + watermarkVisible.value = visible + } + + /** + * 设置自定义圆角 + * @param radius 圆角值 + */ + const setCustomRadius = (radius: string) => { + customRadius.value = radius + document.documentElement.style.setProperty('--custom-radius', `${radius}rem`) + } + + /** + * 设置节日烟花加载状态 + * @param isLoad 是否已加载 + */ + const setholidayFireworksLoaded = (isLoad: boolean) => { + holidayFireworksLoaded.value = isLoad + } + + /** + * 设置节日文本显示 + * @param show 是否显示 + */ + const setShowFestivalText = (show: boolean) => { + showFestivalText.value = show + } + + const setFestivalDate = (date: string) => { + festivalDate.value = date + } + + const setDualMenuShowText = (show: boolean) => { + dualMenuShowText.value = show + } + + return { + menuType, + menuOpenWidth, + systemThemeType, + systemThemeMode, + menuThemeType, + systemThemeColor, + boxBorderMode, + uniqueOpened, + showMenuButton, + showFastEnter, + showRefreshButton, + showCrumbs, + autoClose, + showWorkTab, + showLanguage, + showNprogress, + colorWeak, + showSettingGuide, + pageTransition, + tabStyle, + menuOpen, + refresh, + watermarkVisible, + customRadius, + holidayFireworksLoaded, + showFestivalText, + festivalDate, + dualMenuShowText, + containerWidth, + getMenuTheme, + isDark, + getMenuOpenWidth, + getCustomRadius, + isShowFireworks, + switchMenuLayouts, + setMenuOpenWidth, + setGlopTheme, + switchMenuStyles, + setElementTheme, + setBorderMode, + setContainerWidth, + setUniqueOpened, + setButton, + setFastEnter, + setAutoClose, + setShowRefreshButton, + setCrumbs, + setWorkTab, + setLanguage, + setNprogress, + setColorWeak, + hideSettingGuide, + openSettingGuide, + setPageTransition, + setTabStyle, + setMenuOpen, + reload, + setWatermarkVisible, + setCustomRadius, + setholidayFireworksLoaded, + setShowFestivalText, + setFestivalDate, + setDualMenuShowText + } + }, + { + persist: { + key: 'setting', + storage: localStorage + } + } +) diff --git a/web-admin/src/store/modules/table.ts b/web-admin/src/store/modules/table.ts new file mode 100644 index 00000000..094c3100 --- /dev/null +++ b/web-admin/src/store/modules/table.ts @@ -0,0 +1,97 @@ +/** + * 表格状态管理模块 + * + * 提供表格显示配置的状态管理 + * + * ## 主要功能 + * + * - 表格尺寸配置(紧凑、默认、宽松) + * - 斑马纹显示开关 + * - 边框显示开关 + * - 表头背景显示开关 + * - 全屏模式开关 + * + * ## 使用场景 + * - 表格组件样式配置 + * - 用户表格偏好设置 + * - 表格工具栏功能控制 + * + * ## 持久化 + * + * - 使用 localStorage 存储 + * - 存储键:sys-v{version}-table + * - 用户配置跨页面保持 + * + * @module store/modules/table + * @author Art Design Pro Team + */ +import { defineStore } from 'pinia' +import { ref } from 'vue' +import { TableSizeEnum } from '@/enums/formEnum' + +// 表格 +export const useTableStore = defineStore( + 'tableStore', + () => { + // 表格大小 + const tableSize = ref(TableSizeEnum.DEFAULT) + // 斑马纹 + const isZebra = ref(false) + // 边框 + const isBorder = ref(false) + // 表头背景 + const isHeaderBackground = ref(false) + + // 是否全屏 + const isFullScreen = ref(false) + + /** + * 设置表格大小 + * @param size 表格大小枚举值 + */ + const setTableSize = (size: TableSizeEnum) => (tableSize.value = size) + + /** + * 设置斑马纹显示状态 + * @param value 是否显示斑马纹 + */ + const setIsZebra = (value: boolean) => (isZebra.value = value) + + /** + * 设置表格边框显示状态 + * @param value 是否显示边框 + */ + const setIsBorder = (value: boolean) => (isBorder.value = value) + + /** + * 设置表头背景显示状态 + * @param value 是否显示表头背景 + */ + const setIsHeaderBackground = (value: boolean) => (isHeaderBackground.value = value) + + /** + * 设置是否全屏 + * @param value 是否全屏 + */ + const setIsFullScreen = (value: boolean) => (isFullScreen.value = value) + + return { + tableSize, + isZebra, + isBorder, + isHeaderBackground, + setTableSize, + setIsZebra, + setIsBorder, + setIsHeaderBackground, + isFullScreen, + setIsFullScreen + } + }, + { + persist: { + key: 'table', + storage: localStorage + } + } +) diff --git a/web-admin/src/store/modules/user.ts b/web-admin/src/store/modules/user.ts new file mode 100644 index 00000000..e6aeb15b --- /dev/null +++ b/web-admin/src/store/modules/user.ts @@ -0,0 +1,194 @@ +/** + * 用户状态管理模块 + * + * 提供用户相关的状态管理 + * + * ## 主要功能 + * + * - 用户登录状态管理 + * - 用户信息存储 + * - 访问令牌和刷新令牌管理 + * - 登出清理逻辑 + * + * @module store/modules/user + */ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { LanguageEnum } from '@/enums/appEnum' +import { router } from '@/router' +import { useWorktabStore } from './worktab' +import { AppRouteRecord } from '@/types/router' +import { setPageTitle } from '@/utils/router' +import { resetRouterState } from '@/router/guards/beforeEach' +import { useMenuStore } from './menu' +import { StorageConfig } from '@/utils/storage/storage-config' + +/** + * 用户状态管理 + * 管理用户登录状态、个人信息、令牌等 + */ +export const useUserStore = defineStore( + 'userStore', + () => { + // 登录状态 + const isLogin = ref(false) + // 用户信息 + const info = ref({} as Api.Auth.UserInfo) + // 访问令牌 + const accessToken = ref('') + // 刷新令牌 + const refreshToken = ref('') + /** 界面语言(與 vue-i18n、Element Plus 語系同步) */ + const language = ref(LanguageEnum.ZH) + /** 全局搜索最近访问记录(ArtGlobalSearch) */ + const searchHistory = ref([]) + /** 锁屏状态(ArtScreenLock) */ + const isLock = ref(false) + /** 锁屏密码(AES 加密串) */ + const lockPassword = ref('') + + // 计算属性:获取用户信息 + const getUserInfo = computed(() => info.value) + + /** + * 设置用户信息 + * @param newInfo 新的用户信息 + */ + const setUserInfo = (newInfo: Partial & Record) => { + info.value = { + ...(info.value || {}), + ...(newInfo || {}), + buttons: newInfo?.buttons ?? info.value?.buttons ?? [], + userName: newInfo?.userName ?? newInfo?.username ?? info.value?.userName ?? '' + } as Api.Auth.UserInfo + } + + /** + * 设置登录状态 + * @param status 登录状态 + */ + const setLoginStatus = (status: boolean) => { + isLogin.value = status + } + + /** + * 设置令牌 + * @param newAccessToken 访问令牌 + * @param newRefreshToken 刷新令牌(可选) + */ + const setToken = (newAccessToken: string, newRefreshToken?: string) => { + accessToken.value = newAccessToken + if (newRefreshToken) { + refreshToken.value = newRefreshToken + } + } + + const setLanguage = (lang: LanguageEnum) => { + language.value = lang + } + + const setSearchHistory = (list: AppRouteRecord[]) => { + searchHistory.value = list + } + + const setLockStatus = (locked: boolean) => { + isLock.value = locked + } + + const setLockPassword = (pwd: string) => { + lockPassword.value = pwd + } + + /** + * 退出登录 + * 清空所有用户相关状态并跳转到登录页 + */ + const logOut = () => { + // 保存当前用户 ID,用于下次登录时判断是否为同一用户 + const currentUserId = info.value.userId + if (currentUserId) { + localStorage.setItem(StorageConfig.LAST_USER_ID_KEY, String(currentUserId)) + } + + // 清空用户信息 + info.value = {} as Api.Auth.UserInfo + // 重置登录状态 + isLogin.value = false + // 清空访问令牌 + accessToken.value = '' + // 清空刷新令牌 + refreshToken.value = '' + searchHistory.value = [] + isLock.value = false + lockPassword.value = '' + // 移除iframe路由缓存 + sessionStorage.removeItem('iframeRoutes') + // 清空主页路径 + useMenuStore().setHomePath('') + // 重置路由状态 + resetRouterState(500) + // 跳转到登录页,携带当前路由作为 redirect 参数 + const currentRoute = router.currentRoute.value + const redirect = currentRoute.path !== '/login' ? currentRoute.fullPath : undefined + router.push({ + name: 'Login', + query: redirect ? { redirect } : undefined + }) + } + + /** + * 检查并清理工作台标签页 + * 如果不是同一用户登录,清空工作台标签页 + * 应在登录成功后调用 + */ + const checkAndClearWorktabs = () => { + const lastUserId = localStorage.getItem(StorageConfig.LAST_USER_ID_KEY) + const currentUserId = info.value.userId + + // 无法获取当前用户 ID,跳过检查 + if (!currentUserId) return + + // 首次登录或缓存已清除,保留现有标签页 + if (!lastUserId) { + return + } + + // 不同用户登录,清空工作台标签页 + if (String(currentUserId) !== lastUserId) { + const worktabStore = useWorktabStore() + worktabStore.opened = [] + worktabStore.keepAliveExclude = [] + } + + // 清除临时存储 + localStorage.removeItem(StorageConfig.LAST_USER_ID_KEY) + } + + return { + isLogin, + info, + accessToken, + refreshToken, + language, + searchHistory, + isLock, + lockPassword, + getUserInfo, + setUserInfo, + setLoginStatus, + setToken, + setLanguage, + setSearchHistory, + setLockStatus, + setLockPassword, + logOut, + checkAndClearWorktabs + } + }, + { + persist: { + key: 'user', + storage: localStorage + } + } +) diff --git a/web-admin/src/store/modules/worktab.ts b/web-admin/src/store/modules/worktab.ts new file mode 100755 index 00000000..d5d2dc86 --- /dev/null +++ b/web-admin/src/store/modules/worktab.ts @@ -0,0 +1,578 @@ +/** + * 工作标签页状态管理模块 + * + * 提供多标签页功能的完整状态管理 + * + * ## 主要功能 + * + * - 标签页打开和关闭 + * - 标签页固定和取消固定 + * - 批量关闭(左侧、右侧、其他、全部) + * - 标签页缓存管理(KeepAlive) + * - 标签页标题自定义 + * - 标签页路由验证 + * - 动态路由参数处理 + * + * ## 使用场景 + * + * - 多标签页导航 + * - 页面缓存控制 + * - 标签页右键菜单 + * - 固定常用页面 + * - 批量关闭标签 + * + * ## 核心特性 + * + * - 智能标签页复用(同路由名称复用) + * - 固定标签页保护(不可关闭) + * - KeepAlive 缓存排除管理 + * - 路由有效性验证 + * - 首页自动保留 + * + * ## 持久化 + * - 使用 localStorage 存储 + * - 存储键:sys-v{version}-worktab + * - 刷新页面保持标签状态 + * + * @module store/modules/worktab + * @author Art Design Pro Team + */ +import { defineStore } from 'pinia' +import { ref, computed } from 'vue' +import { router } from '@/router' +import { LocationQueryRaw, Router } from 'vue-router' +import { WorkTab } from '@/types' +import { useCommon } from '@/hooks/core/useCommon' + +interface WorktabState { + current: Partial + opened: WorkTab[] + keepAliveExclude: string[] +} + +/** + * 工作台标签页管理 Store + */ +export const useWorktabStore = defineStore( + 'worktabStore', + () => { + // 状态定义 + const current = ref>({}) + const opened = ref([]) + const keepAliveExclude = ref([]) + + // 计算属性 + const hasOpenedTabs = computed(() => opened.value.length > 0) + const hasMultipleTabs = computed(() => opened.value.length > 1) + const currentTabIndex = computed(() => + current.value.path ? opened.value.findIndex((tab) => tab.path === current.value.path) : -1 + ) + + /** + * 查找标签页索引 + */ + const findTabIndex = (path: string): number => { + return opened.value.findIndex((tab) => tab.path === path) + } + + /** + * 获取标签页 + */ + const getTab = (path: string): WorkTab | undefined => { + return opened.value.find((tab) => tab.path === path) + } + + /** + * 检查标签页是否可关闭 + */ + const isTabClosable = (tab: WorkTab): boolean => { + return !tab.fixedTab + } + + /** + * 过滤不应展示在 worktab 中的父级占位路由。 + * `/dashboard` 仅用于承载与重定向,真实标签页应为 `/dashboard/console`。 + */ + const shouldIgnoreTab = (tab: Partial): boolean => { + return tab.path === '/dashboard' + } + + /** + * 安全的路由跳转 + */ + const safeRouterPush = (tab: Partial): void => { + if (!tab.path) { + console.warn('尝试跳转到无效路径的标签页') + return + } + + try { + router.push({ + path: tab.path, + query: tab.query as LocationQueryRaw + }) + } catch (error) { + console.error('路由跳转失败:', error) + } + } + + /** + * 打开或激活一个选项卡 + */ + const openTab = (tab: WorkTab): void => { + if (!tab.path) { + console.warn('尝试打开无效的标签页') + return + } + if (shouldIgnoreTab(tab)) return + + // 从 keepAlive 排除列表中移除 + if (tab.name) { + removeKeepAliveExclude(tab.name) + } + + // 先根据路由名称查找(应对动态路由参数导致的多开问题),找不到再根据路径查找 + let existingIndex = -1 + if (tab.name) { + existingIndex = opened.value.findIndex((t) => t.name === tab.name) + } + if (existingIndex === -1) { + existingIndex = findTabIndex(tab.path) + } + + if (existingIndex === -1) { + // 新增标签页 + const insertIndex = tab.fixedTab ? findFixedTabInsertIndex() : opened.value.length + const newTab = { ...tab } + + if (tab.fixedTab) { + opened.value.splice(insertIndex, 0, newTab) + } else { + opened.value.push(newTab) + } + + current.value = newTab + } else { + // 更新现有标签页(当动态路由参数或查询变更时,复用同一标签) + const existingTab = opened.value[existingIndex] + + opened.value[existingIndex] = { + ...existingTab, + path: tab.path, + params: tab.params, + query: tab.query, + title: tab.title || existingTab.title, + fixedTab: tab.fixedTab ?? existingTab.fixedTab, + keepAlive: tab.keepAlive ?? existingTab.keepAlive, + name: tab.name || existingTab.name, + icon: tab.icon || existingTab.icon + } + + current.value = opened.value[existingIndex] + } + } + + /** + * 查找固定标签页的插入位置 + */ + const findFixedTabInsertIndex = (): number => { + let insertIndex = 0 + for (let i = 0; i < opened.value.length; i++) { + if (opened.value[i].fixedTab) { + insertIndex = i + 1 + } else { + break + } + } + return insertIndex + } + + /** + * 关闭指定的选项卡 + */ + const removeTab = (path: string): void => { + const targetTab = getTab(path) + const targetIndex = findTabIndex(path) + + if (targetIndex === -1) { + console.warn(`尝试关闭不存在的标签页: ${path}`) + return + } + + if (targetTab && !isTabClosable(targetTab)) { + console.warn(`尝试关闭固定标签页: ${path}`) + return + } + + // 从标签页列表中移除 + opened.value.splice(targetIndex, 1) + + // 处理缓存排除 + if (targetTab?.name) { + addKeepAliveExclude(targetTab) + } + + const { homePath } = useCommon() + + // 如果关闭后无标签页,跳转首页 + if (!hasOpenedTabs.value) { + if (path !== homePath.value) { + current.value = {} + safeRouterPush({ path: homePath.value }) + } + return + } + + // 如果关闭的是当前激活标签,需要激活其他标签 + if (current.value.path === path) { + const newIndex = targetIndex >= opened.value.length ? opened.value.length - 1 : targetIndex + current.value = opened.value[newIndex] + safeRouterPush(current.value) + } + } + + /** + * 关闭左侧选项卡 + */ + const removeLeft = (path: string): void => { + const targetIndex = findTabIndex(path) + + if (targetIndex === -1) { + console.warn(`尝试关闭左侧标签页,但目标标签页不存在: ${path}`) + return + } + + // 获取左侧可关闭的标签页 + const leftTabs = opened.value.slice(0, targetIndex) + const closableLeftTabs = leftTabs.filter(isTabClosable) + + if (closableLeftTabs.length === 0) { + console.warn('左侧没有可关闭的标签页') + return + } + + // 标记为缓存排除 + markTabsToRemove(closableLeftTabs) + + // 移除左侧可关闭的标签页 + opened.value = opened.value.filter( + (tab, index) => index >= targetIndex || !isTabClosable(tab) + ) + + // 确保当前标签是激活状态 + const targetTab = getTab(path) + if (targetTab) { + current.value = targetTab + } + } + + /** + * 关闭右侧选项卡 + */ + const removeRight = (path: string): void => { + const targetIndex = findTabIndex(path) + + if (targetIndex === -1) { + console.warn(`尝试关闭右侧标签页,但目标标签页不存在: ${path}`) + return + } + + // 获取右侧可关闭的标签页 + const rightTabs = opened.value.slice(targetIndex + 1) + const closableRightTabs = rightTabs.filter(isTabClosable) + + if (closableRightTabs.length === 0) { + console.warn('右侧没有可关闭的标签页') + return + } + + // 标记为缓存排除 + markTabsToRemove(closableRightTabs) + + // 移除右侧可关闭的标签页 + opened.value = opened.value.filter( + (tab, index) => index <= targetIndex || !isTabClosable(tab) + ) + + // 确保当前标签是激活状态 + const targetTab = getTab(path) + if (targetTab) { + current.value = targetTab + } + } + + /** + * 关闭其他选项卡 + */ + const removeOthers = (path: string): void => { + const targetTab = getTab(path) + + if (!targetTab) { + console.warn(`尝试关闭其他标签页,但目标标签页不存在: ${path}`) + return + } + + // 获取其他可关闭的标签页 + const otherTabs = opened.value.filter((tab) => tab.path !== path) + const closableTabs = otherTabs.filter(isTabClosable) + + if (closableTabs.length === 0) { + console.warn('没有其他可关闭的标签页') + return + } + + // 标记为缓存排除 + markTabsToRemove(closableTabs) + + // 只保留当前标签和固定标签 + opened.value = opened.value.filter((tab) => tab.path === path || !isTabClosable(tab)) + + // 确保当前标签是激活状态 + current.value = targetTab + } + + /** + * 关闭所有可关闭的标签页 + */ + const removeAll = (): void => { + const { homePath } = useCommon() + const hasFixedTabs = opened.value.some((tab) => tab.fixedTab) + + // 获取可关闭的标签页 + const closableTabs = opened.value.filter((tab) => { + if (!isTabClosable(tab)) return false + // 如果有固定标签,则所有可关闭的都可以关闭;否则保留首页 + return hasFixedTabs || tab.path !== homePath.value + }) + + if (closableTabs.length === 0) { + console.warn('没有可关闭的标签页') + return + } + + // 标记为缓存排除 + markTabsToRemove(closableTabs) + + // 保留不可关闭的标签页和首页(当没有固定标签时) + opened.value = opened.value.filter((tab) => { + return !isTabClosable(tab) || (!hasFixedTabs && tab.path === homePath.value) + }) + + // 处理激活状态 + if (!hasOpenedTabs.value) { + current.value = {} + safeRouterPush({ path: homePath.value }) + return + } + + // 选择激活的标签页:优先首页,其次第一个可用标签 + const homeTab = opened.value.find((tab) => tab.path === homePath.value) + const targetTab = homeTab || opened.value[0] + + current.value = targetTab + safeRouterPush(targetTab) + } + + /** + * 将指定选项卡添加到 keepAlive 排除列表中 + */ + const addKeepAliveExclude = (tab: WorkTab): void => { + if (!tab.keepAlive || !tab.name) return + + if (!keepAliveExclude.value.includes(tab.name)) { + keepAliveExclude.value.push(tab.name) + } + } + + /** + * 从 keepAlive 排除列表中移除指定组件名称 + */ + const removeKeepAliveExclude = (name: string): void => { + if (!name) return + + keepAliveExclude.value = keepAliveExclude.value.filter((item) => item !== name) + } + + /** + * 将传入的一组选项卡的组件名称标记为排除缓存 + */ + const markTabsToRemove = (tabs: WorkTab[]): void => { + tabs.forEach((tab) => { + if (tab.name) { + addKeepAliveExclude(tab) + } + }) + } + + /** + * 切换指定标签页的固定状态 + */ + const toggleFixedTab = (path: string): void => { + const targetIndex = findTabIndex(path) + + if (targetIndex === -1) { + console.warn(`尝试切换不存在标签页的固定状态: ${path}`) + return + } + + const tab = { ...opened.value[targetIndex] } + tab.fixedTab = !tab.fixedTab + + // 移除原位置 + opened.value.splice(targetIndex, 1) + + if (tab.fixedTab) { + // 固定标签插入到所有固定标签的末尾 + const firstNonFixedIndex = opened.value.findIndex((t) => !t.fixedTab) + const insertIndex = firstNonFixedIndex === -1 ? opened.value.length : firstNonFixedIndex + opened.value.splice(insertIndex, 0, tab) + } else { + // 非固定标签插入到所有固定标签后 + const fixedCount = opened.value.filter((t) => t.fixedTab).length + opened.value.splice(fixedCount, 0, tab) + } + + // 更新当前标签引用 + if (current.value.path === path) { + current.value = tab + } + } + + /** + * 验证工作台标签页的路由有效性 + */ + const validateWorktabs = (routerInstance: Router): void => { + try { + // 动态路由校验:优先使用路由 name 判断有效性;否则用 resolve 匹配参数化路径 + const isTabRouteValid = (tab: Partial): boolean => { + try { + if (tab.name) { + const routes = routerInstance.getRoutes() + if (routes.some((r) => r.name === tab.name)) return true + } + if (tab.path) { + const resolved = routerInstance.resolve({ + path: tab.path, + query: (tab.query as LocationQueryRaw) || undefined + }) + return resolved.matched.length > 0 + } + return false + } catch { + return false + } + } + + // 过滤出有效的标签页 + const validTabs = opened.value.filter((tab) => !shouldIgnoreTab(tab) && isTabRouteValid(tab)) + + if (validTabs.length !== opened.value.length) { + console.warn('发现无效的标签页路由,已自动清理') + opened.value = validTabs + } + + // 验证当前激活标签的有效性 + const isCurrentValid = + current.value && !shouldIgnoreTab(current.value) && isTabRouteValid(current.value) + + if (!isCurrentValid && validTabs.length > 0) { + console.warn('当前激活标签无效,已自动切换') + current.value = validTabs[0] + } else if (!isCurrentValid) { + current.value = {} + } + } catch (error) { + console.error('验证工作台标签页失败:', error) + } + } + + /** + * 清空所有状态(用于登出等场景) + */ + const clearAll = (): void => { + current.value = {} + opened.value = [] + keepAliveExclude.value = [] + } + + /** + * 获取状态快照(用于持久化存储) + */ + const getStateSnapshot = (): WorktabState => { + return { + current: { ...current.value }, + opened: [...opened.value], + keepAliveExclude: [...keepAliveExclude.value] + } + } + + /** + * 获取标签页标题 + */ + const getTabTitle = (path: string): WorkTab | undefined => { + const tab = getTab(path) + return tab + } + + /** + * 更新标签页标题 + */ + const updateTabTitle = (path: string, title: string): void => { + const tab = getTab(path) + if (tab) { + tab.customTitle = title + } + } + + /** + * 重置标签页标题 + */ + const resetTabTitle = (path: string): void => { + const tab = getTab(path) + if (tab) { + tab.customTitle = '' + } + } + + return { + // 状态 + current, + opened, + keepAliveExclude, + + // 计算属性 + hasOpenedTabs, + hasMultipleTabs, + currentTabIndex, + + // 方法 + openTab, + removeTab, + removeLeft, + removeRight, + removeOthers, + removeAll, + toggleFixedTab, + validateWorktabs, + clearAll, + getStateSnapshot, + + // 工具方法 + findTabIndex, + getTab, + isTabClosable, + addKeepAliveExclude, + removeKeepAliveExclude, + markTabsToRemove, + getTabTitle, + updateTabTitle, + resetTabTitle + } + }, + { + persist: { + key: 'worktab', + storage: localStorage + } + } +) diff --git a/web-admin/src/types/api.d.ts b/web-admin/src/types/api.d.ts new file mode 100644 index 00000000..802537f6 --- /dev/null +++ b/web-admin/src/types/api.d.ts @@ -0,0 +1,380 @@ +/** + * API 类型定义 + */ +declare namespace Api { + namespace Auth { + interface UserInfo { + userId?: string + id?: string + username: string + realName?: string + phone?: string + role: string + regionId?: string + regionName?: string + email?: string + roles?: string[] + /** 自定义头像 URL,空则前端使用系统默认 logo */ + avatarUrl?: string | null + } + + interface LoginParams { + username: string + password: string + } + + interface LoginResponse { + token: string + refreshToken: string + expiresIn: number + userInfo: UserInfo + } + } + + namespace User { + interface UserItem { + id: string + username: string + realName: string + phone: string + avatarUrl?: string | null + role: string + regionId?: string + regionName?: string + isActive: boolean + createAt: string + createName: string + } + + interface UserDetail extends UserItem { + updateAt: string + updateBy: string + } + } + + namespace Region { + interface RegionItem { + id: string + name: string + code: string + description?: string + sortOrder: number + isActive: boolean + createAt: string + } + + interface RegionDetail extends RegionItem { + updateAt: string + updateBy: string + } + } + + namespace Category { + interface CategoryItem { + id: string + name: string + imageUrl?: string + parentId?: string + parentName?: string + sortOrder: number + isActive: boolean + createAt: string + } + } + + namespace Unit { + interface UnitItem { + id: string + name: string + code: string + isActive: boolean + createAt: string + } + } + + namespace Product { + interface ProductItem { + id: string + name: string + categoryId?: string + categoryName?: string + unitId?: string + unitName?: string + description?: string + imageUrl?: string + isActive: boolean + createAt: string + } + + interface ProductDetail extends ProductItem { + updateAt: string + updateBy: string + } + + // 商品轮播图 + interface ProductBanner { + id: string + productId: string + mediaType: string + fileUrl: string + thumbnailUrl?: string + sortOrder: number + createAt: string + } + + interface ProductBannerCreate { + mediaType?: string + fileUrl: string + thumbnailUrl?: string + sortOrder?: number + } + + interface ProductBannerUpdate { + mediaType?: string + fileUrl?: string + thumbnailUrl?: string + sortOrder?: number + } + + // 商品详情媒体 + interface ProductDetailMedia { + id: string + productId: string + contentType: string + contentText?: string + fileUrl?: string + thumbnailUrl?: string + description?: string + sortOrder: number + createAt: string + } + + interface ProductDetailMediaCreate { + contentType?: string + contentText?: string + fileUrl?: string + thumbnailUrl?: string + description?: string + sortOrder?: number + } + + interface ProductDetailMediaUpdate { + contentType?: string + contentText?: string + fileUrl?: string + thumbnailUrl?: string + description?: string + sortOrder?: number + } + + // 商品参数模板 + interface ProductParameter { + id: string + name: string + code: string + paramType: string + options?: string + placeholder?: string + isRequired: number + isActive: number + sortOrder: number + remark?: string + createAt: string + } + + interface ProductParameterSimple { + id: string + name: string + code: string + paramType: string + options?: string + } + + interface ProductParameterCreate { + name: string + code: string + paramType?: string + options?: string + placeholder?: string + isRequired?: number + isActive?: number + sortOrder?: number + remark?: string + } + + interface ProductParameterUpdate { + name?: string + code?: string + paramType?: string + options?: string + placeholder?: string + isRequired?: number + isActive?: number + sortOrder?: number + remark?: string + } + + // 分类参数关联 + interface CategoryParameter { + id: string + categoryId: string + parameterId: string + parameterName: string + parameterCode: string + paramType: string + options?: string + placeholder?: string + isRequired: number + defaultValue?: string + sortOrder: number + } + + interface CategoryParameterCreate { + categoryId: string + parameterId: string + isRequired?: number + defaultValue?: string + sortOrder?: number + } + + // 商品参数值 + interface ProductParameterValue { + id: string + productId: string + parameterId: string + parameterName?: string + parameterCode?: string + paramType?: string + options?: string + placeholder?: string + paramValue?: string + sortOrder: number + } + + interface ProductParameterValueCreate { + productId: string + parameterId: string + paramValue?: string + } + + // 售后评价 + interface ProductReview { + id: string + productId: string + orderId?: string + orderItemId?: string + userId: string + userName?: string + rating: number + ratingTags?: string + content?: string + isAnonymous: number + replyContent?: string + replyTime?: string + replyBy?: string + replyByName?: string + likeCount: number + isTop: number + status: string + rejectReason?: string + createAt: string + mediaList?: ProductReviewMedia[] + } + + interface ProductReviewMedia { + id: string + reviewId: string + mediaType: string + fileUrl: string + thumbnailUrl?: string + sortOrder: number + } + + interface ProductReviewStatistics { + totalCount: number + pendingCount: number + approvedCount: number + rejectedCount: number + avgRating: number + ratingDistribution: Record + } + } + + namespace Order { + interface OrderItem { + id: string + orderNo: string + clientId: string + clientName: string + regionId: string + regionName: string + priceListId: string + totalAmount: string + paidAmount: string + receivableAmount: string + refundAmount: string + status: string + paymentMethod?: string + contactPerson?: string + contactPhone?: string + deliveryAddress?: string + createAt: string + } + + interface OrderDetail extends OrderItem { + items: OrderItemDetail[] + cancelReason?: string + cancelReviewTime?: string + completedTime?: string + remark?: string + } + + interface OrderItemDetail { + id: string + productId: string + productName: string + unitId: string + unitName: string + quantity: string + unitPrice: string + amount: string + deliveredQuantity: string + status: string + } + } + + namespace Delivery { + interface DeliveryTask { + id: string + taskNo: string + orderId: string + orderNo: string + regionId: string + regionName: string + deliverId?: string + deliverName?: string + status: string + pickupTime?: string + deliveryTime?: string + createAt: string + } + + interface DeliveryTaskDetail extends DeliveryTask { + items: DeliveryTaskItem[] + } + + interface DeliveryTaskItem { + id: string + productName: string + quantity: string + deliveredQuantity: string + status: string + } + } +} + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/web-admin/src/types/api/api.d.ts b/web-admin/src/types/api/api.d.ts new file mode 100644 index 00000000..ad09c30f --- /dev/null +++ b/web-admin/src/types/api/api.d.ts @@ -0,0 +1,138 @@ +/** + * API 接口类型定义模块 + * + * 提供所有后端接口的类型定义 + * + * ## 主要功能 + * + * - 通用类型(分页参数、响应结构等) + * - 认证类型(登录、用户信息等) + * - 系统管理类型(用户、角色等) + * - 全局命名空间声明 + * + * ## 使用场景 + * + * - API 请求参数类型约束 + * - API 响应数据类型定义 + * - 接口文档类型同步 + * + * ## 注意事项 + * + * - 在 .vue 文件使用需要在 eslint.config.mjs 中配置 globals: { Api: 'readonly' } + * - 使用全局命名空间,无需导入即可使用 + * + * ## 使用方式 + * + * ```typescript + * const params: Api.Auth.LoginParams = { userName: 'admin', password: '123456' } + * const response: Api.Auth.UserInfo = await fetchUserInfo() + * ``` + * + * @module types/api/api + * @author Art Design Pro Team + */ + +declare namespace Api { + /** 通用类型 */ + namespace Common { + /** 分页参数 */ + interface PaginationParams { + /** 当前页码 */ + current: number + /** 每页条数 */ + size: number + /** 总条数 */ + total: number + } + + /** 通用搜索参数 */ + type CommonSearchParams = Pick + + /** 分页响应基础结构 */ + interface PaginatedResponse { + records: T[] + current: number + size: number + total: number + } + + /** 启用状态 */ + type EnableStatus = '1' | '2' + } + + /** 认证类型 */ + namespace Auth { + /** 登录参数 */ + interface LoginParams { + userName: string + password: string + } + + /** 登录响应 */ + interface LoginResponse { + token: string + refreshToken: string + } + + /** 用户信息 */ + interface UserInfo { + buttons: string[] + roles: string[] + userId: number + userName: string + email: string + avatar?: string + } + } + + /** 系统管理类型 */ + namespace SystemManage { + /** 用户列表 */ + type UserList = Api.Common.PaginatedResponse + + /** 用户列表项 */ + interface UserListItem { + id: number + avatar: string + status: string + userName: string + userGender: string + nickName: string + userPhone: string + userEmail: string + userRoles: string[] + createBy: string + createTime: string + updateBy: string + updateTime: string + } + + /** 用户搜索参数 */ + type UserSearchParams = Partial< + Pick & + Api.Common.CommonSearchParams + > + + /** 角色列表 */ + type RoleList = Api.Common.PaginatedResponse + + /** 角色列表项 */ + interface RoleListItem { + roleId: number + roleName: string + roleCode: string + description: string + enabled: boolean + createTime: string + } + + /** 角色搜索参数 */ + type RoleSearchParams = Partial< + Pick & + Api.Common.CommonSearchParams & { + startTime: string | null + endTime: string | null + } + > + } +} diff --git a/web-admin/src/types/common/index.ts b/web-admin/src/types/common/index.ts new file mode 100644 index 00000000..7e751d16 --- /dev/null +++ b/web-admin/src/types/common/index.ts @@ -0,0 +1,95 @@ +/** + * 通用类型定义模块 + * + * 提供项目中常用的通用类型定义 + * + * ## 主要功能 + * + * - 状态类型(启用/禁用) + * - 性别类型 + * - 排序方向类型 + * - 操作类型(增删改查) + * - 记录类型(键值对) + * - 时间范围类型 + * - 文件信息类型 + * - 坐标和尺寸类型 + * - 响应式断点类型 + * - 主题和语言类型 + * - 环境和弹窗类型 + * + * ## 使用场景 + * + * - 通用数据结构定义 + * - 类型约束和提示 + * - 减少重复类型定义 + * + * @module types/common/index + * @author Art Design Pro Team + */ + +// 导出响应类型 +export * from './response' + +// 状态类型 +export type Status = 0 | 1 // 0: 禁用, 1: 启用 + +// 性别类型 +export type Gender = 'male' | 'female' | 'unknown' + +// 排序方向 +export type SortOrder = 'ascending' | 'descending' + +// 操作类型 +export type ActionType = 'create' | 'update' | 'delete' | 'view' + +// 可选的记录类型 +export type Recordable = Record + +// 键值对类型 +export type KeyValue = { + key: string + value: T + label?: string +} + +// 时间范围类型 +export interface TimeRange { + startTime: string + endTime: string +} + +// 文件类型 +export interface FileInfo { + name: string + url: string + size: number + type: string + lastModified?: number +} + +// 坐标类型 +export interface Position { + x: number + y: number +} + +// 尺寸类型 +export interface Size { + width: number + height: number +} + +// 响应式断点类型 +export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' + +// 主题类型 +export type ThemeMode = 'light' | 'dark' | 'auto' + +// 语言类型 +export type Language = 'zh-CN' | 'en-US' + +// 环境类型 +export type Environment = 'development' | 'production' | 'test' + +// 弹窗类型 +export type DialogType = 'add' | 'edit' diff --git a/web-admin/src/types/common/response.ts b/web-admin/src/types/common/response.ts new file mode 100644 index 00000000..1a6734fd --- /dev/null +++ b/web-admin/src/types/common/response.ts @@ -0,0 +1,31 @@ +/** + * API 响应类型定义模块 + * + * 提供统一的 API 响应结构类型定义 + * + * ## 主要功能 + * + * - 基础响应结构定义 + * - 泛型支持(适配不同数据类型) + * - 统一的响应格式约束 + * + * ## 使用场景 + * + * - API 请求响应类型约束 + * - 接口数据类型定义 + * - 响应数据解析 + * + * @module types/common/response + * @author Art Design Pro Team + */ + +/** 基础 API 响应结构 */ +export interface BaseResponse { + /** 状态码 */ + code: number + /** 消息 (支持 msg 和 message 两种格式) */ + msg?: string + message?: string + /** 数据 */ + data: T +} diff --git a/web-admin/src/types/component/chart.ts b/web-admin/src/types/component/chart.ts new file mode 100644 index 00000000..c3225c90 --- /dev/null +++ b/web-admin/src/types/component/chart.ts @@ -0,0 +1,324 @@ +/** + * 图表组件类型定义模块 + * + * 提供 ECharts 图表组件的完整类型定义 + * + * ## 主要功能 + * + * - 基础图表配置类型 + * - 柱状图类型定义 + * - 折线图类型定义 + * - 饼图/环形图类型定义 + * - 雷达图类型定义 + * - K线图类型定义 + * - 散点图类型定义 + * - 地图图表类型定义 + * - 双向堆叠柱状图类型定义 + * - 图表主题配置类型 + * - 图表事件回调类型 + * + * ## 使用场景 + * + * - 图表组件 Props 类型约束 + * - 图表配置类型定义 + * - 图表数据结构定义 + * - 图表事件处理 + * + * @module types/component/chart + * @author Art Design Pro Team + */ +import type { EChartsOption } from '@/plugins/echarts' + +// 图例位置类型 +export type LegendPosition = 'bottom' | 'top' | 'left' | 'right' + +export type SymbolType = + | 'circle' + | 'rect' + | 'roundRect' + | 'triangle' + | 'diamond' + | 'pin' + | 'arrow' + | 'none' + +// 图表主题配置 +export interface ChartThemeConfig { + /** 图表高度 */ + chartHeight: string + /** 字体大小 */ + fontSize: number + /** 字体颜色 */ + fontColor: string + /** 主题颜色 */ + themeColor: string + /** 颜色组 */ + colors: string[] +} + +// 图表初始化选项 +export interface UseChartOptions { + /** 初始化选项 */ + initOptions?: EChartsOption + /** 延迟初始化时间(ms) */ + initDelay?: number + /** IntersectionObserver阈值 */ + threshold?: number + /** 是否自动响应主题变化 */ + autoTheme?: boolean +} + +// 基础图表 Props 接口 - 统一所有图表的基础属性 +export interface BaseChartProps { + /** 图表高度 */ + height?: string + /** 是否加载中 */ + loading?: boolean + isEmpty?: boolean + /** 颜色配置 */ + colors?: string[] +} + +// 轴线显示控制接口 - 统一轴线相关配置 +export interface AxisDisplayProps { + /** 是否显示坐标轴标签 */ + showAxisLabel?: boolean + /** 是否显示坐标轴线 */ + showAxisLine?: boolean + /** 是否显示分割线 */ + showSplitLine?: boolean +} + +// 交互显示控制接口 - 统一交互相关配置 +export interface InteractionProps { + /** 是否显示提示框 */ + showTooltip?: boolean + /** 是否显示图例 */ + showLegend?: boolean + /** 图例位置 */ + legendPosition?: LegendPosition +} + +// 柱状图数据项接口 +export interface BarDataItem { + /** 系列名称 */ + name: string + /** 数据值 */ + data: number[] + /** 柱状图宽度 */ + barWidth?: string | number + /** 堆叠分组名称 */ + stack?: string +} + +// 柱状图 Props 接口 - 统一柱状图配置 +export interface BarChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps { + /** 图表数据 - 支持单组数据或多组数据 */ + data: number[] | BarDataItem[] + /** X轴标签数据 */ + xAxisData?: string[] + /** 柱状图宽度 */ + barWidth?: string | number + /** 是否堆叠显示 */ + stack?: boolean + /** 圆角 */ + borderRadius?: number | number[] +} + +// 折线图数据项接口 +export interface LineDataItem { + /** 系列名称 */ + name: string + /** 数据值 */ + data: number[] + /** 线条宽度 */ + lineWidth?: number + /** 是否显示区域填充 */ + showAreaColor?: boolean + /** 区域样式配置 */ + areaStyle?: { + /** 渐变开始透明度 */ + startOpacity?: number + /** 渐变结束透明度 */ + endOpacity?: number + /** 自定义 ECharts areaStyle 配置 */ + custom?: any + } + /** 是否平滑曲线 */ + smooth?: boolean + /** 数据点符号 */ + symbol?: SymbolType + /** 数据点大小 */ + symbolSize?: number +} + +// 折线图 Props 接口 - 统一折线图配置 +export interface LineChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps { + /** 图表数据 - 支持单组数据或多组数据 */ + data: number[] | LineDataItem[] + /** X轴标签数据 */ + xAxisData?: string[] + /** 线条宽度 */ + lineWidth?: number + /** 是否显示区域填充 */ + showAreaColor?: boolean + /** 是否平滑曲线 */ + smooth?: boolean + /** 数据点符号 */ + symbol?: SymbolType + /** 数据点大小 */ + symbolSize?: number + /** 多数据动画延迟间隔(毫秒) */ + animationDelay?: number +} + +// 雷达图数据项接口 +export interface RadarDataItem { + /** 系列名称 */ + name: string + /** 数据值 */ + value: number[] +} + +// 雷达图 Props 接口 - 统一雷达图配置 +export interface RadarChartProps extends BaseChartProps, InteractionProps { + /** 雷达图指标配置 */ + indicator?: Array<{ name: string; max: number }> + /** 图表数据 */ + data?: RadarDataItem[] +} + +// 饼图/环形图数据项接口 +export interface PieDataItem { + /** 数据值 */ + value: number + /** 数据名称 */ + name: string +} + +// 环形图 Props 接口 - 统一环形图配置 +export interface RingChartProps extends BaseChartProps, InteractionProps { + /** 图表数据 */ + data: PieDataItem[] + /** 内外半径 */ + radius?: string[] + /** 边框圆角 */ + borderRadius?: number + /** 中心文本 */ + centerText?: string + /** 是否显示标签 */ + showLabel?: boolean +} + +// K线图数据项接口 +export interface KLineDataItem { + /** 时间标签 */ + time: string + /** 开盘价 */ + open: number + /** 收盘价 */ + close: number + /** 最高价 */ + high: number + /** 最低价 */ + low: number +} + +// K线图 Props 接口 - 统一K线图配置 +export interface KLineChartProps extends BaseChartProps { + /** 图表数据 */ + data?: KLineDataItem[] + /** 是否显示数据缩放控件 */ + showDataZoom?: boolean + /** 数据缩放初始开始位置 */ + dataZoomStart?: number + /** 数据缩放初始结束位置 */ + dataZoomEnd?: number +} + +// 散点图数据项接口 +export interface ScatterDataItem { + /** 坐标值 [x, y] */ + value: number[] +} + +// 散点图 Props 接口 - 统一散点图配置 +export interface ScatterChartProps extends BaseChartProps, AxisDisplayProps, InteractionProps { + /** 图表数据 */ + data?: ScatterDataItem[] + /** 散点大小 */ + symbolSize?: number +} + +// 双柱对比图 Props 接口 - 统一双柱对比图配置 +export interface DualBarCompareChartProps extends BaseChartProps { + /** 上方数据 */ + topData: number[] + /** 下方数据 */ + bottomData: number[] + /** X轴标签数据 */ + xAxisData: string[] + /** 上方柱子颜色 */ + topColor?: string + /** 下方柱子颜色 */ + bottomColor?: string + /** 柱状图宽度 */ + barWidth?: number +} + +// 地图图表 Props 接口 - 统一地图图表配置 +export interface MapChartProps extends BaseChartProps { + /** 地图数据 */ + mapData?: any[] + /** 选中区域 */ + selectedRegion?: string + /** 是否显示标签 */ + showLabels?: boolean + /** 是否显示散点 */ + showScatter?: boolean +} + +// 双向堆叠柱状图 Props 接口(人口金字塔样式) +export interface BidirectionalBarChartProps + extends BaseChartProps, + AxisDisplayProps, + InteractionProps { + /** 正向数据(向上显示) */ + positiveData: number[] + /** 负向数据(向下显示) */ + negativeData: number[] + /** X轴标签数据 */ + xAxisData?: string[] + /** 正向数据名称 */ + positiveName?: string + /** 负向数据名称 */ + negativeName?: string + /** 柱状图宽度 */ + barWidth?: string | number + /** Y轴最小值 */ + yAxisMin?: number + /** Y轴最大值 */ + yAxisMax?: number + /** 是否显示数据标签 */ + showDataLabel?: boolean + /** 正向数据圆角配置 */ + positiveBorderRadius?: number | number[] + /** 负向数据圆角配置 */ + negativeBorderRadius?: number | number[] +} + +// 图表配置生成器函数类型 +export type ChartOptionGenerator = () => EChartsOption + +// 图表事件回调类型 +export type ChartEventCallback = (params: any) => void + +// 图表错误信息接口 +export interface ChartError { + /** 错误码 */ + code: string + /** 错误信息 */ + message: string + /** 错误详情 */ + details?: any +} diff --git a/web-admin/src/types/component/index.ts b/web-admin/src/types/component/index.ts new file mode 100644 index 00000000..b9e90c6a --- /dev/null +++ b/web-admin/src/types/component/index.ts @@ -0,0 +1,145 @@ +/** + * 组件类型定义模块 + * + * 提供项目组件的类型定义 + * + * ## 主要功能 + * + * - 搜索组件类型定义 + * - 表格列配置类型 + * - 分页配置类型 + * - 表单规则类型 + * - 对话框配置类型 + * + * ## 使用场景 + * + * - 组件 Props 类型约束 + * - 组件配置类型定义 + * - 组件事件参数类型 + * + * @module types/component/index + * @author Art Design Pro Team + */ + +// 搜索组件类型 +export type SearchComponentType = + | 'input' + | 'select' + | 'radio' + | 'checkbox' + | 'date' + | 'datetime' + | 'daterange' + | 'datetimerange' + | 'month' + | 'monthrange' + | 'year' + | 'yearrange' + | 'week' + | 'time' + | 'timerange' + +// 搜索框值变化参数 +export interface SearchChangeParams { + prop: string + val: unknown +} + +// 表格列配置接口 +export interface ColumnOption { + // 列类型 + type?: 'selection' | 'expand' | 'index' | 'globalIndex' + // 列属性名 + prop?: string + // 列标题 + label?: string + // 列宽度 + width?: string | number + // 最小列宽度 + minWidth?: string | number + // 固定列 + fixed?: boolean | 'left' | 'right' + // 是否可排序 + sortable?: boolean | 'custom' + // 过滤器选项 + filters?: any[] + // 过滤方法 + filterMethod?: (value: any, row: any) => boolean + // 过滤器位置 + filterPlacement?: string + // 是否禁用 + disabled?: boolean + // 是否显示列 + visible?: boolean + // 是否选中显示 + checked?: boolean + // 自定义渲染函数 + formatter?: (row: T) => any + // 插槽相关配置 + // 是否使用插槽渲染内容 + useSlot?: boolean + // 插槽名称(默认为 prop 值) + slotName?: string + // 是否使用表头插槽 + useHeaderSlot?: boolean + // 表头插槽名称(默认为 `${prop}-header`) + headerSlotName?: string + // 其他属性 + [key: string]: any +} + +// 分页配置 +export interface PaginationConfig { + // 当前页 + currentPage: number + // 每页条数 + pageSize: number + // 总条数 + total: number + // 每页显示个数选择器的选项 + pageSizes?: number[] + // 组件布局 + layout?: string + // 是否为小型分页 + small?: boolean +} + +// 表单规则 +export interface FormRule { + // 是否必填 + required?: boolean + // 错误提示信息 + message?: string + // 触发方式 + trigger?: string | string[] + // 最小长度 + min?: number + // 最大长度 + max?: number + // 正则表达式 + pattern?: RegExp + // 自定义验证函数 + validator?: (rule: any, value: any, callback: any) => void +} + +// 对话框配置 +export interface DialogConfig { + // 标题 + title: string + // 是否显示 + visible: boolean + // 宽度 + width?: string | number + // 是否可以通过点击 modal 关闭 + closeOnClickModal?: boolean + // 是否可以通过按下 ESC 关闭 + closeOnPressEscape?: boolean + // 是否显示关闭按钮 + showClose?: boolean + // 是否在 Dialog 出现时将 body 滚动锁定 + lockScroll?: boolean + // 是否显示遮罩层 + modal?: boolean + // 自定义类名 + customClass?: string +} diff --git a/web-admin/src/types/config/index.ts b/web-admin/src/types/config/index.ts new file mode 100644 index 00000000..9e7d708c --- /dev/null +++ b/web-admin/src/types/config/index.ts @@ -0,0 +1,213 @@ +/** + * 配置类型定义模块 + * + * 提供系统配置相关的类型定义 + * + * ## 主要功能 + * + * - 主题设置类型 + * - 菜单布局类型 + * - 节日配置类型 + * - 系统基础配置类型 + * - 快速入口配置类型 + * - 顶部栏功能配置类型 + * - 环境配置类型 + * - 应用配置类型 + * + * ## 使用场景 + * + * - 系统配置文件类型约束 + * - 配置项类型定义 + * - 配置数据验证 + * + * @module types/config/index + * @author Art Design Pro Team + */ + +import { MenuTypeEnum, SystemThemeEnum } from '@/enums/appEnum' +import { MenuThemeType, SystemThemeTypes } from '@/types/store' + +// 主题设置 +export interface ThemeSetting { + /** 主题名称 */ + name: string + /** 系统主题类型 */ + theme: SystemThemeEnum + /** 主题颜色数组 */ + color: string[] + /** 左侧线条颜色 */ + leftLineColor: string + /** 右侧线条颜色 */ + rightLineColor: string + /** 主题图片 */ + img: string +} + +// 菜单布局 +export interface MenuLayout { + /** 布局名称 */ + name: string + /** 菜单类型值 */ + value: MenuTypeEnum + /** 布局预览图 */ + img: string + /** 布局描述 */ + description?: string +} + +// 节日配置 +export interface FestivalConfig { + /** 节日日期(单日)或开始日期(日期范围) */ + date: string + /** 节日结束日期(可选,用于跨日期节日) */ + endDate?: string + /** 节日名称 */ + name: string + /** 烟花图片 */ + image: string + /** 滚动文本 */ + scrollText: string + /** 是否激活 */ + isActive?: boolean + /** 烟花播放次数(可选,默认为 3 次) */ + count?: number +} + +// 系统基础配置 +export interface SystemBasicConfig { + // 系统名称 + name: string + // 系统描述 + description?: string + // 系统logo + logo?: string + // 系统favicon + favicon?: string + // 版权信息 + copyright?: string +} + +// 快速入口基础项 +export interface FastEnterBaseItem { + /** 名称 */ + name: string + /** 是否启用 */ + enabled?: boolean + /** 排序权重 */ + order?: number + /** 路由名称 */ + routeName?: string + /** 外部链接 */ + link?: string +} + +// 快速入口应用项 +export interface FastEnterApplication extends FastEnterBaseItem { + /** 应用描述 */ + description: string + /** 图标代码 */ + icon: string + /** 图标颜色 */ + iconColor: string +} + +// 快速链接项 +export type FastEnterQuickLink = FastEnterBaseItem + +// 快速入口配置 +export interface FastEnterConfig { + /** 应用列表 */ + applications: FastEnterApplication[] + /** 快速链接 */ + quickLinks: FastEnterQuickLink[] + /** 显示条件(屏幕宽度) */ + minWidth?: number +} + +// 系统配置 +export interface SystemConfig { + // 系统基础信息 + systemInfo: SystemBasicConfig + // 系统主题样式 + systemThemeStyles: SystemThemeTypes + // 设置主题列表 + settingThemeList: ThemeSetting[] + // 菜单布局列表 + menuLayoutList: MenuLayout[] + // 主题列表 + themeList: MenuThemeType[] + // 暗色菜单样式 + darkMenuStyles: MenuThemeType[] + // 系统主色调 + systemMainColor: readonly string[] + // 快速入口配置 + fastEnter?: FastEnterConfig + // 顶部栏功能配置 + headerBar?: HeaderBarFeatureConfig + /** 仅保留界面样式参考:跳过登录与后端菜单/用户信息请求 */ + stylePreviewOnly?: boolean +} + +// 环境配置 +export interface EnvConfig { + // 环境名称 + NODE_ENV: string + // 应用版本 + VITE_VERSION: string + // 应用端口 + VITE_PORT: string + // 应用基础路径 + VITE_BASE_URL: string + // API 地址 + VITE_API_URL: string + // 是否开启 Mock + VITE_USE_MOCK?: string + // 是否开启压缩 + VITE_USE_GZIP?: string + // 是否开启 CDN + VITE_USE_CDN?: string +} + +// 应用配置 +export interface AppConfig extends SystemConfig { + // 环境配置 + env: EnvConfig + // 开发模式 + isDev: boolean + // 生产模式 + isProd: boolean + // 测试模式 + isTest: boolean +} + +// 功能配置项基础接口 +export interface FeatureConfigItem { + enabled: boolean + description: string +} + +// 顶部栏功能配置接口 +export interface HeaderBarFeatureConfig { + /** 菜单按钮 */ + menuButton: FeatureConfigItem + /** 刷新按钮 */ + refreshButton: FeatureConfigItem + /** 快速入口 */ + fastEnter: FeatureConfigItem + /** 面包屑导航 */ + breadcrumb: FeatureConfigItem + /** 全局搜索 */ + globalSearch: FeatureConfigItem + /** 全屏功能 */ + fullscreen: FeatureConfigItem + /** 通知功能 */ + notification: FeatureConfigItem + /** 聊天功能 */ + chat: FeatureConfigItem + /** 多语言切换 */ + language: FeatureConfigItem + /** 设置面板 */ + settings: FeatureConfigItem + /** 主题切换 */ + themeToggle: FeatureConfigItem +} diff --git a/web-admin/src/types/directive/directive.d.ts b/web-admin/src/types/directive/directive.d.ts new file mode 100644 index 00000000..eb0154e7 --- /dev/null +++ b/web-admin/src/types/directive/directive.d.ts @@ -0,0 +1,15 @@ +import type { + AuthDirective, + RolesDirective, + RippleDirective, + HighlightDirective +} from '@/directives' + +declare module 'vue' { + export interface GlobalDirectives { + vAuth: AuthDirective + vRoles: RolesDirective + vRipple: RippleDirective + vHighlight: HighlightDirective + } +} diff --git a/web-admin/src/types/index.ts b/web-admin/src/types/index.ts new file mode 100644 index 00000000..9032fd27 --- /dev/null +++ b/web-admin/src/types/index.ts @@ -0,0 +1,22 @@ +/** + * 类型定义统一导出模块 + * 提供全局类型定义的统一导出入口 + * + * @module types/index + * @author Art Design Pro Team + */ + +/** 通用类型定义(基础类型、工具类型等) */ +export * from './common' + +/** 组件相关类型定义 */ +export * from './component' + +/** 状态管理相关类型定义 */ +export * from './store' + +/** 路由相关类型定义 */ +export * from './router' + +/** 配置相关类型定义 */ +export * from './config' diff --git a/web-admin/src/types/router/index.ts b/web-admin/src/types/router/index.ts new file mode 100644 index 00000000..0065b62f --- /dev/null +++ b/web-admin/src/types/router/index.ts @@ -0,0 +1,83 @@ +/** + * 路由类型定义模块 + * + * 提供路由相关的类型定义 + * + * ## 主要功能 + * + * - 路由元数据类型(标题、图标、权限等) + * - 应用路由记录类型 + * - 路由配置扩展 + * + * ## 使用场景 + * + * - 路由配置类型约束 + * - 路由元数据定义 + * - 菜单生成 + * - 权限控制 + * + * @module types/router/index + * @author Art Design Pro Team + */ + +import { RouteRecordRaw } from 'vue-router' + +/** + * 路由元数据接口 + * 定义路由的各种配置属性 + */ +export interface RouteMeta extends Record { + /** 路由标题 */ + title: string + /** 路由图标 */ + icon?: string + /** 是否显示徽章 */ + showBadge?: boolean + /** 文本徽章 */ + showTextBadge?: string + /** 是否在菜单中隐藏 */ + isHide?: boolean + /** 是否在标签页中隐藏 */ + isHideTab?: boolean + /** 外部链接 */ + link?: string + /** 是否为iframe */ + isIframe?: boolean + /** 是否缓存 */ + keepAlive?: boolean + /** 操作权限 */ + authList?: Array<{ + title: string + authMark: string + }> + /** 是否为一级菜单 */ + isFirstLevel?: boolean + /** 角色权限 */ + roles?: string[] + /** 是否固定标签页 */ + fixedTab?: boolean + /** 激活菜单路径 */ + activePath?: string + /** 是否为全屏页面 */ + isFullPage?: boolean + /** 是否为权限按钮行 */ + isAuthButton?: boolean + /** 权限标识 */ + authMark?: string + /** 父级路径 */ + parentPath?: string +} + +/** + * 应用路由记录接口 + * 扩展 Vue Router 的路由记录类型 + */ +export interface AppRouteRecord extends Record { + id?: number + path?: RouteRecordRaw['path'] + name?: RouteRecordRaw['name'] + redirect?: RouteRecordRaw['redirect'] + meta: RouteMeta + children?: AppRouteRecord[] + component?: string | (() => Promise) +} diff --git a/web-admin/src/types/store/index.ts b/web-admin/src/types/store/index.ts new file mode 100644 index 00000000..019801ef --- /dev/null +++ b/web-admin/src/types/store/index.ts @@ -0,0 +1,157 @@ +/** + * Store 状态类型定义模块 + * + * 提供 Pinia Store 的状态类型定义 + * + * ## 主要功能 + * + * - 系统主题类型 + * - 菜单主题类型 + * - 设置状态类型 + * - 工作标签页类型 + * - 用户状态类型 + * - 菜单状态类型 + * - 根状态类型 + * + * ## 使用场景 + * + * - Store 状态类型约束 + * - 状态数据结构定义 + * - 类型提示和自动补全 + * + * @module types/store/index + * @author Art Design Pro Team + */ + +import { MenuThemeEnum, SystemThemeEnum } from '@/enums/appEnum' +import { LocationQueryRaw } from 'vue-router' + +// 系统主题样式(light | dark) +export interface SystemThemeType { + /** 主题类名 */ + className: string +} + +// 定义包含多个主题的类型 +export type SystemThemeTypes = { + [key in Exclude]: SystemThemeType +} + +// 菜单主题样式 +export interface MenuThemeType { + /** 主题类型 */ + theme: MenuThemeEnum + /** 背景颜色 */ + background: string + /** 系统名称颜色 */ + systemNameColor: string + /** 文本颜色 */ + textColor: string + /** 图标颜色 */ + iconColor: string + /** 背景图片 */ + img?: string +} + +// 设置中心 +export interface SettingState { + /** 主题 */ + theme: string + /** 是否只保持一个子菜单的展开 */ + uniqueOpened: boolean + /** 是否显示菜单按钮 */ + menuButton: boolean + /** 是否显示刷新按钮 */ + showRefreshButton: boolean + /** 是否显示面包屑 */ + showCrumbs: boolean + /** 是否自动关闭 */ + autoClose: boolean + /** 是否显示工作标签页 */ + showWorkTab: boolean + /** 是否显示语言切换 */ + showLanguage: boolean + /** 是否显示进度条 */ + showNprogress: boolean + /** 主题模式 */ + themeModel: string +} + +// 多标签 +export interface WorkTab { + /** 标签标题 */ + title: string + /** 自定义标题 */ + customTitle?: string + /** 路由路径 */ + path: string + /** 路由名称 */ + name: string + /** 是否缓存 */ + keepAlive: boolean + /** 是否固定标签 */ + fixedTab?: boolean + /** 路由参数 */ + params?: object + /** 路由查询参数 */ + query?: LocationQueryRaw + /** 图标 */ + icon?: string + /** 是否激活 */ + isActive?: boolean +} + +// 用户Store状态 +export interface UserState { + /** 用户信息 */ + userInfo: Api.Auth.UserInfo | null + /** 认证令牌 */ + token: string | null + /** 用户角色列表 */ + roles: string[] + /** 用户权限列表 */ + permissions: string[] +} + +// 设置Store状态 +export interface SettingStoreState extends SettingState { + // 额外的设置状态 + /** 菜单是否折叠 */ + collapsed: boolean + /** 设备类型 */ + device: 'desktop' | 'mobile' + /** 当前语言 */ + language: string +} + +// 工作标签页Store状态 +export interface WorkTabState { + /** 标签页列表 */ + tabs: WorkTab[] + /** 当前激活的标签页 */ + activeTab: string + /** 缓存的标签页列表 */ + cachedTabs: string[] +} + +// 菜单Store状态 +export interface MenuState { + /** 菜单列表 */ + menuList: any[] + /** 菜单是否已加载 */ + isLoaded: boolean + /** 菜单是否折叠 */ + collapsed: boolean +} + +// 根Store状态类型 +export interface RootState { + /** 用户状态 */ + user: UserState + /** 设置状态 */ + setting: SettingStoreState + /** 工作标签页状态 */ + workTab: WorkTabState + /** 菜单状态 */ + menu: MenuState +} diff --git a/web-admin/src/utils/category-path-display.ts b/web-admin/src/utils/category-path-display.ts new file mode 100644 index 00000000..c68f10be --- /dev/null +++ b/web-admin/src/utils/category-path-display.ts @@ -0,0 +1,24 @@ +import { fetchCategoryList } from '@/api/admin' +import { fetchAllPagedRecords } from '@/utils/fetch-paged-list' +import { buildTreePathLabelFromFlat } from '@/utils/tree-path' + +let cachedFlatCategories: any[] = [] +let cachedAt = 0 +const CACHE_TTL = 60 * 1000 + +export async function ensureCategoryPathDataLoaded(force = false): Promise { + if (!force && cachedFlatCategories.length > 0 && Date.now() - cachedAt < CACHE_TTL) return + const all = await fetchAllPagedRecords((page, pageSize) => fetchCategoryList({ page, pageSize })) + cachedFlatCategories = all || [] + cachedAt = Date.now() +} + +export function formatCategoryPathLabel(categoryId: unknown, fallbackName?: unknown): string { + const cid = String(categoryId ?? '').trim() + const fallback = String(fallbackName ?? '').trim() + if (!cid) return fallback || '—' + const path = buildTreePathLabelFromFlat(cid, cachedFlatCategories) + if (path) return path + return fallback || '—' +} + diff --git a/web-admin/src/utils/constants/index.ts b/web-admin/src/utils/constants/index.ts new file mode 100644 index 00000000..831be296 --- /dev/null +++ b/web-admin/src/utils/constants/index.ts @@ -0,0 +1,8 @@ +/** + * 常量定义相关工具函数统一导出 + * + * @module utils/constants/index + * @author Art Design Pro Team + */ + +export * from './links' diff --git a/web-admin/src/utils/constants/links.ts b/web-admin/src/utils/constants/links.ts new file mode 100644 index 00000000..06d297e6 --- /dev/null +++ b/web-admin/src/utils/constants/links.ts @@ -0,0 +1,35 @@ +/** + * 网站链接常量配置 + * 集中管理便于维护和更新链接地址 + * + * @module utils/constants/links + * @author Art Design Pro Team + */ +export const WEB_LINKS = { + // Github 主页 + GITHUB_HOME: 'https://github.com/Daymychen/art-design-pro', + + // 项目 Github 主页 + GITHUB: 'https://github.com/Daymychen/art-design-pro', + + // 个人博客 + BLOG: 'https://www.artd.pro', + + // 项目文档 + DOCS: 'https://www.artd.pro/docs/zh/', + + // 精简版本 + LiteVersion: 'https://www.artd.pro/docs/zh/guide/lite-version.html', + + // v2.6.1版本 + OldVersion: 'https://www.artd.pro/v2/', + + // 项目社区 + COMMUNITY: 'https://www.artd.pro/docs/zh/community/communicate.html', + + // 个人 Bilibili 主页 + BILIBILI: 'https://space.bilibili.com/425500936?spm_id_from=333.1007.0.0', + + // 项目介绍 + INTRODUCE: 'https://www.artd.pro/docs/zh/guide/introduce.html' +} diff --git a/web-admin/src/utils/fetch-paged-list.ts b/web-admin/src/utils/fetch-paged-list.ts new file mode 100644 index 00000000..9d1c1c6d --- /dev/null +++ b/web-admin/src/utils/fetch-paged-list.ts @@ -0,0 +1,25 @@ +/** + * 分页循环请求直至拿全数据(接口需返回 { list, total })。 + * 用于分类、单位、用户等列表接口,避免只取第一页导致下拉选项不全。 + */ +export async function fetchAllPagedRecords( + fetchPage: (page: number, pageSize: number) => Promise<{ list?: T[]; total?: number }>, + options?: { pageSize?: number; maxPages?: number } +): Promise { + const pageSize = options?.pageSize ?? 100 + const maxPages = options?.maxPages ?? 50 + let page = 1 + const all: T[] = [] + let total = 0 + + while (page <= maxPages) { + const res = await fetchPage(page, pageSize) + total = res.total ?? 0 + const list = res.list ?? [] + all.push(...list) + if (list.length === 0 || all.length >= total || list.length < pageSize) break + page += 1 + } + + return all +} diff --git a/web-admin/src/utils/form/index.ts b/web-admin/src/utils/form/index.ts new file mode 100644 index 00000000..ed23a462 --- /dev/null +++ b/web-admin/src/utils/form/index.ts @@ -0,0 +1,12 @@ +/** + * 表单工具函数统一导出 + * + * @module utils/form + * @author Art Design Pro Team + */ + +// 表单验证器 +export * from './validator' + +// 响应式布局 +export * from './responsive' diff --git a/web-admin/src/utils/form/responsive.ts b/web-admin/src/utils/form/responsive.ts new file mode 100644 index 00000000..c11df924 --- /dev/null +++ b/web-admin/src/utils/form/responsive.ts @@ -0,0 +1,122 @@ +/** + * 表单响应式布局工具模块 + * + * 提供表单项在不同屏幕尺寸下的智能布局计算 + * + * ## 主要功能 + * + * - 响应式断点管理(xs/sm/md/lg/xl) + * - 表单列宽自动降级(避免小屏幕压缩) + * - 基于阈值的智能 span 计算 + * - 响应式计算器工厂函数 + * - 可配置的断点规则 + * + * ## 使用场景 + * + * - 表单组件响应式布局 + * - 搜索表单自适应 + * - 移动端表单优化 + * - 多列表单布局 + * + * ## 断点说明(基于 Element Plus Grid 24 栅格系统): + * - xs (手机): < 768px,小于 12 时降级为 24(满宽) + * - sm (平板): ≥ 768px,小于 12 时降级为 12(半宽) + * - md (中等屏幕): ≥ 992px,小于 8 时降级为 8(三分之一宽) + * - lg (大屏幕): ≥ 1200px,直接使用设置的 span + * - xl (超大屏幕): ≥ 1920px,直接使用设置的 span + * + * ## 核心功能 + * + * - calculateResponsiveSpan: 计算响应式列宽 + * - createResponsiveSpanCalculator: 创建 span 计算器(柯里化) + * + * @module utils/form/responsive + * @author Art Design Pro Team + */ + +/** + * 响应式断点类型 + */ +export type ResponsiveBreakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' + +/** + * 断点配置映射 + */ +interface BreakpointConfig { + /** 最小 span 阈值 */ + threshold: number + /** 降级后的 span 值 */ + fallback: number +} + +/** + * 响应式断点配置 + */ +const BREAKPOINT_CONFIG: Record = { + xs: { threshold: 12, fallback: 24 }, // 手机:小于 12 时使用满宽 + sm: { threshold: 12, fallback: 12 }, // 平板:小于 12 时使用半宽 + md: { threshold: 8, fallback: 8 }, // 中等屏幕:小于 8 时使用三分之一宽 + lg: null, // 大屏幕:直接使用设置的 span + xl: null // 超大屏幕:直接使用设置的 span +} + +/** + * 计算响应式列宽 + * + * 根据屏幕尺寸智能降级,避免小屏幕上表单项被压缩过小 + * + * @param itemSpan 表单项自定义的 span 值 + * @param defaultSpan 默认的 span 值 + * @param breakpoint 当前断点 + * @returns 计算后的 span 值 + * + * @example + * ```ts + * // 在 xs 断点下,span 为 6 会降级为 24(满宽) + * calculateResponsiveSpan(6, 6, 'xs') // 24 + * + * // 在 md 断点下,span 为 6 会降级为 8(三分之一宽) + * calculateResponsiveSpan(6, 6, 'md') // 8 + * + * // 在 lg 断点下,直接使用原始 span + * calculateResponsiveSpan(6, 6, 'lg') // 6 + * ``` + */ +export function calculateResponsiveSpan( + itemSpan: number | undefined, + defaultSpan: number, + breakpoint: ResponsiveBreakpoint +): number { + const finalSpan = itemSpan ?? defaultSpan + const config = BREAKPOINT_CONFIG[breakpoint] + + // 如果没有配置(lg/xl),直接返回原始 span + if (!config) { + return finalSpan + } + + // 如果 span 小于阈值,使用降级值 + return finalSpan >= config.threshold ? finalSpan : config.fallback +} + +/** + * 创建响应式 span 计算器 + * + * 返回一个函数,用于计算指定断点下的 span 值 + * + * @param defaultSpan 默认的 span 值 + * @returns span 计算函数 + * + * @example + * ```ts + * const getColSpan = createResponsiveSpanCalculator(6) + * getColSpan(undefined, 'xs') // 24 + * getColSpan(8, 'md') // 8 + * getColSpan(12, 'lg') // 12 + * ``` + */ +export function createResponsiveSpanCalculator(defaultSpan: number) { + return (itemSpan: number | undefined, breakpoint: ResponsiveBreakpoint): number => { + return calculateResponsiveSpan(itemSpan, defaultSpan, breakpoint) + } +} diff --git a/web-admin/src/utils/form/validator.ts b/web-admin/src/utils/form/validator.ts new file mode 100644 index 00000000..36707636 --- /dev/null +++ b/web-admin/src/utils/form/validator.ts @@ -0,0 +1,316 @@ +/** + * 表单验证工具模块 + * + * 提供全面的表单字段验证功能 + * + * ## 主要功能 + * + * - 手机号码验证(中国大陆格式) + * - 固定电话验证(支持区号格式) + * - 用户账号验证(字母开头,支持数字和下划线) + * - 密码强度验证(普通密码、强密码) + * - 密码强度评估(弱、中、强) + * - IPv4 地址验证 + * - 邮箱地址验证(RFC 5322 标准) + * - URL 地址验证 + * - 身份证号码验证(18位,含校验码验证) + * - 银行卡号验证(Luhn 算法) + * - 字符串空格处理 + * + * ## 验证规则 + * + * - 手机号:1开头,第二位3-9,共11位 + * - 账号:字母开头,5-20位,支持字母数字下划线 + * - 普通密码:6-20位,必须包含字母和数字 + * - 强密码:8-20位,必须包含大小写字母、数字和特殊字符 + * - 身份证:18位,含出生日期和校验码验证 + * - 银行卡:13-19位,通过 Luhn 算法验证 + * + * @module utils/validation/formValidator + * @author Art Design Pro Team + */ + +/** + * 密码强度级别枚举 + */ +export enum PasswordStrength { + WEAK = '弱', + MEDIUM = '中', + STRONG = '强' +} + +/** + * 去除字符串首尾空格 + * @param value 待处理的字符串 + * @returns 返回去除首尾空格后的字符串 + */ +export function trimSpaces(value: string): string { + if (typeof value !== 'string') { + return '' + } + return value.trim() +} + +/** + * 验证手机号码(中国大陆) + * @param value 手机号码字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validatePhone(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + // 中国大陆手机号码:1开头,第二位为3-9,共11位数字 + const phoneRegex = /^1[3-9]\d{9}$/ + return phoneRegex.test(value.trim()) +} + +/** + * 验证固定电话号码(中国大陆) + * @param value 电话号码字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateTelPhone(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + // 支持格式:区号-号码,如:010-12345678、0755-1234567 + const telRegex = /^0\d{2,3}-?\d{7,8}$/ + return telRegex.test(value.trim().replace(/\s+/g, '')) +} + +/** + * 验证用户账号 + * @param value 账号字符串 + * @returns 返回验证结果,true表示格式正确 + * @description 规则:字母开头,5-20位,支持字母、数字、下划线 + */ +export function validateAccount(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + // 字母开头,5-20位,支持字母、数字、下划线 + const accountRegex = /^[a-zA-Z][a-zA-Z0-9_]{4,19}$/ + return accountRegex.test(value.trim()) +} + +/** + * 验证密码 + * @param value 密码字符串 + * @returns 返回验证结果,true表示格式正确 + * @description 规则:6-20位,必须包含字母和数字 + */ +export function validatePassword(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim() + + // 长度检查 + if (trimmedValue.length < 6 || trimmedValue.length > 20) { + return false + } + + // 必须包含字母和数字 + const hasLetter = /[a-zA-Z]/.test(trimmedValue) + const hasNumber = /\d/.test(trimmedValue) + + return hasLetter && hasNumber +} + +/** + * 验证强密码 + * @param value 密码字符串 + * @returns 返回验证结果,true表示格式正确 + * @description 规则:8-20位,必须包含大写字母、小写字母、数字和特殊字符 + */ +export function validateStrongPassword(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim() + + // 长度检查 + if (trimmedValue.length < 8 || trimmedValue.length > 20) { + return false + } + + // 必须包含:大写字母、小写字母、数字、特殊字符 + const hasUpperCase = /[A-Z]/.test(trimmedValue) + const hasLowerCase = /[a-z]/.test(trimmedValue) + const hasNumber = /\d/.test(trimmedValue) + const hasSpecialChar = /[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/.test(trimmedValue) + + return hasUpperCase && hasLowerCase && hasNumber && hasSpecialChar +} + +/** + * 获取密码强度 + * @param value 密码字符串 + * @returns 返回密码强度:弱、中、强 + * @description 弱:纯数字/纯字母/纯特殊字符;中:两种组合;强:三种或以上组合 + */ +export function getPasswordStrength(value: string): PasswordStrength { + if (!value || typeof value !== 'string') { + return PasswordStrength.WEAK + } + + const trimmedValue = value.trim() + + if (trimmedValue.length < 6) { + return PasswordStrength.WEAK + } + + const hasUpperCase = /[A-Z]/.test(trimmedValue) + const hasLowerCase = /[a-z]/.test(trimmedValue) + const hasNumber = /\d/.test(trimmedValue) + const hasSpecialChar = /[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/.test(trimmedValue) + + const typeCount = [hasUpperCase, hasLowerCase, hasNumber, hasSpecialChar].filter(Boolean).length + + if (typeCount >= 3) { + return PasswordStrength.STRONG + } else if (typeCount >= 2) { + return PasswordStrength.MEDIUM + } else { + return PasswordStrength.WEAK + } +} + +/** + * 验证IPv4地址 + * @param value IP地址字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateIPv4Address(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim() + const ipRegex = /^((25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|[01]?\d{1,2})$/ + + if (!ipRegex.test(trimmedValue)) { + return false + } + + // 额外检查每个段是否在有效范围内 + const segments = trimmedValue.split('.') + return segments.every((segment) => { + const num = parseInt(segment, 10) + return num >= 0 && num <= 255 + }) +} + +/** + * 验证邮箱地址 + * @param value 邮箱地址字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateEmail(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim() + + // RFC 5322 标准的简化版邮箱正则 + const emailRegex = + /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ + + return emailRegex.test(trimmedValue) && trimmedValue.length <= 254 +} + +/** + * 验证URL地址 + * @param value URL字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateURL(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + try { + new URL(value.trim()) + return true + } catch { + return false + } +} + +/** + * 验证身份证号码(中国大陆) + * @param value 身份证号码字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateChineseIDCard(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim() + + // 18位身份证号码正则 + const idCardRegex = + /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ + + if (!idCardRegex.test(trimmedValue)) { + return false + } + + // 验证校验码 + const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] + const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] + + let sum = 0 + for (let i = 0; i < 17; i++) { + sum += parseInt(trimmedValue[i]) * weights[i] + } + + const checkCode = checkCodes[sum % 11] + return trimmedValue[17].toUpperCase() === checkCode +} + +/** + * 验证银行卡号 + * @param value 银行卡号字符串 + * @returns 返回验证结果,true表示格式正确 + */ +export function validateBankCard(value: string): boolean { + if (!value || typeof value !== 'string') { + return false + } + + const trimmedValue = value.trim().replace(/\s+/g, '') + + // 银行卡号通常为13-19位数字 + if (!/^\d{13,19}$/.test(trimmedValue)) { + return false + } + + // Luhn算法验证 + let sum = 0 + let shouldDouble = false + + for (let i = trimmedValue.length - 1; i >= 0; i--) { + let digit = parseInt(trimmedValue[i]) + + if (shouldDouble) { + digit *= 2 + if (digit > 9) { + digit = (digit % 10) + 1 + } + } + + sum += digit + shouldDouble = !shouldDouble + } + + return sum % 10 === 0 +} diff --git a/web-admin/src/utils/fullscreen-loading.ts b/web-admin/src/utils/fullscreen-loading.ts new file mode 100644 index 00000000..a9442a7c --- /dev/null +++ b/web-admin/src/utils/fullscreen-loading.ts @@ -0,0 +1,25 @@ +import { ElLoading } from 'element-plus' + +const defaultOptions = { + lock: true, + background: 'rgba(0, 0, 0, 0.35)' +} as const + +/** 全屏蒙层 + 异步任务;无论成功/失败都会在 finally 关闭 */ +export async function withFullscreenLoading( + task: () => Promise, + text = '请稍候…' +): Promise { + const inst = ElLoading.service({ ...defaultOptions, text }) + try { + return await task() + } finally { + inst.close() + } +} + +export const fullscreenLoadingText = { + save: '正在保存,请稍候…', + delete: '正在删除,请稍候…', + batchDelete: '正在批量删除,请稍候…' +} as const diff --git a/web-admin/src/utils/http/crypto.ts b/web-admin/src/utils/http/crypto.ts new file mode 100644 index 00000000..07854c41 --- /dev/null +++ b/web-admin/src/utils/http/crypto.ts @@ -0,0 +1,97 @@ +export interface EncEnvelope { + enc: 1 + ts: number + nonce: string + edata: string +} + +function bytesToBase64(bytes: Uint8Array): string { + let binary = '' + bytes.forEach((b) => { + binary += String.fromCharCode(b) + }) + return btoa(binary) +} + +function base64ToBytes(base64: string): Uint8Array { + const binary = atob(base64) + const out = new Uint8Array(binary.length) + for (let i = 0; i < binary.length; i += 1) { + out[i] = binary.charCodeAt(i) + } + return out +} + +function toBase64Url(bytes: Uint8Array): string { + return bytesToBase64(bytes).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '') +} + +function fromBase64Url(base64url: string): Uint8Array { + const base64 = base64url.replace(/-/g, '+').replace(/_/g, '/') + const padding = '='.repeat((4 - (base64.length % 4)) % 4) + return base64ToBytes(base64 + padding) +} + +function hexToBytes(hex: string): Uint8Array { + const out = new Uint8Array(hex.length / 2) + for (let i = 0; i < out.length; i += 1) { + out[i] = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16) + } + return out +} + +async function sha256Hex(text: string): Promise { + const data = new TextEncoder().encode(text) + const digest = await crypto.subtle.digest('SHA-256', data) + const bytes = new Uint8Array(digest) + return Array.from(bytes) + .map((b) => b.toString(16).padStart(2, '0')) + .join('') +} + +export function randomNonce(): string { + const bytes = crypto.getRandomValues(new Uint8Array(12)) + return Array.from(bytes) + .map((b) => b.toString(16).padStart(2, '0')) + .join('') +} + +export async function deriveKey( + fixed: string, + userId: string, + ts: number, + nonce: string +): Promise { + return sha256Hex(`${fixed}:${userId}:${ts}:${nonce}`) +} + +export async function encryptJson(payload: Record, keyHex: string): Promise { + const iv = crypto.getRandomValues(new Uint8Array(12)) + const key = await crypto.subtle.importKey('raw', hexToBytes(keyHex), 'AES-GCM', false, [ + 'encrypt' + ]) + const plain = new TextEncoder().encode(JSON.stringify(payload)) + const encrypted = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, plain) + const merged = new Uint8Array(iv.length + encrypted.byteLength) + merged.set(iv, 0) + merged.set(new Uint8Array(encrypted), iv.length) + return toBase64Url(merged) +} + +export async function decryptJson(edata: string, keyHex: string): Promise { + const raw = fromBase64Url(edata) + if (raw.length < 13) { + throw new Error('响应密文非法') + } + const iv = raw.slice(0, 12) + const cipher = raw.slice(12) + const key = await crypto.subtle.importKey('raw', hexToBytes(keyHex), 'AES-GCM', false, [ + 'decrypt' + ]) + const decrypted = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, cipher) + const text = new TextDecoder().decode(new Uint8Array(decrypted)) + if (!text) { + throw new Error('响应解密失败') + } + return JSON.parse(text) as T +} diff --git a/web-admin/src/utils/http/error.ts b/web-admin/src/utils/http/error.ts new file mode 100644 index 00000000..d470281b --- /dev/null +++ b/web-admin/src/utils/http/error.ts @@ -0,0 +1,190 @@ +/** + * HTTP 错误处理模块 + * + * 提供统一的 HTTP 请求错误处理机制 + * + * ## 主要功能 + * + * - 自定义 HttpError 错误类,封装错误信息、状态码、时间戳等 + * - 错误拦截和转换,将 Axios 错误转换为标准的 HttpError + * - 错误消息国际化处理,根据状态码返回对应的多语言错误提示 + * - 错误日志记录,便于问题追踪和调试 + * - 错误和成功消息的统一展示 + * - 类型守卫函数,用于判断错误类型 + * + * ## 使用场景 + * + * - HTTP 请求拦截器中统一处理错误 + * - 业务代码中捕获和处理特定错误 + * - 错误日志收集和上报 + * + * @module utils/http/error + * @author Art Design Pro Team + */ +import { AxiosError } from 'axios' +import { ApiStatus } from './status' +import { $t } from '@/locales' + +// 错误响应接口 +export interface ErrorResponse { + /** 错误状态码 */ + code: number + /** 错误消息 */ + msg: string + /** 错误附加数据 */ + data?: unknown +} + +// 错误日志数据接口 +export interface ErrorLogData { + /** 错误状态码 */ + code: number + /** 错误消息 */ + message: string + /** 错误附加数据 */ + data?: unknown + /** 错误发生时间戳 */ + timestamp: string + /** 请求 URL */ + url?: string + /** 请求方法 */ + method?: string + /** 错误堆栈信息 */ + stack?: string +} + +// 自定义 HttpError 类 +export class HttpError extends Error { + public readonly code: number + public readonly data?: unknown + public readonly timestamp: string + public readonly url?: string + public readonly method?: string + + constructor( + message: string, + code: number, + options?: { + data?: unknown + url?: string + method?: string + } + ) { + super(message) + this.name = 'HttpError' + this.code = code + this.data = options?.data + this.timestamp = new Date().toISOString() + this.url = options?.url + this.method = options?.method + } + + public toLogData(): ErrorLogData { + return { + code: this.code, + message: this.message, + data: this.data, + timestamp: this.timestamp, + url: this.url, + method: this.method, + stack: this.stack + } + } +} + +/** + * 获取错误消息 + * @param status 错误状态码 + * @returns 错误消息 + */ +const getErrorMessage = (status: number): string => { + const errorMap: Record = { + [ApiStatus.unauthorized]: 'httpMsg.unauthorized', + [ApiStatus.forbidden]: 'httpMsg.forbidden', + [ApiStatus.notFound]: 'httpMsg.notFound', + [ApiStatus.methodNotAllowed]: 'httpMsg.methodNotAllowed', + [ApiStatus.requestTimeout]: 'httpMsg.requestTimeout', + [ApiStatus.internalServerError]: 'httpMsg.internalServerError', + [ApiStatus.badGateway]: 'httpMsg.badGateway', + [ApiStatus.serviceUnavailable]: 'httpMsg.serviceUnavailable', + [ApiStatus.gatewayTimeout]: 'httpMsg.gatewayTimeout' + } + + return $t(errorMap[status] || 'httpMsg.internalServerError') +} + +/** + * 处理错误 + * @param error 错误对象 + * @returns 错误对象 + */ +export function handleError(error: AxiosError): never { + // 处理取消的请求 + if (error.code === 'ERR_CANCELED') { + console.warn('Request cancelled:', error.message) + throw new HttpError($t('httpMsg.requestCancelled'), ApiStatus.error) + } + + const statusCode = error.response?.status + const errorData = error.response?.data as any + const errorMessage = errorData?.msg || errorData?.message || error.message + const requestConfig = error.config + + // 无 HTTP 响应:断网、后端未启动、连接被拒绝、超时、浏览器休眠后首包失败等 + if (!error.response) { + const axiosCode = error.code + if (axiosCode === 'ECONNABORTED') { + throw new HttpError($t('httpMsg.requestTimeout'), ApiStatus.requestTimeout, { + url: requestConfig?.url, + method: requestConfig?.method?.toUpperCase() + }) + } + throw new HttpError($t('httpMsg.networkError'), ApiStatus.networkError, { + url: requestConfig?.url, + method: requestConfig?.method?.toUpperCase() + }) + } + + // 处理 HTTP 状态码错误 + const message = statusCode + ? getErrorMessage(statusCode) + : errorMessage || $t('httpMsg.requestFailed') + throw new HttpError(message, statusCode || ApiStatus.error, { + data: error.response.data, + url: requestConfig?.url, + method: requestConfig?.method?.toUpperCase() + }) +} + +/** + * 显示错误消息 + * @param error 错误对象 + * @param showMessage 是否显示错误消息 + */ +export function showError(error: HttpError, showMessage: boolean = true): void { + if (showMessage) { + ElMessage.error(error.message) + } + // 记录错误日志 + console.error('[HTTP Error]', error.toLogData()) +} + +/** + * 显示成功消息 + * @param message 成功消息 + * @param showMessage 是否显示消息 + */ +export function showSuccess(message: string, showMessage: boolean = true): void { + if (showMessage) { + ElMessage.success(message) + } +} + +/** + * 判断是否为 HttpError 类型 + * @param error 错误对象 + * @returns 是否为 HttpError 类型 + */ +export const isHttpError = (error: unknown): error is HttpError => { + return error instanceof HttpError +} diff --git a/web-admin/src/utils/http/index.ts b/web-admin/src/utils/http/index.ts new file mode 100644 index 00000000..d40b7d56 --- /dev/null +++ b/web-admin/src/utils/http/index.ts @@ -0,0 +1,369 @@ +/** + * HTTP 请求封装模块 + * 基于 Axios 封装的 HTTP 请求工具,提供统一的请求/响应处理 + * + * ## 主要功能 + * + * - 请求/响应拦截器(自动添加 Token、统一错误处理) + * - 401 未授权自动登出(带防抖机制) + * - 请求失败自动重试(可配置) + * - 统一的成功/错误消息提示 + * - 支持 GET/POST/PUT/DELETE 等常用方法 + * + * @module utils/http + * @author Art Design Pro Team + */ + +import axios, { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios' +import { useUserStore } from '@/store/modules/user' +import { ApiStatus } from './status' +import { HttpError, handleError, showError, showSuccess } from './error' +import { $t } from '@/locales' +import { BaseResponse } from '@/types' +import { decryptJson, deriveKey, encryptJson, randomNonce } from './crypto' + +/** 请求配置常量 */ +const REQUEST_TIMEOUT = 15000 +const LOGOUT_DELAY = 500 +const RETRY_DELAY = 1000 +/** 幂等请求在网络抖动、唤醒后首包失败时自动重试次数 */ +const SAFE_METHOD_MAX_RETRIES = 2 +const UNAUTHORIZED_DEBOUNCE_TIME = 3000 + +/** 401防抖状态 */ +let isUnauthorizedErrorShown = false +let unauthorizedTimer: NodeJS.Timeout | null = null + +/** 扩展 AxiosRequestConfig */ +interface ExtendedAxiosRequestConfig extends AxiosRequestConfig { + showErrorMessage?: boolean + showSuccessMessage?: boolean +} + +const { VITE_API_URL, VITE_WITH_CREDENTIALS } = import.meta.env +const API_ENCRYPT_ENABLED = String(import.meta.env.VITE_API_ENCRYPT_ENABLED || 'false') === 'true' +const API_ENCRYPT_FAIL_OPEN = + String(import.meta.env.VITE_API_ENCRYPT_FAIL_OPEN || 'true') === 'true' +const API_ENCRYPT_FIXED_SECRET = String(import.meta.env.VITE_API_ENCRYPT_FIXED_SECRET || '') +const API_ENCRYPT_EXCLUDE_PATHS = String(import.meta.env.VITE_API_ENCRYPT_EXCLUDE_PATHS || '') + .split(',') + .map((item: string) => item.trim()) + .filter(Boolean) +const IS_DEV = import.meta.env.DEV + +/** Axios实例 */ +const axiosInstance = axios.create({ + timeout: REQUEST_TIMEOUT, + baseURL: VITE_API_URL, + withCredentials: VITE_WITH_CREDENTIALS === 'true', + validateStatus: (status) => status >= 200 && status < 300, + transformResponse: [ + (data, headers) => { + const contentType = headers['content-type'] + if (contentType?.includes('application/json')) { + try { + return JSON.parse(data) + } catch { + return data + } + } + return data + } + ] +}) + +/** 请求拦截器 */ +axiosInstance.interceptors.request.use( + async (request: InternalAxiosRequestConfig) => { + const userStore = useUserStore() + const { accessToken } = userStore + if (accessToken) request.headers.set('Authorization', `Bearer ${accessToken}`) + + const skipReason = getEncryptSkipReason(request, userStore) + const shouldEncrypt = !skipReason + if (IS_DEV) { + request.headers.set('X-Api-Crypto', shouldEncrypt ? 'on' : `off:${skipReason}`) + } + + if (shouldEncrypt) { + const originalMethod = (request.method || 'GET').toUpperCase() + const originalData = request.data + const originalParams = request.params + try { + // Web 端统一“GET 走 POST 传输”,后端通过 method override 还原语义。 + if (originalMethod === 'GET') { + request.method = 'POST' + request.headers.set('X-HTTP-Method-Override', 'GET') + request.data = request.params || {} + request.params = undefined + } + const ts = Date.now() + const nonce = randomNonce() + const userId = resolveUserId(userStore) + const keyHex = await deriveKey(API_ENCRYPT_FIXED_SECRET, userId, ts, nonce) + const plainData = normalizeRequestData(request.data) + const edata = await encryptJson({ data: plainData }, keyHex) + request.headers.set('Content-Type', 'application/json') + request.data = JSON.stringify({ + enc: 1, + ts, + nonce, + edata + }) + request.params = undefined + return request + } catch (error) { + if (!API_ENCRYPT_FAIL_OPEN) { + return Promise.reject(error) + } + console.warn('[api-crypto] request encrypt failed, fallback plaintext', { + url: request.url, + method: originalMethod, + error + }) + request.method = originalMethod + request.data = originalData + request.params = originalParams + } + } + + if (request.data && !(request.data instanceof FormData) && !request.headers['Content-Type']) { + request.headers.set('Content-Type', 'application/json') + request.data = JSON.stringify(request.data) + } + + return request + }, + (error) => { + showError(createHttpError($t('httpMsg.requestConfigError'), ApiStatus.error)) + return Promise.reject(error) + } +) + +/** 响应拦截器 */ +axiosInstance.interceptors.response.use( + async (response: AxiosResponse) => { + const resData = await decryptResponseIfNeeded(response.data) + response.data = resData as BaseResponse + const code = resData?.code + const msg = resData?.msg || resData?.message + if (code === ApiStatus.success) return response + if (code === ApiStatus.unauthorized) handleUnauthorizedError(msg) + throw createHttpError(msg || $t('httpMsg.requestFailed'), code) + }, + (error) => { + if (error.response?.status === ApiStatus.unauthorized) handleUnauthorizedError() + return Promise.reject(handleError(error)) + } +) + +/** 统一创建HttpError */ +function createHttpError(message: string, code: number) { + return new HttpError(message, code) +} + +/** 处理401错误(带防抖) */ +function handleUnauthorizedError(message?: string): never { + const error = createHttpError(message || $t('httpMsg.unauthorized'), ApiStatus.unauthorized) + + if (!isUnauthorizedErrorShown) { + isUnauthorizedErrorShown = true + logOut() + + unauthorizedTimer = setTimeout(resetUnauthorizedError, UNAUTHORIZED_DEBOUNCE_TIME) + + showError(error, true) + throw error + } + + throw error +} + +/** 重置401防抖状态 */ +function resetUnauthorizedError() { + isUnauthorizedErrorShown = false + if (unauthorizedTimer) clearTimeout(unauthorizedTimer) + unauthorizedTimer = null +} + +/** 退出登录函数 */ +function logOut() { + setTimeout(() => { + useUserStore().logOut() + }, LOGOUT_DELAY) +} + +function resolveUserId(userStore: ReturnType): string { + const info = userStore.info || ({} as any) + const fromInfo = String(info.id || info.userId || '') + if (fromInfo) return fromInfo + return parseUserIdFromToken(userStore.accessToken) +} + +function parseUserIdFromToken(token?: string): string { + if (!token || token.split('.').length < 2) return '' + try { + const payload = token.split('.')[1] + const b64 = payload.replace(/-/g, '+').replace(/_/g, '/') + const pad = '='.repeat((4 - (b64.length % 4)) % 4) + const json = atob(b64 + pad) + const obj = JSON.parse(json) + return String(obj?.sub || '') + } catch { + return '' + } +} + +function isPathExcluded(url?: string): boolean { + if (!url) return false + return API_ENCRYPT_EXCLUDE_PATHS.some((prefix) => url.startsWith(prefix)) +} + +function getEncryptSkipReason( + request: InternalAxiosRequestConfig, + userStore: ReturnType +): string { + const headerOverride = + (request.headers as any)?.['X-Api-Crypto'] ?? (request.headers as any)?.['x-api-crypto'] + if (typeof headerOverride === 'string') { + // per-request override: off => 强制不加密;on => 强制加密 + if (headerOverride === 'on') return '' + if (headerOverride.startsWith('off')) return headerOverride + } + if (!API_ENCRYPT_ENABLED || !API_ENCRYPT_FIXED_SECRET) return 'encrypt-disabled-or-no-secret' + if (request.data instanceof FormData) return 'form-data' + if (isPathExcluded(request.url)) return 'exclude-path' + if (!(request.url || '').startsWith('/web/')) return 'non-web-path' + if (!resolveUserId(userStore)) return 'missing-user-id' + return '' +} + +function normalizeRequestData(data: any): Record { + if (!data) return {} + if (typeof data === 'string') { + try { + const parsed = JSON.parse(data) + return typeof parsed === 'object' && parsed ? parsed : {} + } catch { + return {} + } + } + return typeof data === 'object' ? data : {} +} + +async function decryptResponseIfNeeded(data: any): Promise { + if (!data || !data.encrypted || !data.edata) return data + if (!API_ENCRYPT_FIXED_SECRET) return data + const userStore = useUserStore() + const userId = resolveUserId(userStore) + if (!userId) return data + try { + const keyHex = await deriveKey( + API_ENCRYPT_FIXED_SECRET, + userId, + Number(data.ts), + String(data.nonce) + ) + return decryptJson(data.edata, keyHex) + } catch (error) { + if (!API_ENCRYPT_FAIL_OPEN) { + throw error + } + console.warn('[api-crypto] response decrypt failed, fallback raw envelope', error) + return data + } +} + +/** 是否需要重试 */ +function shouldRetry(statusCode: number) { + return [ + ApiStatus.networkError, + ApiStatus.requestTimeout, + ApiStatus.internalServerError, + ApiStatus.badGateway, + ApiStatus.serviceUnavailable, + ApiStatus.gatewayTimeout + ].includes(statusCode) +} + +function getMaxRetriesForConfig(config: ExtendedAxiosRequestConfig): number { + const method = (config.method || 'GET').toUpperCase() + return ['GET', 'HEAD'].includes(method) ? SAFE_METHOD_MAX_RETRIES : 0 +} + +/** 请求重试逻辑 */ +async function retryRequest( + config: ExtendedAxiosRequestConfig, + retriesLeft?: number +): Promise { + const max = retriesLeft ?? getMaxRetriesForConfig(config) + try { + return await request(config) + } catch (error) { + if (max > 0 && error instanceof HttpError && shouldRetry(error.code)) { + await delay(RETRY_DELAY) + return retryRequest(config, max - 1) + } + throw error + } +} + +/** 延迟函数 */ +function delay(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)) +} + +/** 请求函数 */ +async function request(config: ExtendedAxiosRequestConfig): Promise { + // POST | PUT 参数自动填充 + if ( + ['POST', 'PUT'].includes(config.method?.toUpperCase() || '') && + config.params && + !config.data + ) { + config.data = config.params + config.params = undefined + } + + try { + const res = await axiosInstance.request>(config) + + // 显示成功消息 + const successMsg = (res.data as any)?.msg || (res.data as any)?.message + if (config.showSuccessMessage && successMsg) { + showSuccess(successMsg) + } + + return res.data.data as T + } catch (error) { + if (error instanceof HttpError && error.code !== ApiStatus.unauthorized) { + const showMsg = config.showErrorMessage !== false + showError(error, showMsg) + } + return Promise.reject(error) + } +} + +/** API方法集合 */ +const api = { + get(config: ExtendedAxiosRequestConfig) { + return retryRequest({ ...config, method: 'GET' }) + }, + post(config: ExtendedAxiosRequestConfig) { + return retryRequest({ ...config, method: 'POST' }) + }, + put(config: ExtendedAxiosRequestConfig) { + return retryRequest({ ...config, method: 'PUT' }) + }, + del(config: ExtendedAxiosRequestConfig) { + return retryRequest({ ...config, method: 'DELETE' }) + }, + delete(config: ExtendedAxiosRequestConfig) { + return retryRequest({ ...config, method: 'DELETE' }) + }, + request(config: ExtendedAxiosRequestConfig) { + return retryRequest(config) + } +} + +export default api diff --git a/web-admin/src/utils/http/status.ts b/web-admin/src/utils/http/status.ts new file mode 100644 index 00000000..411c608b --- /dev/null +++ b/web-admin/src/utils/http/status.ts @@ -0,0 +1,20 @@ +/** + * 接口状态码 + */ +export enum ApiStatus { + success = 200, // 成功 + /** 无 HTTP 响应(后端不可达、断网、连接被拒绝等),勿与 HTTP 400 混淆 */ + networkError = 0, + error = 400, // 错误 + unauthorized = 401, // 未授权 + forbidden = 403, // 禁止访问 + notFound = 404, // 未找到 + methodNotAllowed = 405, // 方法不允许 + requestTimeout = 408, // 请求超时 + internalServerError = 500, // 服务器错误 + notImplemented = 501, // 未实现 + badGateway = 502, // 网关错误 + serviceUnavailable = 503, // 服务不可用 + gatewayTimeout = 504, // 网关超时 + httpVersionNotSupported = 505 // HTTP版本不支持 +} diff --git a/web-admin/src/utils/index.ts b/web-admin/src/utils/index.ts new file mode 100644 index 00000000..f1e1b77b --- /dev/null +++ b/web-admin/src/utils/index.ts @@ -0,0 +1,34 @@ +/** + * Utils 工具函数统一导出 + * 提供向后兼容性和便捷导入 + * + * @module utils/index + * @author Art Design Pro Team + */ + +// UI 相关 +export * from './ui' + +// 路由相关 +export * from './router' + +// 路由导航相关 +export * from './navigation' + +// 系统管理相关 +export * from './sys' + +// 常量定义相关 +export * from './constants' + +// 存储相关 +export * from './storage' + +// HTTP 相关 +export * from './http' + +// 表单相关 +export * from './form' + +// socket 相关 +export * from './socket' diff --git a/web-admin/src/utils/loginRsa.ts b/web-admin/src/utils/loginRsa.ts new file mode 100644 index 00000000..c0ad15fa --- /dev/null +++ b/web-admin/src/utils/loginRsa.ts @@ -0,0 +1,23 @@ +import JSEncrypt from 'jsencrypt' +import request from '@/utils/http' + +/** + * Web 端登录:拉取 RSA 公钥后加密 { username, password, ts },与后端 PKCS#1 v1.5 解密一致。 + */ +export async function buildWebEncryptedLoginBody(username: string, password: string) { + const { publicKeyPem } = await request.get<{ publicKeyPem: string }>({ + url: '/web/auth/login-rsa-public-key' + }) + const crypt = new JSEncrypt() + crypt.setPublicKey(publicKeyPem) + const payload = JSON.stringify({ + username, + password, + ts: Date.now() + }) + const encryptedLogin = crypt.encrypt(payload) + if (!encryptedLogin) { + throw new Error('登录加密失败,请重试') + } + return { encryptedLogin } +} diff --git a/web-admin/src/utils/navigation/index.ts b/web-admin/src/utils/navigation/index.ts new file mode 100644 index 00000000..0b84e78e --- /dev/null +++ b/web-admin/src/utils/navigation/index.ts @@ -0,0 +1,10 @@ +/** + * 路由和导航相关工具函数统一导出 + * + * @module utils/navigation/index + * @author Art Design Pro Team + */ + +export * from './jump' +export * from './worktab' +export * from './route' diff --git a/web-admin/src/utils/navigation/jump.ts b/web-admin/src/utils/navigation/jump.ts new file mode 100644 index 00000000..320edb57 --- /dev/null +++ b/web-admin/src/utils/navigation/jump.ts @@ -0,0 +1,68 @@ +/** + * 导航跳转工具模块 + * + * 提供统一的页面跳转和导航功能 + * + * ## 主要功能 + * + * - 外部链接打开(新窗口) + * - 菜单项跳转处理(支持内部路由和外部链接) + * - iframe 页面跳转支持 + * - 递归查找并跳转到第一个可见的子菜单 + * - 智能判断跳转目标类型(外部链接/内部路由) + * + * @module utils/navigation/jump + * @author Art Design Pro Team + */ +import { AppRouteRecord } from '@/types/router' +import { router } from '@/router' +import { isNavigableMenuItem } from './route' + +// 打开外部链接 +export const openExternalLink = (link: string) => { + window.open(link, '_blank') +} + +/** + * 菜单跳转 + * @param item 菜单项 + * @param jumpToFirst 是否跳转到第一个子菜单 + * @returns + */ +export const handleMenuJump = (item: AppRouteRecord, jumpToFirst: boolean = false) => { + // 处理外部链接 + const { link, isIframe } = item.meta + if (link && !isIframe) { + return openExternalLink(link) + } + + // 如果不需要跳转到第一个子菜单,或者没有子菜单,直接跳转当前路径 + if (!jumpToFirst || !item.children?.length) { + return router.push(item.path) + } + + // 递归查找第一个可导航的叶子节点菜单 + const findFirstLeafMenu = (items: AppRouteRecord[]): AppRouteRecord | undefined => { + for (const child of items) { + if (isNavigableMenuItem(child)) { + return child.children?.length ? findFirstLeafMenu(child.children) || child : child + } + } + return undefined + } + + const firstChild = findFirstLeafMenu(item.children) + + // 如果子菜单都不可见,则回退到父级页面自身。 + if (!firstChild) { + return router.push(item.path) + } + + // 如果第一个子菜单是外部链接则打开新窗口 + if (firstChild.meta?.link) { + return openExternalLink(firstChild.meta.link) + } + + // 跳转到子菜单路径 + router.push(firstChild.path) +} diff --git a/web-admin/src/utils/navigation/route.ts b/web-admin/src/utils/navigation/route.ts new file mode 100644 index 00000000..518bcb96 --- /dev/null +++ b/web-admin/src/utils/navigation/route.ts @@ -0,0 +1,85 @@ +/** + * 路由工具模块 + * + * 提供路由处理和菜单路径相关的工具函数 + * + * ## 主要功能 + * + * - iframe 路由检测,判断是否为外部嵌入页面 + * - 菜单项有效性验证,过滤隐藏和无效菜单 + * - 路径标准化处理,统一路径格式 + * - 递归查找菜单树中第一个有效路径 + * - 支持多级嵌套菜单的路径解析 + * + * ## 使用场景 + * + * - 系统初始化时获取默认跳转路径 + * - 菜单权限过滤后获取首个可访问页面 + * - 路由重定向逻辑处理 + * - iframe 页面特殊处理 + * + * @module utils/navigation/route + * @author Art Design Pro Team + */ + +import { AppRouteRecord } from '@/types' + +// 检查是否为 iframe 路由 +export function isIframe(url: string): boolean { + return url.startsWith('/outside/iframe/') +} + +/** + * 判断菜单项是否可作为默认导航落点 + * 隐藏的全屏页面虽然不展示在菜单中,但仍然可能是合法首页。 + */ +export const isNavigableMenuItem = (menuItem: AppRouteRecord): boolean => { + if (!menuItem.path || !menuItem.path.trim()) { + return false + } + + if (!menuItem.meta?.isHide) { + return true + } + + return menuItem.meta?.isFullPage === true +} + +/** + * 标准化路径格式 + * @param path 路径 + * @returns 标准化后的路径 + */ +const normalizePath = (path: string): string => { + return path.startsWith('/') ? path : `/${path}` +} + +/** + * 递归获取菜单的第一个有效路径 + * @param menuList 菜单列表 + * @returns 第一个有效路径,如果没有找到则返回空字符串 + */ +export const getFirstMenuPath = (menuList: AppRouteRecord[]): string => { + if (!Array.isArray(menuList) || menuList.length === 0) { + return '' + } + + for (const menuItem of menuList) { + if (!isNavigableMenuItem(menuItem)) { + continue + } + + // 如果有子菜单,优先查找子菜单 + if (menuItem.children?.length) { + const childPath = getFirstMenuPath(menuItem.children) + if (childPath) { + return childPath + } + } + + // 返回当前菜单项的标准化路径 + return normalizePath(menuItem.path!) + } + + return '' +} diff --git a/web-admin/src/utils/navigation/worktab.ts b/web-admin/src/utils/navigation/worktab.ts new file mode 100644 index 00000000..6db6a77f --- /dev/null +++ b/web-admin/src/utils/navigation/worktab.ts @@ -0,0 +1,67 @@ +/** + * 工作标签页管理模块 + * + * 提供工作标签页(Worktab)的自动管理功能 + * + * ## 主要功能 + * + * - 根据路由导航自动创建和更新工作标签页 + * - iframe 页面标签页特殊处理 + * - 标签页信息提取(标题、路径、缓存状态等) + * - 固定标签页支持 + * - 根据系统设置控制标签页显示 + * - 首页标签页特殊处理 + * + * ## 使用场景 + * + * - 路由守卫中自动创建标签页 + * - 页面切换时更新标签页状态 + * - 多标签页导航系统 + * + * @module utils/navigation/worktab + * @author Art Design Pro Team + */ +import { useWorktabStore } from '@/store/modules/worktab' +import { RouteLocationNormalized } from 'vue-router' +import { isIframe } from './route' +import { useSettingStore } from '@/store/modules/setting' +import { IframeRouteManager } from '@/router/core' +import { useCommon } from '@/hooks/core/useCommon' + +/** + * 根据当前路由信息设置工作标签页(worktab) + * @param to 当前路由对象 + */ +export const setWorktab = (to: RouteLocationNormalized): void => { + const worktabStore = useWorktabStore() + const { meta, path, name, params, query } = to + if (!meta.isHideTab) { + // 如果是 iframe 页面,则特殊处理工作标签页 + if (isIframe(path)) { + const iframeRoute = IframeRouteManager.getInstance().findByPath(to.path) + + if (iframeRoute?.meta) { + worktabStore.openTab({ + title: iframeRoute.meta.title, + icon: meta.icon as string, + path, + name: name as string, + keepAlive: meta.keepAlive as boolean, + params, + query + }) + } + } else if (useSettingStore().showWorkTab || path === useCommon().homePath.value) { + worktabStore.openTab({ + title: meta.title as string, + icon: meta.icon as string, + path, + name: name as string, + keepAlive: meta.keepAlive as boolean, + params, + query, + fixedTab: meta.fixedTab as boolean + }) + } + } +} diff --git a/web-admin/src/utils/patch-el-select-filterable.ts b/web-admin/src/utils/patch-el-select-filterable.ts new file mode 100644 index 00000000..4c779f28 --- /dev/null +++ b/web-admin/src/utils/patch-el-select-filterable.ts @@ -0,0 +1,11 @@ +/** + * 全局为 Element Plus ElSelect 开启可搜索(filterable 默认 true), + * 所有 el-select 支持按选项文案模糊筛选。需在 createApp 之前执行。 + * 若某处需关闭:在模板上写 :filterable="false"。 + */ +import { selectProps } from 'element-plus/es/components/select/src/select.mjs' + +;(selectProps as { filterable?: unknown }).filterable = { + type: Boolean, + default: true +} diff --git a/web-admin/src/utils/router.ts b/web-admin/src/utils/router.ts new file mode 100644 index 00000000..8c838fff --- /dev/null +++ b/web-admin/src/utils/router.ts @@ -0,0 +1,61 @@ +/** + * 路由工具函数 + * + * 提供路由相关的工具函数 + * + * @module utils/router + */ +import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router' +import AppConfig from '@/config' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import i18n, { $t } from '@/locales' + +/** 扩展的路由配置类型 */ +export type AppRouteRecordRaw = RouteRecordRaw & { + hidden?: boolean +} + +/** 顶部进度条配置 */ +export const configureNProgress = () => { + NProgress.configure({ + easing: 'ease', + speed: 600, + showSpinner: false, + parent: 'body' + }) +} + +/** + * 设置页面标题,根据路由元信息和系统信息拼接标题 + * @param to 当前路由对象 + */ +export const setPageTitle = (to: RouteLocationNormalized): void => { + const { title } = to.meta + if (title) { + setTimeout(() => { + document.title = `${formatMenuTitle(String(title))} - ${AppConfig.systemInfo.name}` + }, 150) + } +} + +/** + * 格式化菜单标题 + * @param title 菜单标题,可以是 i18n 的 key,也可以是字符串 + * @returns 格式化后的菜单标题 + */ +export const formatMenuTitle = (title: string): string => { + if (title) { + if (title.startsWith('menus.')) { + // 使用 te() 方法检查翻译键值是否存在,避免控制台警告 + if (i18n.global.te(title)) { + return $t(title) + } else { + // 如果翻译不存在,返回键值的最后部分作为fallback + return title.split('.').pop() || title + } + } + return title + } + return '' +} diff --git a/web-admin/src/utils/router/sidebar-menu-filter.ts b/web-admin/src/utils/router/sidebar-menu-filter.ts new file mode 100644 index 00000000..e7790fb3 --- /dev/null +++ b/web-admin/src/utils/router/sidebar-menu-filter.ts @@ -0,0 +1,36 @@ +import type { AppRouteRecord } from '@/types/router' + +/** + * 与侧栏渲染(SidebarSubmenu)一致的菜单过滤,用于收集展开 index 等逻辑, + * 避免「原始树」与「实际渲染的 ElSubMenu」不一致导致 open(index) 无效。 + */ +export function isSidebarNavigableRoute(item: AppRouteRecord): boolean { + return !!( + !item.meta.isHide && + ((item.path && item.path.trim()) || item.meta.link || item.meta.isIframe === true) && + (item.component || item.meta.link || item.meta.isIframe === true) + ) +} + +/** + * 递归过滤侧栏菜单路由(与 SidebarSubmenu.filterRoutes 行为一致) + */ +export function filterSidebarRoutes(items: AppRouteRecord[]): AppRouteRecord[] { + return items + .filter((item) => { + if (item.meta.isHide) { + return false + } + + if (item.children && item.children.length > 0) { + const filteredChildren = filterSidebarRoutes(item.children) + return filteredChildren.length > 0 || isSidebarNavigableRoute(item) + } + + return isSidebarNavigableRoute(item) + }) + .map((item) => ({ + ...item, + children: item.children ? filterSidebarRoutes(item.children) : undefined + })) +} diff --git a/web-admin/src/utils/socket/index.ts b/web-admin/src/utils/socket/index.ts new file mode 100644 index 00000000..ac80da1c --- /dev/null +++ b/web-admin/src/utils/socket/index.ts @@ -0,0 +1,423 @@ +interface WebSocketOptions { + url?: string + messageHandler: (event: MessageEvent) => void + reconnectInterval?: number // 重连间隔(ms) + heartbeatInterval?: number // 心跳检测间隔(ms) + pingInterval?: number // 发送ping间隔(ms) + reconnectTimeout?: number // 重连超时时间(ms) + maxReconnectAttempts?: number // 最大重连次数 + connectionTimeout?: number // 连接建立超时时间(ms) +} + +export default class WebSocketClient { + private static instance: WebSocketClient | null = null + private ws: WebSocket | null = null + private url: string + private messageHandler: (event: MessageEvent) => void + private reconnectInterval: number + private heartbeatInterval: number + private pingInterval: number + private reconnectTimeout: number + private maxReconnectAttempts: number + private connectionTimeout: number + private reconnectAttempts: number = 0 // 当前重连次数 + + // 消息队列 - 缓存连接建立前的消息 + private messageQueue: Array = [] + + // 定时器 + private detectionTimer: NodeJS.Timeout | null = null + private timeoutTimer: NodeJS.Timeout | null = null + private reconnectTimer: NodeJS.Timeout | null = null + private pingTimer: NodeJS.Timeout | null = null + private connectionTimer: NodeJS.Timeout | null = null // 连接超时定时器 + + // 状态标识 + private isConnected: boolean = false + private isConnecting: boolean = false // 是否正在连接中 + private stopReconnect: boolean = false + private isReconnecting: boolean = false + + private constructor(options: WebSocketOptions) { + this.url = options.url || (process.env.VUE_APP_LOGIN_WEBSOCKET as string) + this.messageHandler = options.messageHandler + this.reconnectInterval = options.reconnectInterval ?? 20 * 1000 // 默认20秒 + this.heartbeatInterval = options.heartbeatInterval ?? 5 * 1000 // 默认5秒 + this.pingInterval = options.pingInterval ?? 10 * 1000 // 默认10秒 + this.reconnectTimeout = options.reconnectTimeout ?? 30 * 1000 // 默认30秒 + this.maxReconnectAttempts = options.maxReconnectAttempts ?? 10 // 默认最多重连10次 + this.connectionTimeout = options.connectionTimeout ?? 10 * 1000 // 连接超时10秒 + } + + // 单例模式获取实例 + static getInstance(options: WebSocketOptions): WebSocketClient { + if (!WebSocketClient.instance) { + WebSocketClient.instance = new WebSocketClient(options) + } else { + // 更新消息处理器 + WebSocketClient.instance.messageHandler = options.messageHandler + // 如果提供了新的URL,则更新并重新连接 + if (options.url && WebSocketClient.instance.url !== options.url) { + WebSocketClient.instance.url = options.url + WebSocketClient.instance.reconnectAttempts = 0 + WebSocketClient.instance.init() + } + } + return WebSocketClient.instance + } + + // 初始化连接 + init(): void { + this.connect(true) + } + + private connect(resetReconnectAttempts: boolean = false): void { + // 如果正在连接中,不重复连接 + if (this.isConnecting) { + console.log('正在建立WebSocket连接中...') + return + } + + // 如果已连接,不重复连接 + if (this.ws?.readyState === WebSocket.OPEN) { + console.warn('WebSocket连接已存在') + this.flushMessageQueue() // 确保队列中的消息被发送 + return + } + + try { + this.isConnecting = true + this.stopReconnect = false + if (resetReconnectAttempts) { + this.reconnectAttempts = 0 + this.isReconnecting = false + this.clearTimer('reconnectTimer') + } + this.ws = new WebSocket(this.url) + + // 设置连接超时检测 + this.clearTimer('connectionTimer') + this.connectionTimer = setTimeout(() => { + console.error(`WebSocket连接超时 (${this.connectionTimeout}ms):${this.url}`) + this.handleConnectionTimeout() + }, this.connectionTimeout) + + this.ws.onopen = (event) => this.handleOpen(event) + this.ws.onmessage = (event) => this.handleMessage(event) + this.ws.onclose = (event) => this.handleClose(event) + this.ws.onerror = (event) => this.handleError(event) + } catch (error) { + console.error('WebSocket初始化失败:', error) + this.isConnecting = false + this.reconnect() + } + } + + // 处理连接超时 + private handleConnectionTimeout(): void { + if (this.ws?.readyState !== WebSocket.OPEN) { + console.error('WebSocket连接超时,强制关闭连接') + this.ws?.close(1000, 'Connection timeout') + this.isConnecting = false + this.reconnect() + } + } + + // 关闭连接 + close(force?: boolean): void { + this.clearAllTimers() + this.stopReconnect = true + this.isReconnecting = false + this.isConnecting = false + + if (this.ws) { + // 1000 表示正常关闭 + this.ws.close(force ? 1001 : 1000, force ? 'Force closed' : 'Normal close') + this.ws = null + } + + this.isConnected = false + } + + // 发送消息 - 增加消息队列 + send(data: string | ArrayBufferLike | Blob | ArrayBufferView, immediate: boolean = false): void { + // 如果要求立即发送且未连接,则直接报错 + if (immediate && (!this.ws || this.ws.readyState !== WebSocket.OPEN)) { + console.error('WebSocket未连接,无法立即发送消息') + return + } + + // 如果未连接且不要求立即发送,则加入消息队列 + if (!this.ws || this.ws.readyState !== WebSocket.OPEN) { + console.log('WebSocket未连接,消息已加入队列等待发送') + this.messageQueue.push(data) + // 如果未在重连中,则尝试重连 + if (!this.isConnecting && !this.stopReconnect) { + this.init() + } + return + } + + try { + this.ws.send(data) + } catch (error) { + console.error('WebSocket发送消息失败:', error) + // 发送失败时将消息加入队列,等待重连后重试 + this.messageQueue.push(data) + this.reconnect() + } + } + + // 发送队列中的消息 + private flushMessageQueue(): void { + if (this.messageQueue.length > 0 && this.ws?.readyState === WebSocket.OPEN) { + console.log(`发送队列中的${this.messageQueue.length}条消息`) + while (this.messageQueue.length > 0) { + const data = this.messageQueue.shift() + if (data) { + try { + this.ws?.send(data) + } catch (error) { + console.error('发送队列消息失败:', error) + // 如果发送失败,将消息放回队列头部 + if (data) this.messageQueue.unshift(data) + break + } + } + } + } + } + + // 处理连接打开 + private handleOpen(event: Event): void { + console.log('WebSocket连接成功', event) + this.clearTimer('connectionTimer') // 清除连接超时定时器 + this.isConnected = true + this.isConnecting = false + this.isReconnecting = false + this.stopReconnect = false + this.reconnectAttempts = 0 // 重置重连次数 + this.startHeartbeat() + this.startPing() + this.flushMessageQueue() // 发送队列中的消息 + } + + // 处理收到的消息 + private handleMessage(event: MessageEvent): void { + console.log('收到WebSocket消息:', event) + this.resetHeartbeat() + this.messageHandler(event) + } + + // 处理连接关闭 + private handleClose(event: CloseEvent): void { + console.log( + `WebSocket断开: 代码=${event.code}, 原因=${event.reason}, 干净关闭=${event.wasClean}` + ) + + // 1000 是正常关闭代码 + const isNormalClose = event.code === 1000 + + this.isConnected = false + this.isConnecting = false + this.clearConnectionTimers() + this.ws = null + + if (!this.stopReconnect && !isNormalClose) { + this.reconnect() + } + } + + // 处理错误 - 增加详细错误信息 + private handleError(event: Event): void { + console.error('WebSocket连接错误:') + console.error('错误事件:', event) + console.error( + '当前连接状态:', + this.ws?.readyState ? this.getReadyStateText(this.ws.readyState) : '未初始化' + ) + + this.isConnected = false + this.isConnecting = false + + // 只有在未停止重连的情况下才尝试重连 + if (!this.stopReconnect) { + this.reconnect() + } + } + + private closeCurrentSocketForReconnect(): void { + this.clearConnectionTimers() + this.isConnected = false + this.isConnecting = false + + if (this.ws) { + this.ws.onopen = null + this.ws.onmessage = null + this.ws.onclose = null + this.ws.onerror = null + + if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) { + this.ws.close(1001, 'Reconnect') + } + + this.ws = null + } + } + + // 转换连接状态为文本描述 + private getReadyStateText(state: number): string { + switch (state) { + case WebSocket.CONNECTING: + return 'CONNECTING (0) - 正在连接' + case WebSocket.OPEN: + return 'OPEN (1) - 已连接' + case WebSocket.CLOSING: + return 'CLOSING (2) - 正在关闭' + case WebSocket.CLOSED: + return 'CLOSED (3) - 已关闭' + default: + return `未知状态 (${state})` + } + } + + // 开始心跳检测 + private startHeartbeat(): void { + this.clearTimer('detectionTimer') + this.clearTimer('timeoutTimer') + + this.detectionTimer = setTimeout(() => { + this.isConnected = this.ws?.readyState === WebSocket.OPEN + + if (!this.isConnected) { + console.warn('WebSocket心跳检测失败,尝试重连') + this.reconnect() + + this.timeoutTimer = setTimeout(() => { + console.warn('WebSocket重连超时') + this.close() + }, this.reconnectTimeout) + } + }, this.heartbeatInterval) + } + + // 重置心跳检测 + private resetHeartbeat(): void { + this.clearTimer('detectionTimer') + this.clearTimer('timeoutTimer') + this.startHeartbeat() + } + + // 开始发送ping消息 + private startPing(): void { + this.clearTimer('pingTimer') + + this.pingTimer = setInterval(() => { + if (this.ws?.readyState !== WebSocket.OPEN) { + console.warn('WebSocket未连接,停止发送ping') + this.clearTimer('pingTimer') + this.reconnect() + return + } + + try { + this.ws.send('ping') + console.log('发送ping消息') + } catch (error) { + console.error('发送ping消息失败:', error) + this.clearTimer('pingTimer') + this.reconnect() + } + }, this.pingInterval) + } + + // 重连 - 增加重连次数限制 + private reconnect(): void { + if (this.stopReconnect || this.isConnecting || this.reconnectInterval <= 0) { + return + } + + // 检查是否超过最大重连次数 + if (this.reconnectAttempts >= this.maxReconnectAttempts) { + console.error(`已达到最大重连次数(${this.maxReconnectAttempts}),停止重连`) + this.close(true) + return + } + + this.reconnectAttempts++ + this.isReconnecting = true + this.closeCurrentSocketForReconnect() + + const delay = this.calculateReconnectDelay() + console.log( + `将在${delay / 1000}秒后尝试重新连接(第${this.reconnectAttempts}/${this.maxReconnectAttempts}次)` + ) + + this.clearTimer('reconnectTimer') + this.reconnectTimer = setTimeout(() => { + console.log(`尝试重新连接WebSocket(第${this.reconnectAttempts}次)`) + this.connect(false) + }, delay) + } + + // 计算重连延迟 - 指数退避策略 + private calculateReconnectDelay(): number { + // 基础延迟 + 随机值,避免多个客户端同时重连 + const jitter = Math.random() * 1000 // 0-1秒的随机延迟 + const baseDelay = Math.min( + this.reconnectInterval * Math.pow(1.5, this.reconnectAttempts - 1), + this.reconnectInterval * 5 + ) + return baseDelay + jitter + } + + // 清除指定定时器 + private clearTimer( + timerName: + | 'detectionTimer' + | 'timeoutTimer' + | 'reconnectTimer' + | 'pingTimer' + | 'connectionTimer' + ): void { + if (this[timerName]) { + clearTimeout(this[timerName] as NodeJS.Timeout) + this[timerName] = null + } + } + + // 清除所有定时器 + private clearAllTimers(): void { + this.clearConnectionTimers() + this.clearTimer('reconnectTimer') + } + + private clearConnectionTimers(): void { + this.clearTimer('detectionTimer') + this.clearTimer('timeoutTimer') + this.clearTimer('pingTimer') + this.clearTimer('connectionTimer') + } + + // 获取当前连接状态 + get isWebSocketConnected(): boolean { + return this.isConnected + } + + // 获取当前连接状态文本 + get connectionStatusText(): string { + if (this.isConnecting) return '正在连接' + if (this.isConnected) return '已连接' + if (this.isReconnecting && this.reconnectAttempts > 0) + return `重连中(${this.reconnectAttempts}/${this.maxReconnectAttempts})` + return '已断开' + } + + // 销毁实例 + static destroyInstance(): void { + if (WebSocketClient.instance) { + WebSocketClient.instance.close() + WebSocketClient.instance = null + } + } +} diff --git a/web-admin/src/utils/sort-order.ts b/web-admin/src/utils/sort-order.ts new file mode 100644 index 00000000..9a50f455 --- /dev/null +++ b/web-admin/src/utils/sort-order.ts @@ -0,0 +1,26 @@ +/** + * 新增时默认排序号:当前列表中最大 sortOrder + 1;无任何数据时为 0。 + * 依赖列表接口按 sort_order 升序分页(最后一页含最大排序号)。 + */ +export async function fetchNextSortOrder( + fetchList: (params: { + page: number + pageSize: number + keyword?: string + isActive?: boolean | number | string | undefined + }) => Promise<{ list: { sortOrder?: number }[]; total: number }>, + options?: { pageSize?: number } +): Promise { + const pageSize = options?.pageSize ?? 100 + const first = await fetchList({ page: 1, pageSize }) + const total = first.total ?? 0 + if (total === 0) return 0 + const lastPage = Math.ceil(total / pageSize) + const res = lastPage <= 1 ? first : await fetchList({ page: lastPage, pageSize }) + const list = res.list ?? [] + const nums = list.map(r => { + const n = Number(r.sortOrder) + return Number.isFinite(n) ? n : 0 + }) + return (nums.length ? Math.max(...nums) : 0) + 1 +} diff --git a/web-admin/src/utils/storage/index.ts b/web-admin/src/utils/storage/index.ts new file mode 100644 index 00000000..a4366f07 --- /dev/null +++ b/web-admin/src/utils/storage/index.ts @@ -0,0 +1,7 @@ +/** + * 存储相关工具函数统一导出 + */ + +export * from './storage' +export * from './storage-config' +export * from './storage-key-manager' diff --git a/web-admin/src/utils/storage/storage-config.ts b/web-admin/src/utils/storage/storage-config.ts new file mode 100644 index 00000000..c53b4891 --- /dev/null +++ b/web-admin/src/utils/storage/storage-config.ts @@ -0,0 +1,125 @@ +/** + * 存储配置管理模块 + * + * 提供统一的本地存储配置和工具方法 + * + * ## 主要功能 + * + * - 版本化存储键管理,支持多版本数据隔离 + * - 存储键名生成和解析(带版本前缀) + * - 版本号提取和验证 + * - 存储键匹配的正则表达式生成 + * - 旧版本存储键兼容处理 + * - 升级和登出延迟配置 + * - 主题存储键配置 + * + * ## 使用场景 + * + * - Pinia Store 持久化存储 + * - 应用版本升级时的数据迁移 + * - 多版本数据清理 + * - 存储键的统一管理和规范 + * + * 存储键格式:sys-v{version}-{storeId} + * 例如:sys-v1.0.0-user, sys-v1.0.0-setting + * + * @module utils/storage/storage-config + * @author Art Design Pro Team + */ +export class StorageConfig { + /** 当前应用版本 */ + static readonly CURRENT_VERSION = __APP_VERSION__ + + /** 存储键前缀 */ + static readonly STORAGE_PREFIX = 'sys-v' + + /** 版本键名 */ + static readonly VERSION_KEY = 'sys-version' + + /** 主题键名(index.html中使用了,如果修改,需要同步修改) */ + static readonly THEME_KEY = 'sys-theme' + + /** 上次登录用户ID键名(用于判断是否为同一用户登录) */ + static readonly LAST_USER_ID_KEY = 'sys-last-user-id' + + /** 响应式布局切换时暂存桌面端菜单类型 */ + static readonly RESPONSIVE_MENU_TYPE_KEY = 'sys-responsive-menu-type' + + /** 跳过升级检查的版本 */ + static readonly SKIP_UPGRADE_VERSION = '1.0.0' + + /** 升级处理延迟时间(毫秒) */ + static readonly UPGRADE_DELAY = 1000 + + /** 登出延迟时间(毫秒) */ + static readonly LOGOUT_DELAY = 1000 + + /** + * 生成版本化的存储键名 + * @param storeId 存储ID + * @param version 版本号,默认使用当前版本 + */ + static generateStorageKey(storeId: string, version: string = this.CURRENT_VERSION): string { + return `${this.STORAGE_PREFIX}${version}-${storeId}` + } + + /** + * 生成旧版本的存储键名(不带分隔符) + * @param version 版本号,默认使用当前版本 + */ + static generateLegacyKey(version: string = this.CURRENT_VERSION): string { + return `${this.STORAGE_PREFIX}${version}` + } + + /** + * 创建存储键匹配的正则表达式 + * @param storeId 存储ID + */ + static createKeyPattern(storeId: string): RegExp { + return new RegExp(`^${this.STORAGE_PREFIX}[^-]+-${storeId}$`) + } + + /** + * 创建当前版本存储键匹配的正则表达式 + */ + static createCurrentVersionPattern(): RegExp { + return new RegExp(`^${this.STORAGE_PREFIX}${this.CURRENT_VERSION}-`) + } + + /** + * 创建任意版本存储键匹配的正则表达式 + */ + static createVersionPattern(): RegExp { + return new RegExp(`^${this.STORAGE_PREFIX}`) + } + + /** + * 检查是否为当前版本的键 + */ + static isCurrentVersionKey(key: string): boolean { + return key.startsWith(`${this.STORAGE_PREFIX}${this.CURRENT_VERSION}`) + } + + /** + * 检查是否为版本化的键 + */ + static isVersionedKey(key: string): boolean { + return key.startsWith(this.STORAGE_PREFIX) + } + + /** + * 从存储键中提取版本号 + */ + static extractVersionFromKey(key: string): string | null { + const match = key.match(new RegExp(`^${this.STORAGE_PREFIX}([^-]+)`)) + return match ? match[1] : null + } + + /** + * 从存储键中提取存储ID + */ + static extractStoreIdFromKey(key: string): string | null { + const match = key.match(new RegExp(`^${this.STORAGE_PREFIX}[^-]+-(.+)$`)) + return match ? match[1] : null + } +} diff --git a/web-admin/src/utils/storage/storage-key-manager.ts b/web-admin/src/utils/storage/storage-key-manager.ts new file mode 100644 index 00000000..ba14f65d --- /dev/null +++ b/web-admin/src/utils/storage/storage-key-manager.ts @@ -0,0 +1,97 @@ +/** + * 存储键名管理器模块 + * + * 提供智能的版本化存储键管理和数据迁移功能 + * + * ## 主要功能 + * + * - 自动生成当前版本的存储键名 + * - 检测当前版本数据是否存在 + * - 查找其他版本的同名存储数据 + * - 自动将旧版本数据迁移到当前版本 + * - 数据迁移日志记录 + * - 迁移失败的错误处理 + * + * ## 使用场景 + * + * - Pinia Store 持久化插件中获取存储键 + * - 应用版本升级时自动迁移用户数据 + * - 避免版本升级导致的数据丢失 + * - 实现平滑的版本过渡 + * + * ## 工作流程 + * + * 1. 优先使用当前版本的存储键 + * 2. 如果当前版本无数据,查找其他版本的同名数据 + * 3. 找到旧版本数据后自动迁移到当前版本 + * 4. 返回当前版本的存储键供使用 + * + * @module utils/storage/storage-key-manager + * @author Art Design Pro Team + */ +import { StorageConfig } from '@/utils/storage' + +/** + * 存储键名管理器 + * 负责处理版本化的存储键名生成和数据迁移 + */ +export class StorageKeyManager { + /** + * 获取当前版本的存储键名 + */ + private getCurrentVersionKey(storeId: string): string { + return StorageConfig.generateStorageKey(storeId) + } + + /** + * 检查当前版本的数据是否存在 + */ + private hasCurrentVersionData(key: string): boolean { + return localStorage.getItem(key) !== null + } + + /** + * 查找其他版本的同名存储键 + */ + private findExistingKey(storeId: string): string | null { + const storageKeys = Object.keys(localStorage) + const pattern = StorageConfig.createKeyPattern(storeId) + + return storageKeys.find((key) => pattern.test(key) && localStorage.getItem(key)) || null + } + + /** + * 将数据从旧版本迁移到当前版本 + */ + private migrateData(fromKey: string, toKey: string): void { + try { + const existingData = localStorage.getItem(fromKey) + if (existingData) { + localStorage.setItem(toKey, existingData) + console.info(`[Storage] 已迁移数据: ${fromKey} → ${toKey}`) + } + } catch (error) { + console.warn(`[Storage] 数据迁移失败: ${fromKey}`, error) + } + } + + /** + * 获取持久化存储的键名(支持自动数据迁移) + */ + getStorageKey(storeId: string): string { + const currentKey = this.getCurrentVersionKey(storeId) + + // 优先使用当前版本的数据 + if (this.hasCurrentVersionData(currentKey)) { + return currentKey + } + + // 查找并迁移其他版本的数据 + const existingKey = this.findExistingKey(storeId) + if (existingKey) { + this.migrateData(existingKey, currentKey) + } + + return currentKey + } +} diff --git a/web-admin/src/utils/storage/storage.ts b/web-admin/src/utils/storage/storage.ts new file mode 100644 index 00000000..67b9e9ed --- /dev/null +++ b/web-admin/src/utils/storage/storage.ts @@ -0,0 +1,250 @@ +/** + * 存储兼容性管理模块 + * + * 提供完整的本地存储兼容性检查和数据验证功能 + * + * 主要功能 + * + * - 多版本存储数据检测和验证 + * - 新旧存储格式兼容处理 + * - 存储数据完整性校验 + * - 存储异常自动恢复(清理+登出) + * - 登录状态验证 + * - 存储为空检测 + * - 版本号管理 + * + * ## 使用场景 + * + * - 应用启动时检查存储数据有效性 + * - 路由守卫中验证登录状态 + * - 版本升级时的数据兼容性检查 + * - 存储异常时的自动恢复 + * - 防止因存储数据损坏导致的系统异常 + * + * ## 工作流程 + * + * 1. 优先检查当前版本的存储数据 + * 2. 检查其他版本的存储数据 + * 3. 兼容旧格式的存储数据 + * 4. 验证数据完整性 + * 5. 异常时提示用户并执行登出 + * + * @module utils/storage/storage + * @author Art Design Pro Team + */ +import { router } from '@/router' +import { useUserStore } from '@/store/modules/user' +import { StorageConfig } from '@/utils/storage/storage-config' + +/** + * 存储兼容性管理器 + * 负责处理不同版本间的存储兼容性检查和数据验证 + */ +class StorageCompatibilityManager { + /** + * 获取系统版本号 + */ + getSystemVersion(): string | null { + return localStorage.getItem(StorageConfig.VERSION_KEY) + } + + /** + * 获取系统存储数据(兼容旧格式) + */ + getSystemStorage(): any { + const version = this.getSystemVersion() || StorageConfig.CURRENT_VERSION + const legacyKey = StorageConfig.generateLegacyKey(version) + const data = localStorage.getItem(legacyKey) + return data ? JSON.parse(data) : null + } + + /** + * 检查当前版本是否有存储数据 + */ + private hasCurrentVersionStorage(): boolean { + const storageKeys = Object.keys(localStorage) + const currentVersionPattern = StorageConfig.createCurrentVersionPattern() + + return storageKeys.some( + (key) => currentVersionPattern.test(key) && localStorage.getItem(key) !== null + ) + } + + /** + * 检查是否存在任何版本的存储数据 + */ + private hasAnyVersionStorage(): boolean { + const storageKeys = Object.keys(localStorage) + const versionPattern = StorageConfig.createVersionPattern() + + return storageKeys.some((key) => versionPattern.test(key) && localStorage.getItem(key) !== null) + } + + /** + * 获取旧格式的本地存储数据 + */ + private getLegacyStorageData(): Record { + try { + const systemStorage = this.getSystemStorage() + return systemStorage || {} + } catch (error) { + console.warn('[Storage] 解析旧格式存储数据失败:', error) + return {} + } + } + + /** + * 显示存储错误消息 + */ + private showStorageError(): void { + ElMessage({ + type: 'error', + offset: 40, + duration: 5000, + message: '系统检测到本地数据异常,请重新登录系统恢复使用!' + }) + } + + /** + * 执行系统登出 + */ + private performSystemLogout(): void { + setTimeout(() => { + try { + localStorage.clear() + useUserStore().logOut() + router.push({ name: 'Login' }) + console.info('[Storage] 已执行系统登出') + } catch (error) { + console.error('[Storage] 系统登出失败:', error) + } + }, StorageConfig.LOGOUT_DELAY) + } + + /** + * 处理存储异常 + */ + private handleStorageError(): void { + this.showStorageError() + this.performSystemLogout() + } + + /** + * 验证存储数据完整性 + * @param requireAuth 是否需要验证登录状态(默认 false) + */ + validateStorageData(requireAuth: boolean = false): boolean { + try { + // 优先检查新版本存储结构 + if (this.hasCurrentVersionStorage()) { + // console.debug('[Storage] 发现当前版本存储数据') + return true + } + + // 检查是否有任何版本的存储数据 + if (this.hasAnyVersionStorage()) { + // console.debug('[Storage] 发现其他版本存储数据,可能需要迁移') + return true + } + + // 检查旧版本存储结构 + const legacyData = this.getLegacyStorageData() + if (Object.keys(legacyData).length === 0) { + // 只有在需要验证登录状态时才执行登出操作 + if (requireAuth) { + console.warn('[Storage] 未发现任何存储数据,需要重新登录') + this.performSystemLogout() + return false + } + // 首次访问或访问静态路由,不需要登出 + // console.debug('[Storage] 未发现存储数据,首次访问或访问静态路由') + return true + } + + console.debug('[Storage] 发现旧版本存储数据') + return true + } catch (error) { + console.error('[Storage] 存储数据验证失败:', error) + // 只有在需要验证登录状态时才处理错误 + if (requireAuth) { + this.handleStorageError() + return false + } + return true + } + } + + /** + * 检查存储是否为空 + */ + isStorageEmpty(): boolean { + // 检查新版本存储结构 + if (this.hasCurrentVersionStorage()) { + return false + } + + // 检查是否有任何版本的存储数据 + if (this.hasAnyVersionStorage()) { + return false + } + + // 检查旧版本存储结构 + const legacyData = this.getLegacyStorageData() + return Object.keys(legacyData).length === 0 + } + + /** + * 检查存储兼容性 + * @param requireAuth 是否需要验证登录状态(默认 false) + */ + checkCompatibility(requireAuth: boolean = false): boolean { + try { + const isValid = this.validateStorageData(requireAuth) + const isEmpty = this.isStorageEmpty() + + if (isValid || isEmpty) { + // console.debug('[Storage] 存储兼容性检查通过') + return true + } + + console.warn('[Storage] 存储兼容性检查失败') + return false + } catch (error) { + console.error('[Storage] 兼容性检查异常:', error) + return false + } + } +} + +// 创建存储兼容性管理器实例 +const storageManager = new StorageCompatibilityManager() + +/** + * 获取系统存储数据 + */ +export function getSystemStorage(): any { + return storageManager.getSystemStorage() +} + +/** + * 获取系统版本号 + */ +export function getSysVersion(): string | null { + return storageManager.getSystemVersion() +} + +/** + * 验证本地存储数据 + * @param requireAuth 是否需要验证登录状态(默认 false) + */ +export function validateStorageData(requireAuth: boolean = false): boolean { + return storageManager.validateStorageData(requireAuth) +} + +/** + * 检查存储兼容性 + * @param requireAuth 是否需要验证登录状态(默认 false) + */ +export function checkStorageCompatibility(requireAuth: boolean = false): boolean { + return storageManager.checkCompatibility(requireAuth) +} diff --git a/web-admin/src/utils/sys/console.ts b/web-admin/src/utils/sys/console.ts new file mode 100644 index 00000000..d631087d --- /dev/null +++ b/web-admin/src/utils/sys/console.ts @@ -0,0 +1,13 @@ +// ANSI 转义码生成网站 https://patorjk.com/software/taag/#p=display&f=Big&t=ABB%0A +const asciiArt = ` +\x1b[32m欢迎使用 Art Design Pro! +\x1b[0m +\x1b[36m哇!你居然在用我的项目~ 好用的话别忘了去 GitHub 点个 ★Star 呀,你的支持就是我更新的超强动力!祝使用体验满分💯 +\x1b[0m +\x1b[33mGitHub: https://github.com/Daymychen/art-design-pro +\x1b[0m +\x1b[31m技术支持(QQ群): 1038930070,和开发者一起交流~ 群里有小伙伴实时答疑,遇到问题不用慌! +\x1b[0m +` + +console.log(asciiArt) diff --git a/web-admin/src/utils/sys/error-handle.ts b/web-admin/src/utils/sys/error-handle.ts new file mode 100644 index 00000000..bc966c9f --- /dev/null +++ b/web-admin/src/utils/sys/error-handle.ts @@ -0,0 +1,143 @@ +/** + * 全局错误处理模块 + * + * 提供统一的错误捕获和处理机制 + * + * ## 主要功能 + * + * - Vue 运行时错误捕获(组件错误、生命周期错误等) + * - 全局脚本错误捕获(语法错误、运行时错误等) + * - Promise 未捕获错误处理(unhandledrejection) + * - 静态资源加载错误监控(图片、脚本、样式等) + * - 错误日志记录和上报 + * - 统一的错误处理入口 + * + * ## 使用场景 + * - 应用启动时安装全局错误处理器 + * - 捕获和记录所有类型的错误 + * - 错误上报到监控平台 + * - 提升应用稳定性和可维护性 + * - 问题排查和调试 + * + * ## 错误类型 + * + * - VueError: Vue 组件相关错误 + * - ScriptError: JavaScript 脚本错误 + * - PromiseError: Promise 未捕获的 rejection + * - ResourceError: 静态资源加载失败 + * + * @module utils/sys/error-handle + * @author Art Design Pro Team + */ +import type { App } from 'vue' + +const IGNORABLE_SCRIPT_ERRORS = [ + 'ResizeObserver loop completed with undelivered notifications.', + 'ResizeObserver loop limit exceeded' +] + +function normalizeErrorMessage(message: Event | string): string { + if (typeof message === 'string') { + return message + } + + if ('message' in message && typeof message.message === 'string') { + return message.message + } + + return '' +} + +function isIgnorableScriptError(message: Event | string, source?: string): boolean { + const normalizedMessage = normalizeErrorMessage(message) + + if (!normalizedMessage) { + return false + } + + if (IGNORABLE_SCRIPT_ERRORS.some((item) => normalizedMessage.includes(item))) { + // 浏览器/扩展在布局抖动时常见的 ResizeObserver 噪声,不作为真实异常处理 + return true + } + + // 浏览器扩展注入脚本偶发的跨域 Script error 也没有排查价值 + if (normalizedMessage === 'Script error.' && source === '') { + return true + } + + return false +} + +/** + * Vue 运行时错误处理 + */ +export function vueErrorHandler(err: unknown, instance: any, info: string) { + console.error('[VueError]', err, info, instance) + // 这里可以上报到服务端,比如: + // reportError({ type: 'vue', err, info }) +} + +/** + * 全局脚本错误处理 + */ +export function scriptErrorHandler( + message: Event | string, + source?: string, + lineno?: number, + colno?: number, + error?: Error +): boolean { + if (isIgnorableScriptError(message, source)) { + return true + } + + console.error('[ScriptError]', { message, source, lineno, colno, error }) + // reportError({ type: 'script', message, source, lineno, colno, error }) + return true // 阻止默认控制台报错,可根据需求改 +} + +/** + * Promise 未捕获错误处理 + */ +export function registerPromiseErrorHandler() { + window.addEventListener('unhandledrejection', (event) => { + console.error('[PromiseError]', event.reason) + // reportError({ type: 'promise', reason: event.reason }) + }) +} + +/** + * 资源加载错误处理 (img, script, css...) + */ +export function registerResourceErrorHandler() { + window.addEventListener( + 'error', + (event: Event) => { + const target = event.target as HTMLElement + if ( + target && + (target.tagName === 'IMG' || target.tagName === 'SCRIPT' || target.tagName === 'LINK') + ) { + console.error('[ResourceError]', { + tagName: target.tagName, + src: + (target as HTMLImageElement).src || + (target as HTMLScriptElement).src || + (target as HTMLLinkElement).href + }) + // reportError({ type: 'resource', target }) + } + }, + true // 捕获阶段才能监听到资源错误 + ) +} + +/** + * 安装统一错误处理 + */ +export function setupErrorHandle(app: App) { + app.config.errorHandler = vueErrorHandler + window.onerror = scriptErrorHandler + registerPromiseErrorHandler() + registerResourceErrorHandler() +} diff --git a/web-admin/src/utils/sys/index.ts b/web-admin/src/utils/sys/index.ts new file mode 100644 index 00000000..a2e0729d --- /dev/null +++ b/web-admin/src/utils/sys/index.ts @@ -0,0 +1,6 @@ +/** + * 系统管理相关工具函数统一导出 + */ + +export * from './upgrade' +export { default as mittBus } from './mittBus' diff --git a/web-admin/src/utils/sys/mittBus.ts b/web-admin/src/utils/sys/mittBus.ts new file mode 100644 index 00000000..22f0108c --- /dev/null +++ b/web-admin/src/utils/sys/mittBus.ts @@ -0,0 +1,63 @@ +/** + * 全局事件总线模块 + * + * 基于 mitt 库实现的类型安全的事件总线 + * + * ## 主要功能 + * + * - 跨组件通信(发布/订阅模式) + * - 类型安全的事件定义和调用 + * - 全局事件管理(烟花效果、设置面板、搜索对话框等) + * - 解耦组件间的直接依赖 + * + * ## 使用场景 + * + * - 跨层级组件通信 + * - 全局功能触发(设置、搜索、聊天、锁屏等) + * - 特效触发(烟花效果) + * - 避免 props 层层传递 + * + * ## 用法示例 + * + * ```typescript + * // 订阅事件 + * mittBus.on('openSetting', () => { ... }) + * + * // 发布事件 + * mittBus.emit('openSetting') + * + * // 带参数的事件 + * mittBus.emit('triggerFireworks', 'image-url') + * ``` + * + * ## 已定义的事件 + * + * - triggerFireworks: 触发烟花效果(可选图片URL) + * - openSetting: 打开设置面板 + * - openSearchDialog: 打开搜索对话框 + * - openChat: 打开聊天窗口 + * - openLockScreen: 打开锁屏 + * + * @module utils/sys/mittBus + * @author Art Design Pro Team + */ +import mitt, { type Emitter } from 'mitt' + +// 定义事件类型映射 +type Events = { + // 烟花效果事件 - 可选的图片URL参数 + triggerFireworks: string | undefined + // 打开设置面板事件 - 无参数 + openSetting: void + // 打开搜索对话框事件 - 无参数 + openSearchDialog: void + // 打开聊天窗口事件 - 无参数 + openChat: void + // 打开锁屏事件 - 无参数 + openLockScreen: void +} + +// 创建类型安全的事件总线实例 +const mittBus: Emitter = mitt() + +export default mittBus diff --git a/web-admin/src/utils/sys/upgrade.ts b/web-admin/src/utils/sys/upgrade.ts new file mode 100644 index 00000000..1419d7cc --- /dev/null +++ b/web-admin/src/utils/sys/upgrade.ts @@ -0,0 +1,279 @@ +/** + * 系统版本升级管理模块 + * + * 提供完整的应用版本升级检测和处理功能 + * + * ## 主要功能 + * + * - 版本号比较和升级检测 + * - 首次访问识别和处理 + * - 旧版本数据自动清理 + * - 升级日志展示和通知 + * - 强制重新登录控制(根据升级日志配置) + * - 版本号规范化处理 + * - 旧存储结构迁移和清理 + * - 升级流程延迟执行(确保应用完全加载) + * + * @module utils/sys/upgrade + * @author Art Design Pro Team + */ +import { ElNotification } from 'element-plus' +import { useUserStore } from '@/store/modules/user' +import { StorageConfig } from '@/utils/storage/storage-config' +import { fetchGetLatestUpgradeLog } from '@/api/system' + +interface UpgradeLog { + version: string + title: string + date: string + detail?: string[] + requireReLogin?: boolean + remark?: string +} + +/** + * 版本管理器 + * 负责处理版本比较、升级检测和数据清理 + */ +class VersionManager { + /** + * 规范化版本号字符串,移除前缀 'v' + */ + private normalizeVersion(version: string): string { + return version.replace(/^v/, '') + } + + /** + * 获取存储的版本号 + */ + private getStoredVersion(): string | null { + return localStorage.getItem(StorageConfig.VERSION_KEY) + } + + /** + * 设置版本号到存储 + */ + private setStoredVersion(version: string): void { + localStorage.setItem(StorageConfig.VERSION_KEY, version) + } + + /** + * 检查是否应该跳过升级处理 + */ + private shouldSkipUpgrade(): boolean { + return StorageConfig.CURRENT_VERSION === StorageConfig.SKIP_UPGRADE_VERSION + } + + /** + * 检查是否为首次访问 + */ + private isFirstVisit(storedVersion: string | null): boolean { + return !storedVersion + } + + /** + * 检查版本是否相同 + */ + private isSameVersion(storedVersion: string): boolean { + return storedVersion === StorageConfig.CURRENT_VERSION + } + + /** + * 查找旧的存储结构 + */ + private findLegacyStorage(): { oldSysKey: string | null; oldVersionKeys: string[] } { + const storageKeys = Object.keys(localStorage) + const currentVersionPrefix = StorageConfig.generateStorageKey('').slice(0, -1) // 移除末尾的 '-' + + // 查找旧的单一存储结构 + const oldSysKey = + storageKeys.find( + (key) => + StorageConfig.isVersionedKey(key) && key !== currentVersionPrefix && !key.includes('-') + ) || null + + // 查找旧版本的分离存储键 + const oldVersionKeys = storageKeys.filter( + (key) => + StorageConfig.isVersionedKey(key) && + !StorageConfig.isCurrentVersionKey(key) && + key.includes('-') + ) + + return { oldSysKey, oldVersionKeys } + } + + /** + * 检查是否需要重新登录 + */ + private shouldRequireReLogin(storedVersion: string, latestLog: UpgradeLog | null): boolean { + if (!latestLog) return false + + const normalizedCurrent = this.normalizeVersion(StorageConfig.CURRENT_VERSION) + const normalizedStored = this.normalizeVersion(storedVersion) + const itemVersion = this.normalizeVersion(latestLog.version) + + return ( + latestLog.requireReLogin && + itemVersion > normalizedStored && + itemVersion <= normalizedCurrent + ) + } + + /** + * 构建升级通知消息 + */ + private buildUpgradeMessage(latestLog: UpgradeLog): string { + const messageParts = [ + `

`, + `系统已升级到 ${StorageConfig.CURRENT_VERSION} 版本,此次更新带来了以下改进:`, + `

`, + latestLog.title + ] + + if (latestLog.requireReLogin) { + messageParts.push( + `

升级完成,请重新登录后继续使用。

` + ) + } + + return messageParts.join('') + } + + /** + * 显示升级通知 + */ + private showUpgradeNotification(message: string): void { + ElNotification({ + title: '系统升级公告', + message, + duration: 0, + type: 'success', + dangerouslyUseHTMLString: true + }) + } + + /** + * 清理旧版本数据 + */ + private cleanupLegacyData(oldSysKey: string | null, oldVersionKeys: string[]): void { + // 清理旧的单一存储结构 + if (oldSysKey) { + localStorage.removeItem(oldSysKey) + console.info(`[Upgrade] 已清理旧存储: ${oldSysKey}`) + } + + // 清理旧版本的分离存储 + oldVersionKeys.forEach((key) => { + localStorage.removeItem(key) + console.info(`[Upgrade] 已清理旧存储: ${key}`) + }) + } + + /** + * 执行升级后的登出操作 + */ + private performLogout(): void { + try { + useUserStore().logOut() + console.info('[Upgrade] 已执行升级后登出') + } catch (error) { + console.error('[Upgrade] 升级后登出失败:', error) + } + } + + /** + * 执行升级流程 + */ + private async executeUpgrade( + storedVersion: string, + legacyStorage: ReturnType, + latestLog: UpgradeLog | null + ): Promise { + try { + if (!latestLog) { + console.warn('[Upgrade] 升级日志为空') + return + } + + const requireReLogin = this.shouldRequireReLogin(storedVersion, latestLog) + const message = this.buildUpgradeMessage(latestLog) + + // 显示升级通知 + this.showUpgradeNotification(message) + + // 更新版本号 + this.setStoredVersion(StorageConfig.CURRENT_VERSION) + + // 清理旧数据 + this.cleanupLegacyData(legacyStorage.oldSysKey, legacyStorage.oldVersionKeys) + + // 执行登出(如果需要) + if (requireReLogin) { + this.performLogout() + } + + console.info(`[Upgrade] 升级完成: ${storedVersion} → ${StorageConfig.CURRENT_VERSION}`) + } catch (error) { + console.error('[Upgrade] 系统升级处理失败:', error) + } + } + + /** + * 系统升级处理主流程 + */ + async processUpgrade(): Promise { + // 跳过特定版本 + if (this.shouldSkipUpgrade()) { + console.debug('[Upgrade] 跳过版本升级检查') + return + } + + const storedVersion = this.getStoredVersion() + + // 首次访问处理 + if (this.isFirstVisit(storedVersion)) { + this.setStoredVersion(StorageConfig.CURRENT_VERSION) + // console.info('[Upgrade] 首次访问,已设置当前版本') + return + } + + // 版本相同,无需升级 + if (this.isSameVersion(storedVersion!)) { + // console.debug('[Upgrade] 版本相同,无需升级') + return + } + + // 检查是否有需要升级的旧数据 + const legacyStorage = this.findLegacyStorage() + if (!legacyStorage.oldSysKey && legacyStorage.oldVersionKeys.length === 0) { + this.setStoredVersion(StorageConfig.CURRENT_VERSION) + console.info('[Upgrade] 无旧数据,已更新版本号') + return + } + + // 获取最新升级日志 + let latestLog: UpgradeLog | null = null + try { + const { data } = await fetchGetLatestUpgradeLog() + latestLog = data + } catch (error) { + console.error('[Upgrade] 获取升级日志失败:', error) + } + + // 延迟执行升级流程,确保应用已完全加载 + setTimeout(() => { + this.executeUpgrade(storedVersion!, legacyStorage, latestLog) + }, StorageConfig.UPGRADE_DELAY) + } +} + +// 创建版本管理器实例 +const versionManager = new VersionManager() + +/** + * 系统升级处理入口函数 + */ +export async function systemUpgrade(): Promise { + await versionManager.processUpgrade() +} diff --git a/web-admin/src/utils/table/tableCache.ts b/web-admin/src/utils/table/tableCache.ts new file mode 100644 index 00000000..045a7ce9 --- /dev/null +++ b/web-admin/src/utils/table/tableCache.ts @@ -0,0 +1,266 @@ +/** + * 表格缓存管理模块 + * + * 提供高性能的表格数据缓存机制 + * + * ## 主要功能 + * + * - 基于参数的智能缓存键生成(使用 ohash) + * - LRU(最近最少使用)缓存淘汰策略 + * - 缓存过期时间管理 + * - 缓存大小限制和自动清理 + * - 基于标签的缓存分组管理 + * - 多种缓存失效策略(清空所有、清空当前、清空分页等) + * - 缓存访问统计和命中率分析 + * - 缓存大小估算 + * + * ## 使用场景 + * + * - 表格数据的分页缓存 + * - 减少重复的 API 请求 + * - 提升表格切换和返回的响应速度 + * - 搜索条件变化时的智能缓存管理 + * - 数据更新后的缓存失效处理 + * + * ## 缓存策略 + * + * - CLEAR_ALL: 清空所有缓存(适用于全局数据更新) + * - CLEAR_CURRENT: 仅清空当前查询条件的缓存(适用于单条数据更新) + * - CLEAR_PAGINATION: 清空所有分页缓存但保留不同搜索条件(适用于批量操作) + * - KEEP_ALL: 不清除缓存(适用于只读操作) + * + * @module utils/table/tableCache + * @author Art Design Pro Team + */ +import { hash } from 'ohash' + +// 缓存失效策略枚举 +export enum CacheInvalidationStrategy { + /** 清空所有缓存 */ + CLEAR_ALL = 'clear_all', + /** 仅清空当前查询条件的缓存 */ + CLEAR_CURRENT = 'clear_current', + /** 清空所有分页缓存(保留不同搜索条件的缓存) */ + CLEAR_PAGINATION = 'clear_pagination', + /** 不清除缓存 */ + KEEP_ALL = 'keep_all' +} + +// 通用 API 响应接口(兼容不同的后端响应格式) +export interface ApiResponse { + records?: T[] + data?: T[] + total?: number + current?: number + size?: number + [key: string]: unknown +} + +// 缓存存储接口 +export interface CacheItem { + data: T[] + response: ApiResponse + timestamp: number + params: string + // 缓存标签,用于分组管理 + tags: Set + // 访问次数(用于 LRU 算法) + accessCount: number + // 最后访问时间 + lastAccessTime: number +} + +// 增强的缓存管理类 +export class TableCache { + private cache = new Map>() + private cacheTime: number + private maxSize: number + private enableLog: boolean + + constructor(cacheTime = 5 * 60 * 1000, maxSize = 50, enableLog = false) { + // 默认5分钟,最多50条缓存 + this.cacheTime = cacheTime + this.maxSize = maxSize + this.enableLog = enableLog + } + + // 内部日志工具 + private log(message: string, ...args: any[]) { + if (this.enableLog) { + console.log(`[TableCache] ${message}`, ...args) + } + } + + // 生成稳定的缓存键 + private generateKey(params: unknown): string { + return hash(params) + } + + // 🔧 优化:增强类型安全性 + private generateTags(params: Record): Set { + const tags = new Set() + + // 添加搜索条件标签 + const searchKeys = Object.keys(params).filter( + (key) => + !['current', 'size', 'total'].includes(key) && + params[key] !== undefined && + params[key] !== '' && + params[key] !== null + ) + + if (searchKeys.length > 0) { + const searchTag = searchKeys.map((key) => `${key}:${String(params[key])}`).join('|') + tags.add(`search:${searchTag}`) + } else { + tags.add('search:default') + } + + // 添加分页标签 + tags.add(`pagination:${params.size || 10}`) + // 添加通用分页标签,用于清理所有分页缓存 + tags.add('pagination') + + return tags + } + + // 🔧 优化:LRU 缓存清理 + private evictLRU(): void { + if (this.cache.size <= this.maxSize) return + + // 找到最少使用的缓存项 + let lruKey = '' + let minAccessCount = Infinity + let oldestTime = Infinity + + for (const [key, item] of this.cache.entries()) { + if ( + item.accessCount < minAccessCount || + (item.accessCount === minAccessCount && item.lastAccessTime < oldestTime) + ) { + lruKey = key + minAccessCount = item.accessCount + oldestTime = item.lastAccessTime + } + } + + if (lruKey) { + this.cache.delete(lruKey) + this.log(`LRU 清理缓存: ${lruKey}`) + } + } + + // 设置缓存 + set(params: unknown, data: T[], response: ApiResponse): void { + const key = this.generateKey(params) + const tags = this.generateTags(params as Record) + const now = Date.now() + + // 检查是否需要清理 + this.evictLRU() + + this.cache.set(key, { + data, + response, + timestamp: now, + params: key, + tags, + accessCount: 1, + lastAccessTime: now + }) + } + + // 获取缓存 + get(params: unknown): CacheItem | null { + const key = this.generateKey(params) + const item = this.cache.get(key) + + if (!item) return null + + // 检查是否过期 + if (Date.now() - item.timestamp > this.cacheTime) { + this.cache.delete(key) + return null + } + + // 更新访问统计 + item.accessCount++ + item.lastAccessTime = Date.now() + + return item + } + + // 根据标签清除缓存 + clearByTags(tags: string[]): number { + let clearedCount = 0 + + for (const [key, item] of this.cache.entries()) { + // 检查是否包含任意一个标签 + const hasMatchingTag = tags.some((tag) => + Array.from(item.tags).some((itemTag) => itemTag.includes(tag)) + ) + + if (hasMatchingTag) { + this.cache.delete(key) + clearedCount++ + } + } + + return clearedCount + } + + // 清除当前搜索条件的缓存 + clearCurrentSearch(params: unknown): number { + const key = this.generateKey(params) + const deleted = this.cache.delete(key) + return deleted ? 1 : 0 + } + + // 清除分页缓存 + clearPagination(): number { + return this.clearByTags(['pagination']) + } + + // 清空所有缓存 + clear(): void { + this.cache.clear() + } + + // 获取缓存统计信息 + getStats(): { total: number; size: string; hitRate: string } { + const total = this.cache.size + let totalSize = 0 + let totalAccess = 0 + + for (const item of this.cache.values()) { + // 粗略估算大小(JSON字符串长度) + totalSize += JSON.stringify(item.data).length + totalAccess += item.accessCount + } + + // 转换为人类可读的大小 + const sizeInKB = (totalSize / 1024).toFixed(2) + const avgHits = total > 0 ? (totalAccess / total).toFixed(1) : '0' + + return { + total, + size: `${sizeInKB}KB`, + hitRate: `${avgHits} avg hits` + } + } + + // 清理过期缓存 + cleanupExpired(): number { + let cleanedCount = 0 + const now = Date.now() + + for (const [key, item] of this.cache.entries()) { + if (now - item.timestamp > this.cacheTime) { + this.cache.delete(key) + cleanedCount++ + } + } + + return cleanedCount + } +} diff --git a/web-admin/src/utils/table/tableConfig.ts b/web-admin/src/utils/table/tableConfig.ts new file mode 100644 index 00000000..e464c891 --- /dev/null +++ b/web-admin/src/utils/table/tableConfig.ts @@ -0,0 +1,55 @@ +/** + * 表格全局配置模块 + * + * 提供表格与后端接口的字段映射配置 + * + * ## 主要功能 + * + * - 响应数据字段自动识别和映射 + * - 支持多种常见的后端响应格式 + * - 请求参数字段映射配置 + * - 可扩展的字段配置机制 + * + * ## 使用场景 + * + * - 适配不同后端的分页接口格式 + * - 统一前端表格组件的数据处理 + * - 减少重复的数据转换代码 + * - 支持多个后端服务的接口对接 + * + * ## 配置说明 + * + * - recordFields: 列表数据字段名(按优先级顺序查找) + * - totalFields: 总条数字段名 + * - currentFields: 当前页码字段名 + * - sizeFields: 每页大小字段名 + * - paginationKey: 前端发送请求时使用的分页参数名 + * + * ## 扩展方式 + * + * 如果后端使用其他字段名,可以在对应数组中添加新的字段名 + * 例如:recordFields: ['list', 'data', 'records', 'items', 'yourCustomField'] + * + * @module utils/table/tableConfig + * @author Art Design Pro Team + */ +export const tableConfig = { + // 响应数据字段映射配置,系统会从接口返回数据中按顺序查找这些字段 + // 列表数据 + recordFields: ['list', 'data', 'records', 'items', 'result', 'rows'], + // 总条数 + totalFields: ['total', 'count'], + // 当前页码 + currentFields: ['current', 'page', 'pageNum'], + // 每页大小 + sizeFields: ['size', 'pageSize', 'limit'], + + // 请求参数映射配置,前端发送请求时使用的分页参数名 + // useTable 组合式函数传递分页参数的时候 用 current 跟 size + paginationKey: { + // 当前页码 + current: 'current', + // 每页大小 + size: 'size' + } +} diff --git a/web-admin/src/utils/table/tableUtils.ts b/web-admin/src/utils/table/tableUtils.ts new file mode 100644 index 00000000..3ca9db1a --- /dev/null +++ b/web-admin/src/utils/table/tableUtils.ts @@ -0,0 +1,297 @@ +/** + * 表格工具函数模块 + * + * 提供表格数据处理和请求管理的核心工具函数 + * + * ## 主要功能 + * + * - 多格式 API 响应自动适配和标准化 + * - 表格数据提取和转换 + * - 分页信息自动更新和校验 + * - 智能防抖函数(支持取消和立即执行) + * - 统一的错误处理机制 + * - 嵌套数据结构解析 + * + * ## 使用场景 + * + * - useTable 组合式函数的底层工具 + * - 适配各种后端接口响应格式 + * - 表格数据的标准化处理 + * - 请求防抖和性能优化 + * - 错误统一处理和日志记录 + * + * ## 支持的响应格式 + * + * 1. 直接数组: [item1, item2, ...] + * 2. 标准对象: { records: [], total: 100 } + * 3. 嵌套data: { data: { list: [], total: 100 } } + * 4. 多种字段名: list/data/records/items/result/rows + * + * ## 核心功能 + * + * - defaultResponseAdapter: 智能识别和转换响应格式 + * - extractTableData: 提取表格数据数组 + * - updatePaginationFromResponse: 更新分页信息 + * - createSmartDebounce: 创建可控的防抖函数 + * - createErrorHandler: 生成错误处理器 + * + * @module utils/table/tableUtils + * @author Art Design Pro Team + */ + +import type { ApiResponse } from './tableCache' +import { tableConfig } from './tableConfig' + +// 请求参数基础接口,扩展分页参数 +export interface BaseRequestParams extends Api.Common.PaginationParams { + [key: string]: unknown +} + +// 错误处理接口 +export interface TableError { + code: string + message: string + details?: unknown +} + +// 辅助函数:从对象中提取记录数组 +function extractRecords(obj: Record, fields: string[]): T[] { + for (const field of fields) { + if (field in obj && Array.isArray(obj[field])) { + return obj[field] as T[] + } + } + return [] +} + +// 辅助函数:从对象中提取总数 +function extractTotal(obj: Record, records: unknown[], fields: string[]): number { + for (const field of fields) { + if (field in obj && typeof obj[field] === 'number') { + return obj[field] as number + } + } + return records.length +} + +// 辅助函数:提取分页参数 +function extractPagination( + obj: Record, + data?: Record +): Pick, 'current' | 'size'> | undefined { + const result: Partial, 'current' | 'size'>> = {} + const sources = [obj, data ?? {}] + + const currentFields = tableConfig.currentFields + for (const src of sources) { + for (const field of currentFields) { + if (field in src && typeof src[field] === 'number') { + result.current = src[field] as number + break + } + } + if (result.current !== undefined) break + } + + const sizeFields = tableConfig.sizeFields + for (const src of sources) { + for (const field of sizeFields) { + if (field in src && typeof src[field] === 'number') { + result.size = src[field] as number + break + } + } + if (result.size !== undefined) break + } + + if (result.current === undefined && result.size === undefined) return undefined + return result +} + +/** + * 默认响应适配器 - 支持多种常见的API响应格式 + */ +export const defaultResponseAdapter = (response: unknown): ApiResponse => { + // 定义支持的字段 + const recordFields = tableConfig.recordFields + + if (!response) { + return { records: [], total: 0 } + } + + if (Array.isArray(response)) { + return { records: response, total: response.length } + } + + if (typeof response !== 'object') { + console.warn( + '[tableUtils] 无法识别的响应格式,支持的格式包括: 数组、包含' + + recordFields.join('/') + + '字段的对象、嵌套data对象。当前格式:', + response + ) + return { records: [], total: 0 } + } + + const res = response as Record + let records: T[] = [] + let total = 0 + let pagination: Pick, 'current' | 'size'> | undefined + + // 处理标准格式或直接列表 + records = extractRecords(res, recordFields) + total = extractTotal(res, records, tableConfig.totalFields) + pagination = extractPagination(res) + + // 如果没有找到,检查嵌套data + if (records.length === 0 && 'data' in res && typeof res.data === 'object') { + const data = res.data as Record + records = extractRecords(data, ['list', 'records', 'items']) + total = extractTotal(data, records, tableConfig.totalFields) + pagination = extractPagination(res, data) + + if (Array.isArray(res.data)) { + records = res.data as T[] + total = records.length + } + } + + if (!recordFields.some((field) => field in res) && records.length === 0) { + console.warn('[tableUtils] 无法识别的响应格式') + console.warn('支持的字段包括: ' + recordFields.join('、'), response) + console.warn('扩展字段请到 utils/table/tableConfig 文件配置') + } + + const result: ApiResponse = { records, total } + if (pagination) { + Object.assign(result, pagination) + } + return result +} + +/** + * 从标准化的API响应中提取表格数据 + */ +export const extractTableData = (response: ApiResponse): T[] => { + const data = response.records || response.data || [] + return Array.isArray(data) ? data : [] +} + +/** + * 根据API响应更新分页信息 + */ +export const updatePaginationFromResponse = ( + pagination: Api.Common.PaginationParams, + response: ApiResponse +): void => { + pagination.total = response.total ?? pagination.total ?? 0 + + if (response.current !== undefined) { + pagination.current = response.current + } + + const maxPage = Math.max(1, Math.ceil(pagination.total / (pagination.size || 1))) + if (pagination.current > maxPage) { + pagination.current = maxPage + } +} + +/** + * 创建智能防抖函数 - 支持取消和立即执行 + */ +export const createSmartDebounce = Promise>( + fn: T, + delay: number +): T & { cancel: () => void; flush: () => Promise } => { + let timeoutId: NodeJS.Timeout | null = null + let lastArgs: Parameters | null = null + let lastResolve: ((value: any) => void) | null = null + let lastReject: ((reason: any) => void) | null = null + + const debouncedFn = (...args: Parameters): Promise => { + return new Promise((resolve, reject) => { + if (timeoutId) clearTimeout(timeoutId) + lastArgs = args + lastResolve = resolve + lastReject = reject + timeoutId = setTimeout(async () => { + try { + const result = await fn(...args) + resolve(result) + } catch (error) { + reject(error) + } finally { + timeoutId = null + lastArgs = null + lastResolve = null + lastReject = null + } + }, delay) + }) + } + + debouncedFn.cancel = () => { + if (timeoutId) clearTimeout(timeoutId) + timeoutId = null + lastArgs = null + lastResolve = null + lastReject = null + } + + debouncedFn.flush = async () => { + if (timeoutId && lastArgs && lastResolve && lastReject) { + clearTimeout(timeoutId) + timeoutId = null + const args = lastArgs + const resolve = lastResolve + const reject = lastReject + lastArgs = null + lastResolve = null + lastReject = null + try { + const result = await fn(...args) + resolve(result) + return result + } catch (error) { + reject(error) + throw error + } + } + return Promise.resolve() + } + + return debouncedFn as any +} + +/** + * 生成错误处理函数 + */ +export const createErrorHandler = ( + onError?: (error: TableError) => void, + enableLog: boolean = false +) => { + const logger = { + error: (message: string, ...args: any[]) => { + if (enableLog) console.error(`[useTable] ${message}`, ...args) + } + } + + return (err: unknown, context: string): TableError => { + const tableError: TableError = { + code: 'UNKNOWN_ERROR', + message: '未知错误', + details: err + } + + if (err instanceof Error) { + tableError.message = err.message + tableError.code = err.name + } else if (typeof err === 'string') { + tableError.message = err + } + + logger.error(`${context}:`, err) + onError?.(tableError) + return tableError + } +} diff --git a/web-admin/src/utils/tree-path.ts b/web-admin/src/utils/tree-path.ts new file mode 100644 index 00000000..9599c553 --- /dev/null +++ b/web-admin/src/utils/tree-path.ts @@ -0,0 +1,103 @@ +/** + * 树形业务数据:全路径展示文案(与 Fresh Mint 规范一致) + * 扁平列表沿 parentId 回溯,或树结构 DFS 预计算 id → 路径 + */ + +export const DEFAULT_TREE_PATH_SEPARATOR = ' / ' + +export type TreePathFlatNode = Record + +/** 从扁平列表(含 parentId / parent_id、name)解析「根 → 当前」路径文案 */ +export function buildTreePathLabelFromFlat( + nodeId: string | null | undefined, + flatList: TreePathFlatNode[] | null | undefined, + separator: string = DEFAULT_TREE_PATH_SEPARATOR +): string { + const cid = String(nodeId ?? '').trim() + if (!cid) return '' + const byId = new Map() + for (const c of flatList || []) { + const id = String(c?.id ?? '').trim() + if (id) byId.set(id, c) + } + const names: string[] = [] + let cur: string | null = cid + const seen = new Set() + while (cur && byId.has(cur) && !seen.has(cur)) { + seen.add(cur) + const cat: TreePathFlatNode = byId.get(cur)! + const nm = String(cat?.name ?? '').trim() + if (nm) names.unshift(nm) + const pid: string = String(cat?.parentId ?? cat?.parent_id ?? '').trim() + cur = pid || null + } + return names.length ? names.join(separator) : '' +} + +/** 从树形根列表预计算 id → 全路径(用于列表/卡片等高频展示) */ +export function buildPathLabelMapFromTreeRoots( + roots: unknown[] | null | undefined, + options?: { + idKey?: string + nameKey?: string + childrenKey?: string + separator?: string + } +): Map { + const idKey = options?.idKey ?? 'id' + const nameKey = options?.nameKey ?? 'name' + const childrenKey = options?.childrenKey ?? 'children' + const sep = options?.separator ?? DEFAULT_TREE_PATH_SEPARATOR + const map = new Map() + const walk = (nodes: unknown[], pathNames: string[]) => { + for (const raw of nodes || []) { + const n = raw as Record + const id = n?.[idKey] != null ? String(n[idKey]).trim() : '' + const curName = String(n?.[nameKey] ?? '').trim() + const nextPath = curName ? [...pathNames, curName] : [...pathNames] + if (id) map.set(id, nextPath.join(sep)) + const ch = n?.[childrenKey] + if (Array.isArray(ch) && ch.length) walk(ch as unknown[], nextPath) + } + } + walk(roots || [], []) + return map +} + +/** 优先全路径;无法解析时用接口给的 fallback(多为末级名);皆无则占位符 */ +export function resolveTreePathDisplay( + nodeId: unknown, + flatList: TreePathFlatNode[] | null | undefined, + fallbackName?: unknown, + separator: string = DEFAULT_TREE_PATH_SEPARATOR, + emptyPlaceholder = '—' +): string { + const path = buildTreePathLabelFromFlat( + String(nodeId ?? '').trim() || undefined, + flatList, + separator + ) + if (path) return path + const fb = String(fallbackName ?? '').trim() + if (fb) return fb + return emptyPlaceholder +} + +/** `el-tree-select` 的 data 节点上按 value 查找本级 label(扁平列表缺父链时的回退) */ +export function findTreeSelectShortLabel( + nodes: Array<{ value?: unknown; label?: unknown; children?: unknown[] }> | null | undefined, + nodeId: string | null | undefined +): string { + const id = String(nodeId ?? '').trim() + if (!id) return '' + const walk = (arr: typeof nodes): string => { + for (const n of arr || []) { + if (!n) continue + if (String(n.value ?? '') === id) return String(n.label ?? '').trim() + const hit = walk(n.children as typeof nodes) + if (hit) return hit + } + return '' + } + return walk(nodes) +} diff --git a/web-admin/src/utils/ui/animation.ts b/web-admin/src/utils/ui/animation.ts new file mode 100644 index 00000000..5efd02a8 --- /dev/null +++ b/web-admin/src/utils/ui/animation.ts @@ -0,0 +1,80 @@ +/** + * 主题动画工具模块 + * + * 提供主题切换的视觉动画效果 + * + * ## 主要功能 + * + * - 基于鼠标点击位置的圆形扩散动画 + * - View Transition API 支持(现代浏览器) + * - 降级处理(不支持动画的浏览器) + * - 暗黑主题切换过渡效果 + * - 页面刷新时的主题过渡优化 + * + * ## 使用场景 + * + * - 明暗主题切换 + * - 提升用户体验的视觉反馈 + * - 页面刷新时的平滑过渡 + * + * ## 技术实现 + * + * - 使用 CSS 变量存储点击位置和半径 + * - 利用 View Transition API 实现流畅动画 + * - 通过 CSS class 控制过渡效果 + * - 自动计算最大扩散半径 + * + * @module utils/theme/animation + * @author Art Design Pro Team + */ +import { useCommon } from '@/hooks/core/useCommon' +import { useTheme } from '@/hooks/core/useTheme' +import { SystemThemeEnum } from '@/enums/appEnum' +import { useSettingStore } from '@/store/modules/setting' +const { LIGHT, DARK } = SystemThemeEnum + +/** + * 主题切换动画 + * @param e 鼠标点击事件 + */ +export const themeAnimation = (e: any) => { + const x = e.clientX + const y = e.clientY + // 计算鼠标点击位置距离视窗的最大圆半径 + const endRadius = Math.hypot(Math.max(x, innerWidth - x), Math.max(y, innerHeight - y)) + + // 设置CSS变量 + document.documentElement.style.setProperty('--x', x + 'px') + document.documentElement.style.setProperty('--y', y + 'px') + document.documentElement.style.setProperty('--r', endRadius + 'px') + + if (document.startViewTransition) { + document.startViewTransition(() => toggleTheme()) + } else { + toggleTheme() + } +} + +/** + * 切换主题 + */ +const toggleTheme = () => { + useTheme().switchThemeStyles(useSettingStore().systemThemeType === LIGHT ? DARK : LIGHT) + useCommon().refresh() +} + +/** + * 切换主题过渡效果 + * @param enable 是否启用过渡效果 + */ +export const toggleTransition = (enable: boolean) => { + const body = document.body + + if (enable) { + body.classList.add('theme-change') + } else { + setTimeout(() => { + body.classList.remove('theme-change') + }, 300) + } +} diff --git a/web-admin/src/utils/ui/colors.ts b/web-admin/src/utils/ui/colors.ts new file mode 100755 index 00000000..b4f6b77e --- /dev/null +++ b/web-admin/src/utils/ui/colors.ts @@ -0,0 +1,273 @@ +/** + * 颜色处理工具模块 + * + * 提供完整的颜色格式转换和处理功能 + * + * ## 主要功能 + * + * - Hex 与 RGB/RGBA 格式互转 + * - 颜色混合计算 + * - 颜色变浅/变深处理 + * - Element Plus 主题色自动生成 + * - 颜色格式验证 + * - CSS 变量读取 + * - 暗黑模式颜色适配 + * + * ## 使用场景 + * + * - 主题色动态切换 + * - Element Plus 组件主题定制 + * - 颜色渐变生成 + * - 明暗主题颜色计算 + * - 颜色格式标准化 + * + * ## 核心功能 + * + * - hexToRgba: Hex 转 RGBA(支持透明度) + * - hexToRgb: Hex 转 RGB 数组 + * - rgbToHex: RGB 转 Hex + * - colourBlend: 两种颜色混合 + * - getLightColor: 生成变浅的颜色 + * - getDarkColor: 生成变深的颜色 + * - handleElementThemeColor: 处理 Element Plus 主题色 + * - setElementThemeColor: 设置完整的主题色系统 + * + * ## 支持格式 + * + * - Hex: #FFF, #FFFFFF + * - RGB: rgb(255, 255, 255) + * - RGBA: rgba(255, 255, 255, 0.5) + * + * @module utils/ui/colors + * @author Art Design Pro Team + */ +import { useSettingStore } from '@/store/modules/setting' + +/** + * 颜色转换结果接口 + */ +interface RgbaResult { + red: number + green: number + blue: number + rgba: string +} + +/** + * 获取CSS变量值(别名函数) + * @param name CSS变量名 + * @returns CSS变量值 + */ +export function getCssVar(name: string): string { + return getComputedStyle(document.documentElement).getPropertyValue(name) +} + +/** + * 验证hex颜色格式 + * @param hex hex颜色值 + * @returns 是否为有效的hex颜色 + */ +function isValidHexColor(hex: string): boolean { + const cleanHex = hex.trim().replace(/^#/, '') + return /^[0-9A-Fa-f]{3}$|^[0-9A-Fa-f]{6}$/.test(cleanHex) +} + +/** + * 验证RGB颜色值 + * @param r 红色值 + * @param g 绿色值 + * @param b 蓝色值 + * @returns 是否为有效的RGB值 + */ +function isValidRgbValue(r: number, g: number, b: number): boolean { + const isValid = (value: number) => Number.isInteger(value) && value >= 0 && value <= 255 + return isValid(r) && isValid(g) && isValid(b) +} + +/** + * 将hex颜色转换为RGBA + * @param hex hex颜色值 (支持 #FFF 或 #FFFFFF 格式) + * @param opacity 透明度 (0-1) + * @returns 包含RGB值和RGBA字符串的对象 + */ +export function hexToRgba(hex: string, opacity: number): RgbaResult { + if (!isValidHexColor(hex)) { + throw new Error('Invalid hex color format') + } + + // 移除可能存在的 # 前缀并转换为大写 + let cleanHex = hex.trim().replace(/^#/, '').toUpperCase() + + // 如果是缩写形式(如 FFF),转换为完整形式 + if (cleanHex.length === 3) { + cleanHex = cleanHex + .split('') + .map((char) => char.repeat(2)) + .join('') + } + + // 解析 RGB 值 + const [red, green, blue] = cleanHex.match(/\w\w/g)!.map((x) => parseInt(x, 16)) + + // 确保 opacity 在有效范围内 + const validOpacity = Math.max(0, Math.min(1, opacity)) + + // 构建 RGBA 字符串 + const rgba = `rgba(${red}, ${green}, ${blue}, ${validOpacity.toFixed(2)})` + + return { red, green, blue, rgba } +} + +/** + * 将hex颜色转换为RGB数组 + * @param hexColor hex颜色值 + * @returns RGB数组 [r, g, b] + */ +export function hexToRgb(hexColor: string): number[] { + if (!isValidHexColor(hexColor)) { + ElMessage.warning('输入错误的hex颜色值') + throw new Error('Invalid hex color format') + } + + const cleanHex = hexColor.replace(/^#/, '') + let hex = cleanHex + + // 处理缩写形式 + if (hex.length === 3) { + hex = hex + .split('') + .map((char) => char.repeat(2)) + .join('') + } + + const hexPairs = hex.match(/../g) + if (!hexPairs) { + throw new Error('Invalid hex color format') + } + + return hexPairs.map((hexPair) => parseInt(hexPair, 16)) +} + +/** + * 将RGB颜色转换为hex + * @param r 红色值 (0-255) + * @param g 绿色值 (0-255) + * @param b 蓝色值 (0-255) + * @returns hex颜色值 + */ +export function rgbToHex(r: number, g: number, b: number): string { + if (!isValidRgbValue(r, g, b)) { + ElMessage.warning('输入错误的RGB颜色值') + throw new Error('Invalid RGB color values') + } + + const toHex = (value: number) => { + const hex = value.toString(16) + return hex.length === 1 ? `0${hex}` : hex + } + + return `#${toHex(r)}${toHex(g)}${toHex(b)}` +} + +/** + * 颜色混合 + * @param color1 第一个颜色 + * @param color2 第二个颜色 + * @param ratio 混合比例 (0-1) + * @returns 混合后的颜色 + */ +export function colourBlend(color1: string, color2: string, ratio: number): string { + const validRatio = Math.max(0, Math.min(1, Number(ratio))) + + const rgb1 = hexToRgb(color1) + const rgb2 = hexToRgb(color2) + + const blendedRgb = rgb1.map((value1, index) => { + const value2 = rgb2[index] + return Math.round(value1 * (1 - validRatio) + value2 * validRatio) + }) + + return rgbToHex(blendedRgb[0], blendedRgb[1], blendedRgb[2]) +} + +/** + * 获取变浅的颜色 + * @param color 原始颜色 + * @param level 变浅程度 (0-1) + * @param isDark 是否为暗色主题 + * @returns 变浅后的颜色 + */ +export function getLightColor(color: string, level: number, isDark: boolean = false): string { + if (!isValidHexColor(color)) { + ElMessage.warning('输入错误的hex颜色值') + throw new Error('Invalid hex color format') + } + + if (isDark) { + return getDarkColor(color, level) + } + + const rgb = hexToRgb(color) + const lightRgb = rgb.map((value) => Math.floor((255 - value) * level + value)) + + return rgbToHex(lightRgb[0], lightRgb[1], lightRgb[2]) +} + +/** + * 获取变深的颜色 + * @param color 原始颜色 + * @param level 变深程度 (0-1) + * @returns 变深后的颜色 + */ +export function getDarkColor(color: string, level: number): string { + if (!isValidHexColor(color)) { + ElMessage.warning('输入错误的hex颜色值') + throw new Error('Invalid hex color format') + } + + const rgb = hexToRgb(color) + const darkRgb = rgb.map((value) => Math.floor(value * (1 - level))) + + return rgbToHex(darkRgb[0], darkRgb[1], darkRgb[2]) +} + +/** + * 处理 Element Plus 主题颜色 + * @param theme 主题颜色 + * @param isDark 是否为暗色主题 + */ +export function handleElementThemeColor(theme: string, isDark: boolean = false): void { + document.documentElement.style.setProperty('--el-color-primary', theme) + + for (let i = 1; i <= 9; i++) { + document.documentElement.style.setProperty( + `--el-color-primary-light-${i}`, + getLightColor(theme, i / 10, isDark) + ) + } + + for (let i = 1; i <= 9; i++) { + document.documentElement.style.setProperty( + `--el-color-primary-dark-${i}`, + getDarkColor(theme, i / 10) + ) + } +} + +/** + * 设置 Element Plus 主题颜色 + * @param color 主题颜色 + */ +export function setElementThemeColor(color: string): void { + const mixColor = '#ffffff' + const elStyle = document.documentElement.style + + elStyle.setProperty('--el-color-primary', color) + handleElementThemeColor(color, useSettingStore().isDark) + + // 生成更淡一点的颜色 + for (let i = 1; i < 16; i++) { + const itemColor = colourBlend(color, mixColor, i / 16) + elStyle.setProperty(`--el-color-primary-custom-${i}`, itemColor) + } +} diff --git a/web-admin/src/utils/ui/emojo.ts b/web-admin/src/utils/ui/emojo.ts new file mode 100644 index 00000000..cabad7dd --- /dev/null +++ b/web-admin/src/utils/ui/emojo.ts @@ -0,0 +1,24 @@ +/** + * 表情 + * 用于在消息提示的时候显示对应的表情 + * + * 用法 + * ElMessage.success(`${EmojiText[200]} 图片上传成功`) + * ElMessage.error(`${EmojiText[400]} 图片上传失败`) + * ElMessage.error(`${EmojiText[500]} 图片上传失败`) + * + * @module utils/ui/emojo + * @author Art Design Pro Team + */ + +// macos 用户 按 shift + 6 可以唤出更多表情…… +const EmojiText: { [key: string]: string } = { + '0': 'O_O', // 空 + '200': '^_^', // 成功 + '400': 'T_T', // 错误请求 + '500': 'X_X' // 服务器内部错误,无法完成请求 +} + +// const EmojiIcon = ['🟢', '🔴', '🟡 ', '🚀', '✨', '💡', '🛠️', '🔥', '🎉', '🌟', '🌈'] + +export default EmojiText diff --git a/web-admin/src/utils/ui/iconify-loader.ts b/web-admin/src/utils/ui/iconify-loader.ts new file mode 100644 index 00000000..035de16c --- /dev/null +++ b/web-admin/src/utils/ui/iconify-loader.ts @@ -0,0 +1,31 @@ +/** + * 离线图标加载器 + * + * 用于在内网环境下支持 Iconify 图标的离线加载。 + * 通过预加载图标集数据,避免运行时从 CDN 获取图标。 + * + * 使用方式: + * 1. 安装所需图标集:pnpm add -D @iconify-json/[icon-set-name] + * 2. 在此文件中导入并注册图标集 + * 3. 在组件中使用: + * + * @module utils/ui/iconify-loader + * @author Art Design Pro Team + */ + +// import { addCollection } from '@iconify/vue' + +// // 导入离线图标数据 + +// // 系统必要图标库 +// import riIcons from '@iconify-json/ri/icons.json' + +// // 演示图标库(可选,生产环境可移除) +// import svgSpinners from '@iconify-json/svg-spinners/icons.json' +// import lineMd from '@iconify-json/line-md/icons.json' + +// // 注册离线图标集 + +// addCollection(riIcons) +// addCollection(svgSpinners) +// addCollection(lineMd) diff --git a/web-admin/src/utils/ui/index.ts b/web-admin/src/utils/ui/index.ts new file mode 100644 index 00000000..9ca1049e --- /dev/null +++ b/web-admin/src/utils/ui/index.ts @@ -0,0 +1,11 @@ +/** + * UI 相关工具函数统一导出 + * + * @module utils/ui/index + * @author Art Design Pro Team + */ + +export * from './colors' +export * from './loading' +export * from './tabs' +export * from './emojo' diff --git a/web-admin/src/utils/ui/loading.ts b/web-admin/src/utils/ui/loading.ts new file mode 100644 index 00000000..6580e023 --- /dev/null +++ b/web-admin/src/utils/ui/loading.ts @@ -0,0 +1,84 @@ +/** + * 全局 Loading 加载管理模块 + * + * 提供统一的全屏加载动画管理 + * + * ## 主要功能 + * + * - 全屏 Loading 显示和隐藏 + * - 自动适配明暗主题背景色 + * - 自定义 SVG 加载动画 + * - 单例模式防止重复创建 + * - 锁定页面交互 + * + * ## 使用场景 + * + * - 页面初始化加载 + * - 大量数据请求 + * - 路由切换过渡 + * - 异步操作等待 + * + * ## 特性 + * + * - 自动检测当前主题并应用对应背景色 + * - 使用自定义 SVG 动画(四点旋转) + * - 单例模式确保同时只有一个 Loading + * - 提供便捷的显示/隐藏方法 + * + * @module utils/ui/loading + * @author Art Design Pro Team + */ +import { fourDotsSpinnerSvg } from '@/assets/svg/loading' + +/** + * 获取当前主题对应的loading背景色 + * @returns 背景色字符串 + */ +const getLoadingBackground = (): string => { + const isDark = document.documentElement.classList.contains('dark') + return isDark ? 'rgba(7, 7, 7, 0.85)' : '#fff' +} + +const DEFAULT_LOADING_CONFIG = { + lock: true, + get background() { + return getLoadingBackground() + }, + svg: fourDotsSpinnerSvg, + svgViewBox: '0 0 40 40', + customClass: 'art-loading-fix' +} as const + +interface LoadingInstance { + close: () => void +} + +let loadingInstance: LoadingInstance | null = null + +export const loadingService = { + /** + * 显示 loading + * @returns 关闭 loading 的函数 + */ + showLoading(): () => void { + if (!loadingInstance) { + // 每次显示时获取最新的配置,确保背景色与当前主题同步 + const config = { + ...DEFAULT_LOADING_CONFIG, + background: getLoadingBackground() + } + loadingInstance = ElLoading.service(config) + } + return () => this.hideLoading() + }, + + /** + * 隐藏 loading + */ + hideLoading(): void { + if (loadingInstance) { + loadingInstance.close() + loadingInstance = null + } + } +} diff --git a/web-admin/src/utils/ui/tabs.ts b/web-admin/src/utils/ui/tabs.ts new file mode 100644 index 00000000..5f53ea5f --- /dev/null +++ b/web-admin/src/utils/ui/tabs.ts @@ -0,0 +1,60 @@ +/** + * 标签页布局配置模块 + * + * 提供不同标签页样式的高度和间距配置 + * + * ## 主要功能 + * + * - 多种标签页样式配置(默认、卡片、谷歌风格) + * - 标签页打开/关闭状态的高度管理 + * - 顶部间距自动计算 + * - 配置获取和默认值处理 + * + * ## 使用场景 + * + * - 工作标签页(Worktab)布局计算 + * - 页面内容区域高度调整 + * - 标签页显示/隐藏时的动画 + * - 响应式布局适配 + * + * ## 配置项说明 + * + * - openTop: 标签页显示时,内容区域距离顶部的距离 + * - closeTop: 标签页隐藏时,内容区域距离顶部的距离 + * - openHeight: 标签页显示时的总高度(包含标签栏) + * - closeHeight: 标签页隐藏时的总高度(仅头部) + * + * ## 支持的样式 + * + * - tab-default: 默认标签页样式 + * - tab-card: 卡片式标签页 + * - tab-google: 谷歌浏览器风格标签页 + * + * @module utils/ui/tabs + * @author Art Design Pro Team + */ +export const TAB_CONFIG = { + 'tab-default': { + openTop: 106, + closeTop: 60, + openHeight: 121, + closeHeight: 75 + }, + 'tab-card': { + openTop: 122, + closeTop: 78, + openHeight: 139, + closeHeight: 95 + }, + 'tab-google': { + openTop: 122, + closeTop: 78, + openHeight: 139, + closeHeight: 95 + } +} + +// 获取当前 tab 样式配置,设置默认值 +export const getTabConfig = (style: string) => { + return TAB_CONFIG[style as keyof typeof TAB_CONFIG] || TAB_CONFIG['tab-card'] // 默认使用 tab-card 配置 +} diff --git a/web-admin/src/utils/user-avatar.ts b/web-admin/src/utils/user-avatar.ts new file mode 100644 index 00000000..7883dfc1 --- /dev/null +++ b/web-admin/src/utils/user-avatar.ts @@ -0,0 +1,14 @@ +/** 未设置头像时统一使用系统默认 logo(与登录页、侧栏 ArtLogo 一致) */ +export const DEFAULT_USER_AVATAR_URL = '/logo1.jpg' + +/** @deprecated 各角色默认已统一为 logo,保留参数仅为兼容旧调用 */ +export function defaultAvatarPathByRole(_role: string | undefined): string { + return DEFAULT_USER_AVATAR_URL +} + +/** 展示用头像:有自定义 URL 用自定义,否则用系统默认 logo */ +export function resolveUserAvatarUrl(avatarUrl: string | null | undefined, role: string | undefined): string { + const u = avatarUrl != null ? String(avatarUrl).trim() : '' + if (u) return u + return defaultAvatarPathByRole(role) +} diff --git a/web-admin/src/views/exception/403/index.vue b/web-admin/src/views/exception/403/index.vue new file mode 100755 index 00000000..2756c426 --- /dev/null +++ b/web-admin/src/views/exception/403/index.vue @@ -0,0 +1,16 @@ + + + + diff --git a/web-admin/src/views/exception/404/index.vue b/web-admin/src/views/exception/404/index.vue new file mode 100755 index 00000000..6b64f455 --- /dev/null +++ b/web-admin/src/views/exception/404/index.vue @@ -0,0 +1,16 @@ + + + + diff --git a/web-admin/src/views/exception/500/index.vue b/web-admin/src/views/exception/500/index.vue new file mode 100755 index 00000000..1b263775 --- /dev/null +++ b/web-admin/src/views/exception/500/index.vue @@ -0,0 +1,16 @@ + + + + diff --git a/web-admin/src/views/index/index.vue b/web-admin/src/views/index/index.vue new file mode 100755 index 00000000..415a4361 --- /dev/null +++ b/web-admin/src/views/index/index.vue @@ -0,0 +1,29 @@ + + + + + + diff --git a/web-admin/src/views/index/style.scss b/web-admin/src/views/index/style.scss new file mode 100644 index 00000000..ef0c1546 --- /dev/null +++ b/web-admin/src/views/index/style.scss @@ -0,0 +1,100 @@ +.app-layout { + display: flex; + width: 100%; + min-height: 100vh; + background: var(--mint-bg-page); + + #app-sidebar { + flex-shrink: 0; + } + + #app-main { + display: flex; + flex: 1; + flex-direction: column; + min-width: 0; + height: 100vh; + overflow: hidden; + + #app-header { + position: sticky; + top: 0; + z-index: 50; + flex-shrink: 0; + width: 100%; + } + + #app-content { + flex: 1; + min-height: 0; + overflow: auto; + + :deep(.layout-content) { + box-sizing: border-box; + width: 100%; + margin: 0; + padding: var(--mint-content-padding); + + // 子页面默认 style + .page-content { + position: relative; + box-sizing: border-box; + padding: 0; + overflow: hidden; + background: transparent; + border-radius: 0 !important; + box-shadow: none !important; + border: none !important; + } + } + } + } +} + +@media only screen and (width <= 1180px) { + .app-layout { + #app-main { + height: 100dvh; + } + } +} + +@media only screen and (width <= 800px) { + .app-layout { + position: relative; + + #app-sidebar { + position: fixed; + top: 0; + left: 0; + z-index: 300; + height: 100vh; + } + + #app-main { + width: 100%; + height: auto; + overflow: visible; + + #app-content { + :deep(.layout-content) { + width: 100%; + padding: 16px; + } + } + } + } +} + +@media only screen and (width <= 640px) { + .app-layout { + #app-main { + #app-content { + :deep(.layout-content) { + width: 100%; + padding: 12px; + } + } + } + } +} diff --git a/web-admin/src/views/outside/Iframe.vue b/web-admin/src/views/outside/Iframe.vue new file mode 100644 index 00000000..35528d09 --- /dev/null +++ b/web-admin/src/views/outside/Iframe.vue @@ -0,0 +1,36 @@ + +

yjkcOw&(>Y8mz^;5!^gv~u``#^d4Gx|bp z2-7XGTS)^qhf7!w*}02Gj=X#OF@kb6Jt3zqO+zHUi|*y6rT)zw2fWpG5HATLaEHBA?3FMMUbKN! z#PTx@LRbQWSrGV>{xDg;Y&mz%O`b0->jK)iZ$3px^C{9_{ufhP&J*iK#sD|4mEY65 zo_)#pd^kuy=pjs7EPZ($mXiA4=KVU~KK%qdoT$y{+sF>raM|L3$68%+)I;OfUJTDx z1U>Y4LD0a6u&j$I!_&)rdJZMen2S(UBFCq5k=S`7fSS^^=A=x(J*#i zKz~~J*K*g#S=`a;a@2hrk*YK539RJvg8R}@o;E{PoRRvhvd?og-ce(w(-^A772(B( zwL2heplT-AQ4b4Hp0}RR@qK_+3oDXt)Qd>>d`CW+gt~#ZDk|uueQ--tz-xBiqRf(p zSffC>me&9Q_wx4x z#)Qrvl1BIk!nP|C;SW46WI9zBNIC596gbh(Um)?0RRV@0Qr)AD2Mixv&BN8B^nL0xEYRQ+MWL)?U}O`I{8z}8Q? zqG61P(MtfE8g1vOCeR!PQzyS$q+)y+-wzSkduvQVFUmM|rHAQycjo0CzZDu)rXQXWDzDqA%HPG7qYby8MxfS z>2kznxxt&D$SV6{@UgaOVu)ace0YO7ty}dTMy^_LW@vip+jR!lQOLYfcUR}c^Y@!Jnct35&-L@u9|L%xY>y6!J@{c3l!bY^F&>hg%@dSqG{+5` zE4-aaWE0hb+H_tHF}e*kiqSi+VPyDuDOBh%0Q9PS8x*jW{fsR42v9aN&nPoT-pD;Mch2^&mj&z{}% z?ao99Xsn)nJGGiN&%)>Y*vrk5Qd)>~eENEgD#>kYk?|f?-Dc2*)GlQs5fWw2%`c@1 zquNsRdGT*p7sf+aGhl!xV{-_s@?%#S8;Q64tRn2_{uzADxkbqN!l&w_!_$_;R zdnsX>lMrYouxu71`|g>Q3b*oO4VgPmk9>qyZ|=MVra^f>#y@Cjo3Le`o&ytIK5lE8sW9IS|@f;Q>AtCT=tq~<&h4j>sRb|(%9~?-avmzJm z(1;a^3(S5?{Nf<=?U3i=pJL|ad65!sGoKsxu4*RAB1&0F-Mi^-asgy-m6dR=Z{s3z zavmTR&xu&hAESu(?TAP1rOXTC!xu7C0j{|8YD=rQ4Ws+FS?yX}djleb%}G-Eu3=yv z)mED!6H2>+u;Zxto<8<9Xt45@(?|y8300?P{epb5UOjZ0LTRvgAN0Gwa^aTvL}hcM z)9UMLmZ(pjz3255xlAiZd9kwXYEhk{s~v3B#SbqriecXENeu4c8U6V)#W*Wz7YpRb zLVC&9vT1wI*EHG3Ct7ZF#!Rq;MAkc;sIb$ya+2Ek5XwAq3L;suewr*%>z-P4&q}Ax zsEye_4g<-Mn9J*lN*ADRlVX_0btd~eEGu;uXcR_)`tC!^^j(VFwKJ-BR~mm~ZhU>= zTNr;_cxu*T!7VxB&C=LX(l&Z7ZKcou4OcsR9#@%L%ez_E-QhOB!gpU@uEl@cTj}=6 zb4utCT-AslKou@|scXX_;#vr13|;2cdxC|i810%0mPcpmHEW+^gai|EgUzEXEtq-2 zG@*;-2-P_$0p0UO1rm9p^wUi_;7Y?p7k{1K!t4@hxiGazC{z9&y8B&~{Soo0+aYe{ z$lVfa8?;-5&uRUxp?d4ZgPt(ISdo%bOB#jOF+-ujYKA}jn`5q`)J-P4USjFJZw%MhK;@VL4a^|*giXyGFs{+74$5gu-fsXz^`$=Lh literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/ceremony/yd.png b/web-admin/src/assets/images/ceremony/yd.png new file mode 100644 index 0000000000000000000000000000000000000000..426912d581d699afa00e95ad5e9c54d9cdda03f7 GIT binary patch literal 4629 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img1.webp b/web-admin/src/assets/images/cover/img1.webp new file mode 100644 index 0000000000000000000000000000000000000000..ebcd0c58e6c5463c104fb48fedaac8f7d0f40a14 GIT binary patch literal 7522 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img10.webp b/web-admin/src/assets/images/cover/img10.webp new file mode 100644 index 0000000000000000000000000000000000000000..c6f53e3d1faa7ec38ffc41a8daccec08d9917cfc GIT binary patch literal 3526 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img2.webp b/web-admin/src/assets/images/cover/img2.webp new file mode 100644 index 0000000000000000000000000000000000000000..747580f22be83d196022a35d811b5f5b04b74bce GIT binary patch literal 14024 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img3.webp b/web-admin/src/assets/images/cover/img3.webp new file mode 100644 index 0000000000000000000000000000000000000000..4fbe6387cf7ed3b55f3a7fda24eb85b16b6e055c GIT binary patch literal 12128 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 literal 0 HcmV?d00001 diff --git a/web-admin/src/assets/images/cover/img4.webp b/web-admin/src/assets/images/cover/img4.webp new file mode 100644 index 0000000000000000000000000000000000000000..2dd11391ce6c40450aa6b41a51b0aa44f3248d9b GIT binary patch literal 9832 zcmZ8_bySp5_w^7%Bi$e)4bt5(l%#-k4&5nTk}6%&<3tMPj{_cTu>XT*bQTCP+v%po#UV#s_xW7Xxof$^N@2>e%i--+5zh0BR!uv#1vKo51!v zi{-w~3tmd;Fz8`bcqc<(lWn0d;Ans&sr*Uv5^Mv`J*PezLFZcP5;io|gB>iex{Gq8 zAHQ)MAJ|2q2fQghma_{!8df2aD?POVf3Wz^39~N3_fU%h`%)IaUIDlgXI+)OgDAQv zK=1aV>OL^}OiEDx=Z;$->ti|OCJu3Zj)%pd2leZgKa09wut3*IYG`cx!3ueFYy={g z5_CA5%dib3O#a2E*rW#3ldP^ngy9R42@9>c1(aS(ucfOsQdqI_!KB1P3hk zBuo4zzz4o$?q$H((zvOC-CX3{1+4{d>w;yxPi`!rE~1xZzx7n^&V_a@x;&)ki9loz zbZx+yma!LA+%}O-9f;FQ&mZ3N`V6Qmb8DSZw&a0b>}(<@`!g=wB2gK1rB80}k!H`??j&%T!{xo^cGP78V!+kwbjUHB8Nfo|HZK zWJN?T6XPIZ*I?>rR8w+TFra@DtOc?bL0L&=WF=av@gdXL+>K!WHHV4%0T}E>#SO5r z=Orich{C^;&;)x-%!CERYVEoGMQghuEC!sSNa{%MOF+8ivG1|m3-Dpj=o%xz)LWP$ zyB`tYWqRg-C9`Y~NNSJ2%kLh|EHJVuW!95=D~ zDRVBIZNE)?a(6MKFaf??*Y7xZn|Z48GkLB@Sl@P6n6;|-+?s!~&_CS0O-5|ym@XfB z$WV}^0FC~>Y^>BRhiwnCD#OgmHj`{PT8nm(@Jycu79+ji8znTfE=_b6*`q3lrsR*5 zfH)M*G=31~p&6*cun#MIP2P*7u5A_-LxyaPYQ)({^^^0;R2q$6ujz1L5d$>cNxG~t zM439ms)d`WNs2I!sK4reE1y$f(&C7>oDTAi6H_jfaaKbjzQv05Gd3CW-wONrR5L6} zTrOxv_Fa;Yw}$Daw3kiW2JJ?lW1{7X`M(U~+uvl#I#HJwyiG@pyAy#bw~4*Z*;B%Q zI{EA6?JXpvZWBL00-Lpg-O6TlDHbV>G@`(l91F0)J4MT85U^Zv)S35G+5r z{iDHGpO;dg9IoVL2>8qnJ@}9`fi|+ZdGTut?ur{oU^1d~*fVpykWb%*6`nDNXYsM` z%irBp;(nUC<`=gdNLfTeL~t zI$>h9Igo6AMa$=pl3*QA)oQLrQY3upV_Uk-mFJa|5(CAs`gzF0y!jkH0&HfH39cK{Bi zk7*+O5KWidFSEH-F7eAnyl%vYpQZld8_K($y$fX}MtUyOfJP-q#JlIHCJ-HWKWxQ2 z2N573mUSg8LgkXe52>4E#r`1z6gWAZ~O2$=Q*Iyao`HsJgw3(z%~bs`nRnjIZ(x(HI65#q$?nV;+IF2jq$(I;{#Zu zTDgzF=rh@4_46SsYT7a022Ik{Gr^IG&_Qb$hK!F*el+B0Ovti)G=(Cq5u{aJ`eIla zJ3rOj@bS#KzwMGU(v%oRe%Pevz7I1uiGr6c%C=`nn>eJLrw-Kx60w}8Ew0zF*aXT=B^3tmbiG;fiU zz`lnWkS+?^wTK?&$arx5j)`sx)naf5Ob1K=807#|r*9)9tMt)^n$*U(aBX-4mpgh4 zwc^~`6}WI`R#}SY2 ziSyUlD(vvID(J^EG{lISo@NW@?sixlRyP<5&@MPK56O*A2jI=Cdxa?tU@`0QAZbup z04u4XPj^zcm>wE21m%2)8b&j0@K!hAg6qZqL0leldFhb(19kBaL2vtf%=(*U*%c)$!0(ild_0O+n0SPZe*PXS=4IZiC%i@*=)#K+_M5aIP|QBaH~;HM|oP6TEQHI;X9