From c76a1850a1cfee18e9250e0283022286f9114d82 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 4 May 2022 15:41:02 +0800 Subject: [PATCH] init --- .editorconfig | 15 + .env.example | 51 + .gitattributes | 5 + .gitignore | 14 + .styleci.yml | 13 + README.md | 1 + VUE-WEB/lions-agent/.browserslistrc | 3 + VUE-WEB/lions-agent/.eslintrc.js | 17 + VUE-WEB/lions-agent/.gitignore | 21 + VUE-WEB/lions-agent/README.md | 29 + VUE-WEB/lions-agent/babel.config.js | 5 + VUE-WEB/lions-agent/package-lock.json | 11975 +++++++ VUE-WEB/lions-agent/package.json | 30 + VUE-WEB/lions-agent/public/favicon.ico | Bin 0 -> 4286 bytes VUE-WEB/lions-agent/public/index.html | 17 + VUE-WEB/lions-agent/src/App.vue | 23 + VUE-WEB/lions-agent/src/api/axios.js | 56 + VUE-WEB/lions-agent/src/api/index.js | 7 + .../lions-agent/src/api/interfaces/auth.js | 13 + .../lions-agent/src/api/interfaces/index.js | 7 + VUE-WEB/lions-agent/src/assets/logo.png | Bin 0 -> 60437 bytes VUE-WEB/lions-agent/src/main.js | 27 + VUE-WEB/lions-agent/src/pages/auth/login.vue | 174 + VUE-WEB/lions-agent/src/pages/auth/verify.vue | 186 + VUE-WEB/lions-agent/src/pages/index/index.vue | 140 + .../lions-agent/src/pages/layouts/common.vue | 13 + .../lions-agent/src/plugins/toast/index.js | 34 + .../lions-agent/src/plugins/toast/toast.vue | 38 + VUE-WEB/lions-agent/src/plugins/utils.js | 8 + VUE-WEB/lions-agent/src/plugins/vuetify.js | 13 + VUE-WEB/lions-agent/src/router/index.js | 79 + VUE-WEB/lions-agent/src/store/index.js | 49 + VUE-WEB/lions-web/.browserslistrc | 3 + VUE-WEB/lions-web/.eslintrc.js | 17 + VUE-WEB/lions-web/.gitignore | 21 + VUE-WEB/lions-web/README.md | 29 + VUE-WEB/lions-web/babel.config.js | 5 + VUE-WEB/lions-web/package-lock.json | 11980 +++++++ VUE-WEB/lions-web/package.json | 31 + VUE-WEB/lions-web/public/favicon.ico | Bin 0 -> 4286 bytes VUE-WEB/lions-web/public/index.html | 17 + VUE-WEB/lions-web/src/App.vue | 40 + VUE-WEB/lions-web/src/api/axios.js | 56 + VUE-WEB/lions-web/src/api/index.js | 11 + .../lions-web/src/api/interfaces/article.js | 11 + VUE-WEB/lions-web/src/api/interfaces/auth.js | 13 + VUE-WEB/lions-web/src/api/interfaces/index.js | 10 + VUE-WEB/lions-web/src/api/interfaces/vote.js | 12 + VUE-WEB/lions-web/src/assets/back.png | Bin 0 -> 172811 bytes VUE-WEB/lions-web/src/assets/back_1.png | Bin 0 -> 113041 bytes VUE-WEB/lions-web/src/assets/back_2.png | Bin 0 -> 205949 bytes VUE-WEB/lions-web/src/assets/logo.png | Bin 0 -> 60437 bytes VUE-WEB/lions-web/src/main.js | 28 + VUE-WEB/lions-web/src/pages/auth/login.vue | 177 + VUE-WEB/lions-web/src/pages/auth/verify.vue | 190 + VUE-WEB/lions-web/src/pages/files/index.vue | 65 + VUE-WEB/lions-web/src/pages/files/show.vue | 51 + VUE-WEB/lions-web/src/pages/index/index.vue | 189 + .../lions-web/src/pages/layouts/common.vue | 13 + VUE-WEB/lions-web/src/pages/vote/diff.vue | 331 + VUE-WEB/lions-web/src/pages/vote/equal.vue | 315 + VUE-WEB/lions-web/src/pages/vote/index.vue | 179 + VUE-WEB/lions-web/src/plugins/toast/index.js | 34 + VUE-WEB/lions-web/src/plugins/toast/toast.vue | 38 + VUE-WEB/lions-web/src/plugins/utils.js | 8 + VUE-WEB/lions-web/src/plugins/vuetify.js | 13 + VUE-WEB/lions-web/src/router/index.js | 123 + VUE-WEB/lions-web/src/store/index.js | 49 + app/Admin/Actions/CleanData.php | 37 + app/Admin/Actions/DestroyData.php | 127 + app/Admin/Actions/ExportCha.php | 49 + app/Admin/Actions/ExportDeng.php | 48 + app/Admin/Actions/Replicate.php | 42 + app/Admin/Actions/UserImport.php | 79 + app/Admin/Controllers/ArticleController.php | 41 + app/Admin/Controllers/AuthController.php | 10 + app/Admin/Controllers/HomeController.php | 21 + app/Admin/Controllers/ItemController.php | 82 + app/Admin/Controllers/UserController.php | 60 + app/Admin/Controllers/VoteController.php | 135 + app/Admin/bootstrap.php | 29 + app/Admin/routes.php | 19 + app/Api/Controllers/ArticleController.php | 41 + app/Api/Controllers/AuthController.php | 77 + app/Api/Controllers/Controller.php | 12 + app/Api/Controllers/IndexController.php | 76 + app/Api/Controllers/VoteController.php | 74 + app/Api/Resources/ItemResource.php | 23 + app/Api/bootstrap.php | 1 + app/Api/routes.php | 33 + app/Console/Kernel.php | 41 + app/Exceptions/Handler.php | 55 + app/Http/Controllers/AuthController.php | 30 + app/Http/Controllers/Controller.php | 13 + app/Http/Controllers/IndexController.php | 22 + app/Http/Kernel.php | 66 + app/Http/Middleware/Authenticate.php | 21 + .../Middleware/CheckForMaintenanceMode.php | 17 + app/Http/Middleware/EncryptCookies.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 27 + app/Http/Middleware/TrimStrings.php | 18 + app/Http/Middleware/TrustProxies.php | 23 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Models/Article.php | 16 + app/Models/ArticleAudit.php | 18 + app/Models/Item.php | 28 + app/Models/ItemLog.php | 18 + app/Models/Model.php | 13 + app/Models/User.php | 37 + app/Models/Vote.php | 26 + app/Providers/AppServiceProvider.php | 33 + app/Providers/AuthServiceProvider.php | 30 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 34 + app/Providers/RouteServiceProvider.php | 80 + artisan | 53 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 71 + composer.lock | 8725 +++++ config/admin.php | 409 + config/api.php | 25 + config/app.php | 232 + config/auth.php | 117 + config/broadcasting.php | 59 + config/cache.php | 104 + config/cors.php | 34 + config/database.php | 147 + config/filesystems.php | 85 + config/hashing.php | 52 + config/jwt.php | 304 + config/logging.php | 104 + config/mail.php | 109 + config/queue.php | 89 + config/services.php | 33 + config/session.php | 199 + config/sms.php | 61 + config/ueditor.php | 116 + config/view.php | 36 + database/.gitignore | 2 + database/LionsVote.sql | 638 + database/factories/UserFactory.php | 28 + .../2014_10_12_000000_create_users_table.php | 36 + .../2016_01_04_173148_create_admin_tables.php | 119 + ..._08_19_000000_create_failed_jobs_table.php | 35 + .../2020_05_01_235031_create_items_table.php | 36 + ...20_05_01_235326_create_item_logs_table.php | 31 + database/seeds/DatabaseSeeder.php | 16 + database/vote.sql | 645 + package.json | 21 + phpunit.xml | 31 + public/.htaccess | 21 + public/favicon.ico | 0 public/index.php | 60 + public/robots.txt | 2 + public/static/css/mzui.css | 5453 +++ public/static/css/mzui.min.css | 4 + public/static/fonts/zenicon.eot | Bin 0 -> 85080 bytes public/static/fonts/zenicon.svg | 375 + public/static/fonts/zenicon.ttf | Bin 0 -> 84916 bytes public/static/fonts/zenicon.woff | Bin 0 -> 84992 bytes public/static/js/mzui.js | 1533 + public/static/js/mzui.min.js | 5 + public/static/lib/jquery/jquery-3.2.1.min.js | 4 + .../AdminLTE/bootstrap/css/bootstrap.min.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../AdminLTE/bootstrap/js/bootstrap.min.js | 7 + .../AdminLTE/dist/css/AdminLTE.min.css | 7 + .../dist/css/skins/_all-skins.min.css | 1 + .../dist/css/skins/skin-black-light.min.css | 1 + .../dist/css/skins/skin-black.min.css | 1 + .../dist/css/skins/skin-blue-light.min.css | 1 + .../AdminLTE/dist/css/skins/skin-blue.min.css | 1 + .../dist/css/skins/skin-green-light.min.css | 1 + .../dist/css/skins/skin-green.min.css | 1 + .../dist/css/skins/skin-purple-light.min.css | 1 + .../dist/css/skins/skin-purple.min.css | 1 + .../dist/css/skins/skin-red-light.min.css | 1 + .../AdminLTE/dist/css/skins/skin-red.min.css | 1 + .../dist/css/skins/skin-yellow-light.min.css | 1 + .../dist/css/skins/skin-yellow.min.css | 1 + .../AdminLTE/dist/img/boxed-bg.jpg | Bin 0 -> 123770 bytes .../AdminLTE/dist/img/boxed-bg.png | Bin 0 -> 43694 bytes .../AdminLTE/dist/img/default-50x50.gif | Bin 0 -> 184 bytes .../laravel-admin/AdminLTE/dist/img/icons.png | Bin 0 -> 1154 bytes .../AdminLTE/dist/img/user2-160x160.jpg | Bin 0 -> 7070 bytes .../laravel-admin/AdminLTE/dist/js/app.min.js | 13 + .../bootstrap-slider/bootstrap-slider.js | 1167 + .../plugins/bootstrap-slider/slider.css | 169 + .../colorpicker/bootstrap-colorpicker.min.css | 9 + .../colorpicker/bootstrap-colorpicker.min.js | 1 + .../colorpicker/img/alpha-horizontal.png | Bin 0 -> 3635 bytes .../plugins/colorpicker/img/alpha.png | Bin 0 -> 3271 bytes .../colorpicker/img/hue-horizontal.png | Bin 0 -> 2837 bytes .../AdminLTE/plugins/colorpicker/img/hue.png | Bin 0 -> 2972 bytes .../plugins/colorpicker/img/saturation.png | Bin 0 -> 8817 bytes .../AdminLTE/plugins/iCheck/all.css | 61 + .../AdminLTE/plugins/iCheck/flat/_all.css | 560 + .../AdminLTE/plugins/iCheck/flat/aero.css | 56 + .../AdminLTE/plugins/iCheck/flat/aero.png | Bin 0 -> 1520 bytes .../AdminLTE/plugins/iCheck/flat/aero@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/blue.css | 56 + .../AdminLTE/plugins/iCheck/flat/blue.png | Bin 0 -> 1518 bytes .../AdminLTE/plugins/iCheck/flat/blue@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/flat.css | 56 + .../AdminLTE/plugins/iCheck/flat/flat.png | Bin 0 -> 1515 bytes .../AdminLTE/plugins/iCheck/flat/flat@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/green.css | 56 + .../AdminLTE/plugins/iCheck/flat/green.png | Bin 0 -> 1444 bytes .../AdminLTE/plugins/iCheck/flat/green@2x.png | Bin 0 -> 3117 bytes .../AdminLTE/plugins/iCheck/flat/grey.css | 56 + .../AdminLTE/plugins/iCheck/flat/grey.png | Bin 0 -> 1516 bytes .../AdminLTE/plugins/iCheck/flat/grey@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/orange.css | 56 + .../AdminLTE/plugins/iCheck/flat/orange.png | Bin 0 -> 1518 bytes .../plugins/iCheck/flat/orange@2x.png | Bin 0 -> 3275 bytes .../AdminLTE/plugins/iCheck/flat/pink.css | 56 + .../AdminLTE/plugins/iCheck/flat/pink.png | Bin 0 -> 1522 bytes .../AdminLTE/plugins/iCheck/flat/pink@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/purple.css | 56 + .../AdminLTE/plugins/iCheck/flat/purple.png | Bin 0 -> 1519 bytes .../plugins/iCheck/flat/purple@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/red.css | 56 + .../AdminLTE/plugins/iCheck/flat/red.png | Bin 0 -> 1516 bytes .../AdminLTE/plugins/iCheck/flat/red@2x.png | Bin 0 -> 3276 bytes .../AdminLTE/plugins/iCheck/flat/yellow.css | 56 + .../AdminLTE/plugins/iCheck/flat/yellow.png | Bin 0 -> 1516 bytes .../plugins/iCheck/flat/yellow@2x.png | Bin 0 -> 3216 bytes .../plugins/iCheck/futurico/futurico.css | 56 + .../plugins/iCheck/futurico/futurico.png | Bin 0 -> 1734 bytes .../plugins/iCheck/futurico/futurico@2x.png | Bin 0 -> 3446 bytes .../AdminLTE/plugins/iCheck/icheck.min.js | 10 + .../AdminLTE/plugins/iCheck/line/_all.css | 740 + .../AdminLTE/plugins/iCheck/line/aero.css | 74 + .../AdminLTE/plugins/iCheck/line/blue.css | 74 + .../AdminLTE/plugins/iCheck/line/green.css | 74 + .../AdminLTE/plugins/iCheck/line/grey.css | 74 + .../AdminLTE/plugins/iCheck/line/line.css | 74 + .../AdminLTE/plugins/iCheck/line/line.png | Bin 0 -> 588 bytes .../AdminLTE/plugins/iCheck/line/line@2x.png | Bin 0 -> 1073 bytes .../AdminLTE/plugins/iCheck/line/orange.css | 74 + .../AdminLTE/plugins/iCheck/line/pink.css | 74 + .../AdminLTE/plugins/iCheck/line/purple.css | 74 + .../AdminLTE/plugins/iCheck/line/red.css | 74 + .../AdminLTE/plugins/iCheck/line/yellow.css | 74 + .../AdminLTE/plugins/iCheck/minimal/_all.css | 557 + .../AdminLTE/plugins/iCheck/minimal/aero.css | 62 + .../AdminLTE/plugins/iCheck/minimal/aero.png | Bin 0 -> 1151 bytes .../plugins/iCheck/minimal/aero@2x.png | Bin 0 -> 1409 bytes .../AdminLTE/plugins/iCheck/minimal/blue.css | 62 + .../AdminLTE/plugins/iCheck/minimal/blue.png | Bin 0 -> 1132 bytes .../plugins/iCheck/minimal/blue@2x.png | Bin 0 -> 1410 bytes .../AdminLTE/plugins/iCheck/minimal/green.css | 62 + .../AdminLTE/plugins/iCheck/minimal/green.png | Bin 0 -> 1143 bytes .../plugins/iCheck/minimal/green@2x.png | Bin 0 -> 1408 bytes .../AdminLTE/plugins/iCheck/minimal/grey.css | 62 + .../AdminLTE/plugins/iCheck/minimal/grey.png | Bin 0 -> 1142 bytes .../plugins/iCheck/minimal/grey@2x.png | Bin 0 -> 1407 bytes .../plugins/iCheck/minimal/minimal.css | 62 + .../plugins/iCheck/minimal/minimal.png | Bin 0 -> 1114 bytes .../plugins/iCheck/minimal/minimal@2x.png | Bin 0 -> 1410 bytes .../plugins/iCheck/minimal/orange.css | 62 + .../plugins/iCheck/minimal/orange.png | Bin 0 -> 1139 bytes .../plugins/iCheck/minimal/orange@2x.png | Bin 0 -> 1407 bytes .../AdminLTE/plugins/iCheck/minimal/pink.css | 62 + .../AdminLTE/plugins/iCheck/minimal/pink.png | Bin 0 -> 1150 bytes .../plugins/iCheck/minimal/pink@2x.png | Bin 0 -> 1409 bytes .../plugins/iCheck/minimal/purple.css | 62 + .../plugins/iCheck/minimal/purple.png | Bin 0 -> 1132 bytes .../plugins/iCheck/minimal/purple@2x.png | Bin 0 -> 1409 bytes .../AdminLTE/plugins/iCheck/minimal/red.css | 62 + .../AdminLTE/plugins/iCheck/minimal/red.png | Bin 0 -> 1130 bytes .../plugins/iCheck/minimal/red@2x.png | Bin 0 -> 1410 bytes .../plugins/iCheck/minimal/yellow.css | 62 + .../plugins/iCheck/minimal/yellow.png | Bin 0 -> 1135 bytes .../plugins/iCheck/minimal/yellow@2x.png | Bin 0 -> 1406 bytes .../plugins/iCheck/polaris/polaris.css | 62 + .../plugins/iCheck/polaris/polaris.png | Bin 0 -> 6401 bytes .../plugins/iCheck/polaris/polaris@2x.png | Bin 0 -> 16760 bytes .../AdminLTE/plugins/iCheck/square/_all.css | 620 + .../AdminLTE/plugins/iCheck/square/aero.css | 62 + .../AdminLTE/plugins/iCheck/square/aero.png | Bin 0 -> 2167 bytes .../plugins/iCheck/square/aero@2x.png | Bin 0 -> 4455 bytes .../AdminLTE/plugins/iCheck/square/blue.css | 62 + .../AdminLTE/plugins/iCheck/square/blue.png | Bin 0 -> 2185 bytes .../plugins/iCheck/square/blue@2x.png | Bin 0 -> 4485 bytes .../AdminLTE/plugins/iCheck/square/green.css | 62 + .../AdminLTE/plugins/iCheck/square/green.png | Bin 0 -> 2193 bytes .../plugins/iCheck/square/green@2x.png | Bin 0 -> 4498 bytes .../AdminLTE/plugins/iCheck/square/grey.css | 62 + .../AdminLTE/plugins/iCheck/square/grey.png | Bin 0 -> 2186 bytes .../plugins/iCheck/square/grey@2x.png | Bin 0 -> 4483 bytes .../AdminLTE/plugins/iCheck/square/orange.css | 62 + .../AdminLTE/plugins/iCheck/square/orange.png | Bin 0 -> 2181 bytes .../plugins/iCheck/square/orange@2x.png | Bin 0 -> 4474 bytes .../AdminLTE/plugins/iCheck/square/pink.css | 62 + .../AdminLTE/plugins/iCheck/square/pink.png | Bin 0 -> 2189 bytes .../plugins/iCheck/square/pink@2x.png | Bin 0 -> 4479 bytes .../AdminLTE/plugins/iCheck/square/purple.css | 62 + .../AdminLTE/plugins/iCheck/square/purple.png | Bin 0 -> 2188 bytes .../plugins/iCheck/square/purple@2x.png | Bin 0 -> 4501 bytes .../AdminLTE/plugins/iCheck/square/red.css | 62 + .../AdminLTE/plugins/iCheck/square/red.png | Bin 0 -> 2190 bytes .../AdminLTE/plugins/iCheck/square/red@2x.png | Bin 0 -> 4490 bytes .../AdminLTE/plugins/iCheck/square/square.css | 62 + .../AdminLTE/plugins/iCheck/square/square.png | Bin 0 -> 2175 bytes .../plugins/iCheck/square/square@2x.png | Bin 0 -> 4478 bytes .../AdminLTE/plugins/iCheck/square/yellow.css | 62 + .../AdminLTE/plugins/iCheck/square/yellow.png | Bin 0 -> 2131 bytes .../plugins/iCheck/square/yellow@2x.png | Bin 0 -> 4385 bytes .../input-mask/jquery.inputmask.bundle.min.js | 10 + .../input-mask/phone-codes/phone-be.json | 45 + .../input-mask/phone-codes/phone-codes.json | 294 + .../plugins/input-mask/phone-codes/readme.txt | 1 + .../ionslider/img/sprite-skin-flat.png | Bin 0 -> 352 bytes .../ionslider/img/sprite-skin-nice.png | Bin 0 -> 1022 bytes .../plugins/ionslider/ion.rangeSlider.css | 126 + .../plugins/ionslider/ion.rangeSlider.min.js | 22 + .../ionslider/ion.rangeSlider.skinFlat.css | 89 + .../ionslider/ion.rangeSlider.skinNice.css | 85 + .../plugins/jQuery/jQuery-2.1.4.min.js | 4 + .../AdminLTE/plugins/select2/i18n/ar.js | 3 + .../AdminLTE/plugins/select2/i18n/az.js | 3 + .../AdminLTE/plugins/select2/i18n/bg.js | 3 + .../AdminLTE/plugins/select2/i18n/ca.js | 3 + .../AdminLTE/plugins/select2/i18n/cs.js | 3 + .../AdminLTE/plugins/select2/i18n/da.js | 3 + .../AdminLTE/plugins/select2/i18n/de.js | 3 + .../AdminLTE/plugins/select2/i18n/el.js | 3 + .../AdminLTE/plugins/select2/i18n/en.js | 3 + .../AdminLTE/plugins/select2/i18n/es.js | 3 + .../AdminLTE/plugins/select2/i18n/et.js | 3 + .../AdminLTE/plugins/select2/i18n/eu.js | 3 + .../AdminLTE/plugins/select2/i18n/fa.js | 3 + .../AdminLTE/plugins/select2/i18n/fi.js | 3 + .../AdminLTE/plugins/select2/i18n/fr.js | 3 + .../AdminLTE/plugins/select2/i18n/gl.js | 3 + .../AdminLTE/plugins/select2/i18n/he.js | 3 + .../AdminLTE/plugins/select2/i18n/hi.js | 3 + .../AdminLTE/plugins/select2/i18n/hr.js | 3 + .../AdminLTE/plugins/select2/i18n/hu.js | 3 + .../AdminLTE/plugins/select2/i18n/id.js | 3 + .../AdminLTE/plugins/select2/i18n/is.js | 3 + .../AdminLTE/plugins/select2/i18n/it.js | 3 + .../AdminLTE/plugins/select2/i18n/ja.js | 3 + .../AdminLTE/plugins/select2/i18n/km.js | 3 + .../AdminLTE/plugins/select2/i18n/ko.js | 3 + .../AdminLTE/plugins/select2/i18n/lt.js | 3 + .../AdminLTE/plugins/select2/i18n/lv.js | 3 + .../AdminLTE/plugins/select2/i18n/mk.js | 3 + .../AdminLTE/plugins/select2/i18n/ms.js | 3 + .../AdminLTE/plugins/select2/i18n/nb.js | 3 + .../AdminLTE/plugins/select2/i18n/nl.js | 3 + .../AdminLTE/plugins/select2/i18n/pl.js | 3 + .../AdminLTE/plugins/select2/i18n/pt-BR.js | 3 + .../AdminLTE/plugins/select2/i18n/pt.js | 3 + .../AdminLTE/plugins/select2/i18n/ro.js | 3 + .../AdminLTE/plugins/select2/i18n/ru.js | 3 + .../AdminLTE/plugins/select2/i18n/sk.js | 3 + .../AdminLTE/plugins/select2/i18n/sr-Cyrl.js | 3 + .../AdminLTE/plugins/select2/i18n/sr.js | 3 + .../AdminLTE/plugins/select2/i18n/sv.js | 3 + .../AdminLTE/plugins/select2/i18n/th.js | 3 + .../AdminLTE/plugins/select2/i18n/tr.js | 3 + .../AdminLTE/plugins/select2/i18n/uk.js | 3 + .../AdminLTE/plugins/select2/i18n/vi.js | 3 + .../AdminLTE/plugins/select2/i18n/zh-CN.js | 3 + .../AdminLTE/plugins/select2/i18n/zh-TW.js | 3 + .../plugins/select2/select2.full.min.js | 3 + .../AdminLTE/plugins/select2/select2.min.css | 1 + .../slimScroll/jquery.slimscroll.min.js | 16 + .../dist/bootstrap-duallistbox.min.css | 10 + .../dist/jquery.bootstrap-duallistbox.min.js | 9 + .../bootstrap-fileinput/css/fileinput.min.css | 12 + .../bootstrap-fileinput/img/loading-sm.gif | Bin 0 -> 2670 bytes .../bootstrap-fileinput/img/loading.gif | Bin 0 -> 847 bytes .../bootstrap-fileinput/js/fileinput.min.js | 13 + .../js/plugins/canvas-to-blob.js | 95 + .../js/plugins/canvas-to-blob.min.js | 1 + .../bootstrap-fileinput/js/plugins/piexif.js | 2471 ++ .../js/plugins/piexif.min.js | 1 + .../bootstrap-fileinput/js/plugins/purify.js | 1009 + .../js/plugins/purify.min.js | 1 + .../js/plugins/sortable.js | 1590 + .../js/plugins/sortable.min.js | 1 + .../css/bootstrap3/bootstrap-switch.min.css | 22 + .../dist/js/bootstrap-switch.min.js | 22 + .../css/bootstrap-editable.css | 663 + .../bootstrap3-editable/img/clear.png | Bin 0 -> 509 bytes .../bootstrap3-editable/img/loading.gif | Bin 0 -> 1849 bytes .../js/bootstrap-editable.min.js | 7 + .../css/bootstrap-datetimepicker.min.css | 5 + .../build/js/bootstrap-datetimepicker.min.js | 9 + .../font-awesome/css/font-awesome.min.css | 4 + .../font-awesome/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../dist/css/fontawesome-iconpicker.min.css | 9 + .../dist/js/fontawesome-iconpicker.min.js | 1 + .../laravel-admin/google-fonts/fonts.css | 50 + .../fonts/Source-Sans-Pro-Bold.ttf | Bin 0 -> 34908 bytes .../fonts/Source-Sans-Pro-Bold.woff | Bin 0 -> 17264 bytes .../fonts/Source-Sans-Pro-Bold.woff2 | Bin 0 -> 13892 bytes .../fonts/Source-Sans-Pro-Italic.ttf | Bin 0 -> 33864 bytes .../fonts/Source-Sans-Pro-Italic.woff | Bin 0 -> 17288 bytes .../fonts/Source-Sans-Pro-Italic.woff2 | Bin 0 -> 13980 bytes .../fonts/Source-Sans-Pro-Light-Italic.ttf | Bin 0 -> 33996 bytes .../fonts/Source-Sans-Pro-Light-Italic.woff | Bin 0 -> 17304 bytes .../fonts/Source-Sans-Pro-Light-Italic.woff2 | Bin 0 -> 13772 bytes .../fonts/Source-Sans-Pro-Light.ttf | Bin 0 -> 35368 bytes .../fonts/Source-Sans-Pro-Light.woff | Bin 0 -> 17540 bytes .../fonts/Source-Sans-Pro-Light.woff2 | Bin 0 -> 14308 bytes .../fonts/Source-Sans-Pro-Semibold-Italic.ttf | Bin 0 -> 33592 bytes .../Source-Sans-Pro-Semibold-Italic.woff | Bin 0 -> 17168 bytes .../Source-Sans-Pro-Semibold-Italic.woff2 | Bin 0 -> 13716 bytes .../fonts/Source-Sans-Pro-Semibold.ttf | Bin 0 -> 34808 bytes .../fonts/Source-Sans-Pro-Semibold.woff | Bin 0 -> 17380 bytes .../fonts/Source-Sans-Pro-Semibold.woff2 | Bin 0 -> 13992 bytes .../google-fonts/fonts/Source-Sans-Pro.eot | Bin 0 -> 16229 bytes .../google-fonts/fonts/Source-Sans-Pro.svg | 345 + .../google-fonts/fonts/Source-Sans-Pro.ttf | Bin 0 -> 35064 bytes .../google-fonts/fonts/Source-Sans-Pro.woff | Bin 0 -> 17500 bytes .../google-fonts/fonts/Source-Sans-Pro.woff2 | Bin 0 -> 14308 bytes .../laravel-admin/jquery-pjax/jquery.pjax.js | 950 + .../laravel-admin/laravel-admin.css | 85 + .../laravel-admin/laravel-admin.js | 198 + .../moment/min/moment-with-locales.min.js | 80 + .../laravel-admin/nestable/jquery.nestable.js | 484 + .../laravel-admin/nestable/nestable.css | 34 + .../laravel-admin/nprogress/nprogress.css | 74 + .../laravel-admin/nprogress/nprogress.js | 476 + .../number-input/bootstrap-number-input.js | 88 + .../sweetalert2/dist/sweetalert2.css | 1145 + .../sweetalert2/dist/sweetalert2.min.js | 1 + .../laravel-admin/toastr/build/toastr.min.css | 1 + .../laravel-admin/toastr/build/toastr.min.js | 2 + .../vendor/ueditor/dialogs/anchor/anchor.html | 40 + .../ueditor/dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../ueditor/dialogs/attachment/attachment.js | 754 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 0 -> 949 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 0 -> 950 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 0 -> 986 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 0 -> 996 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 0 -> 970 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 0 -> 1005 bytes .../dialogs/attachment/images/alignicon.gif | Bin 0 -> 1051 bytes .../dialogs/attachment/images/alignicon.png | Bin 0 -> 3714 bytes .../ueditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/icons.png | Bin 0 -> 2678 bytes .../dialogs/attachment/images/image.png | Bin 0 -> 1672 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../dialogs/attachment/images/success.png | Bin 0 -> 1621 bytes .../ueditor/dialogs/background/background.css | 94 + .../dialogs/background/background.html | 56 + .../ueditor/dialogs/background/background.js | 376 + .../ueditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes .../ueditor/dialogs/charts/chart.config.js | 65 + .../vendor/ueditor/dialogs/charts/charts.css | 165 + .../vendor/ueditor/dialogs/charts/charts.html | 89 + .../vendor/ueditor/dialogs/charts/charts.js | 519 + .../ueditor/dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../ueditor/dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../ueditor/dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../ueditor/dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../ueditor/dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../ueditor/dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes .../ueditor/dialogs/emotion/emotion.css | 43 + .../ueditor/dialogs/emotion/emotion.html | 54 + .../vendor/ueditor/dialogs/emotion/emotion.js | 186 + .../ueditor/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../ueditor/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../ueditor/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../ueditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../ueditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../ueditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../ueditor/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes public/vendor/ueditor/dialogs/gmap/gmap.html | 89 + public/vendor/ueditor/dialogs/help/help.css | 7 + public/vendor/ueditor/dialogs/help/help.html | 82 + public/vendor/ueditor/dialogs/help/help.js | 56 + public/vendor/ueditor/dialogs/image/image.css | 894 + .../vendor/ueditor/dialogs/image/image.html | 120 + public/vendor/ueditor/dialogs/image/image.js | 1139 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes .../ueditor/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes .../ueditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../ueditor/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes .../ueditor/dialogs/image/images/image.png | Bin 0 -> 1672 bytes .../ueditor/dialogs/image/images/progress.png | Bin 0 -> 1269 bytes .../ueditor/dialogs/image/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../dialogs/insertframe/insertframe.html | 98 + public/vendor/ueditor/dialogs/internal.js | 81 + public/vendor/ueditor/dialogs/link/link.html | 126 + public/vendor/ueditor/dialogs/map/map.html | 135 + public/vendor/ueditor/dialogs/map/show.html | 118 + public/vendor/ueditor/dialogs/music/music.css | 30 + .../vendor/ueditor/dialogs/music/music.html | 32 + public/vendor/ueditor/dialogs/music/music.js | 192 + .../ueditor/dialogs/preview/preview.html | 40 + .../ueditor/dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../ueditor/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../ueditor/dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../ueditor/dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../ueditor/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../ueditor/dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../ueditor/dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes .../ueditor/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../ueditor/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../ueditor/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../ueditor/dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes .../ueditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../ueditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../ueditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes .../vendor/ueditor/dialogs/scrawl/scrawl.css | 72 + .../vendor/ueditor/dialogs/scrawl/scrawl.html | 95 + .../vendor/ueditor/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + .../ueditor/dialogs/spechars/spechars.html | 21 + .../ueditor/dialogs/spechars/spechars.js | 57 + .../vendor/ueditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes .../ueditor/dialogs/table/edittable.css | 84 + .../ueditor/dialogs/table/edittable.html | 64 + .../vendor/ueditor/dialogs/table/edittable.js | 237 + .../vendor/ueditor/dialogs/table/edittd.html | 61 + .../vendor/ueditor/dialogs/table/edittip.html | 33 + .../vendor/ueditor/dialogs/template/config.js | 42 + .../ueditor/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../ueditor/dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../ueditor/dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../ueditor/dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../ueditor/dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../ueditor/dialogs/template/images/pre4.png | Bin 0 -> 393 bytes .../ueditor/dialogs/template/template.css | 18 + .../ueditor/dialogs/template/template.html | 26 + .../ueditor/dialogs/template/template.js | 53 + .../ueditor/dialogs/video/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/video/images/file-icons.png | Bin 0 -> 44070 bytes .../ueditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../ueditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../ueditor/dialogs/video/images/image.png | Bin 0 -> 1672 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../ueditor/dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../ueditor/dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/video/images/success.png | Bin 0 -> 1621 bytes public/vendor/ueditor/dialogs/video/video.css | 635 + .../vendor/ueditor/dialogs/video/video.html | 86 + public/vendor/ueditor/dialogs/video/video.js | 789 + .../vendor/ueditor/dialogs/webapp/webapp.html | 53 + .../dialogs/wordimage/fClipboard_ueditor.swf | Bin 0 -> 1908 bytes .../dialogs/wordimage/imageUploader.swf | Bin 0 -> 62857 bytes .../ueditor/dialogs/wordimage/tangram.js | 1495 + .../ueditor/dialogs/wordimage/wordimage.html | 111 + .../ueditor/dialogs/wordimage/wordimage.js | 157 + public/vendor/ueditor/index.html | 175 + public/vendor/ueditor/lang/en/en.js | 684 + .../ueditor/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes .../ueditor/lang/en/images/background.png | Bin 0 -> 3854 bytes .../vendor/ueditor/lang/en/images/button.png | Bin 0 -> 4929 bytes public/vendor/ueditor/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../ueditor/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../ueditor/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../ueditor/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../ueditor/lang/en/images/localimage.png | Bin 0 -> 3083 bytes .../vendor/ueditor/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes .../vendor/ueditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../vendor/ueditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../ueditor/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../ueditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../ueditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes public/vendor/ueditor/lang/zh-cn/zh-cn.js | 669 + .../ueditor/themes/default/css/ueditor.css | 1903 + .../themes/default/css/ueditor.min.css | 8 + .../ueditor/themes/default/dialogbase.css | 100 + .../ueditor/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../ueditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../themes/default/images/cancelbutton.gif | Bin 0 -> 1227 bytes .../ueditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../themes/default/images/cursor_v.gif | Bin 0 -> 370 bytes .../themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../themes/default/images/highlighted.gif | Bin 0 -> 111 bytes .../themes/default/images/icons-all.gif | Bin 0 -> 3750 bytes .../ueditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../ueditor/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../ueditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../ueditor/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/pagebreak.gif | Bin 0 -> 54 bytes .../ueditor/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../ueditor/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../themes/default/images/toolbar_bg.png | Bin 0 -> 170 bytes .../themes/default/images/unhighlighted.gif | Bin 0 -> 111 bytes .../ueditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes .../ueditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes public/vendor/ueditor/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 ++ .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 +++++++++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 ++ .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + .../ueditor/third-party/jquery-1.10.2.js | 9789 +++++ .../ueditor/third-party/jquery-1.10.2.min.js | 6 + .../ueditor/third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../ueditor/third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../ueditor/third-party/video-js/font/vjs.svg | 65 + .../ueditor/third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../ueditor/third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../ueditor/third-party/video-js/video-js.swf | Bin 0 -> 16236 bytes .../ueditor/third-party/video-js/video.dev.js | 7108 ++++ .../ueditor/third-party/video-js/video.js | 129 + .../third-party/webuploader/Uploader.swf | Bin 0 -> 49382 bytes .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 +++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 +++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 +++ .../webuploader.withoutimage.min.js | 2 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + .../zeroclipboard/ZeroClipboard.swf | Bin 0 -> 3933 bytes public/vendor/ueditor/ueditor.all.js | 29431 ++++++++++++++++ public/vendor/ueditor/ueditor.all.min.js | 709 + public/vendor/ueditor/ueditor.config.js | 413 + public/vendor/ueditor/ueditor.parse.js | 1022 + public/vendor/ueditor/ueditor.parse.min.js | 28 + public/web.config | 28 + resources/js/app.js | 1 + resources/js/bootstrap.js | 28 + resources/lang/ar/admin.php | 105 + resources/lang/az/admin.php | 102 + resources/lang/en/admin.php | 107 + resources/lang/en/auth.php | 19 + resources/lang/en/pagination.php | 19 + resources/lang/en/passwords.php | 22 + resources/lang/en/validation.php | 151 + resources/lang/es/admin.php | 90 + resources/lang/fa/admin.php | 102 + resources/lang/fr/admin.php | 102 + resources/lang/he/admin.php | 79 + resources/lang/id/admin.php | 106 + resources/lang/ja/admin.php | 102 + resources/lang/ko/admin.php | 104 + resources/lang/ms/admin.php | 102 + resources/lang/nl/admin.php | 107 + resources/lang/pl/admin.php | 78 + resources/lang/pt-BR/admin.php | 102 + resources/lang/pt/admin.php | 102 + resources/lang/ru/admin.php | 107 + resources/lang/tr/admin.php | 107 + resources/lang/uk/admin.php | 106 + resources/lang/ur/admin.php | 107 + resources/lang/vendor/ueditor/en/upload.php | 34 + .../lang/vendor/ueditor/zh-CN/upload.php | 31 + .../lang/vendor/ueditor/zh-TW/upload.php | 33 + resources/lang/zh-CN/admin.php | 106 + resources/lang/zh-TW/admin.php | 105 + resources/sass/app.scss | 1 + resources/views/admin/vote/detail.blade.php | 20 + resources/views/auth/login.blade.php | 33 + resources/views/index/index.blade.php | 17 + resources/views/index/vote.blade.php | 30 + resources/views/layouts.blade.php | 18 + .../views/vendor/ueditor/assets.blade.php | 7 + routes/api.php | 2 + routes/channels.php | 2 + routes/console.php | 1 + routes/web.php | 13 + server.php | 21 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 8 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + webpack.mix.js | 15 + 766 files changed, 201246 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .styleci.yml create mode 100644 README.md create mode 100644 VUE-WEB/lions-agent/.browserslistrc create mode 100644 VUE-WEB/lions-agent/.eslintrc.js create mode 100644 VUE-WEB/lions-agent/.gitignore create mode 100644 VUE-WEB/lions-agent/README.md create mode 100644 VUE-WEB/lions-agent/babel.config.js create mode 100644 VUE-WEB/lions-agent/package-lock.json create mode 100644 VUE-WEB/lions-agent/package.json create mode 100644 VUE-WEB/lions-agent/public/favicon.ico create mode 100644 VUE-WEB/lions-agent/public/index.html create mode 100644 VUE-WEB/lions-agent/src/App.vue create mode 100644 VUE-WEB/lions-agent/src/api/axios.js create mode 100644 VUE-WEB/lions-agent/src/api/index.js create mode 100644 VUE-WEB/lions-agent/src/api/interfaces/auth.js create mode 100644 VUE-WEB/lions-agent/src/api/interfaces/index.js create mode 100644 VUE-WEB/lions-agent/src/assets/logo.png create mode 100644 VUE-WEB/lions-agent/src/main.js create mode 100644 VUE-WEB/lions-agent/src/pages/auth/login.vue create mode 100644 VUE-WEB/lions-agent/src/pages/auth/verify.vue create mode 100644 VUE-WEB/lions-agent/src/pages/index/index.vue create mode 100644 VUE-WEB/lions-agent/src/pages/layouts/common.vue create mode 100644 VUE-WEB/lions-agent/src/plugins/toast/index.js create mode 100644 VUE-WEB/lions-agent/src/plugins/toast/toast.vue create mode 100644 VUE-WEB/lions-agent/src/plugins/utils.js create mode 100644 VUE-WEB/lions-agent/src/plugins/vuetify.js create mode 100644 VUE-WEB/lions-agent/src/router/index.js create mode 100644 VUE-WEB/lions-agent/src/store/index.js create mode 100644 VUE-WEB/lions-web/.browserslistrc create mode 100644 VUE-WEB/lions-web/.eslintrc.js create mode 100644 VUE-WEB/lions-web/.gitignore create mode 100644 VUE-WEB/lions-web/README.md create mode 100644 VUE-WEB/lions-web/babel.config.js create mode 100644 VUE-WEB/lions-web/package-lock.json create mode 100644 VUE-WEB/lions-web/package.json create mode 100644 VUE-WEB/lions-web/public/favicon.ico create mode 100644 VUE-WEB/lions-web/public/index.html create mode 100644 VUE-WEB/lions-web/src/App.vue create mode 100644 VUE-WEB/lions-web/src/api/axios.js create mode 100644 VUE-WEB/lions-web/src/api/index.js create mode 100644 VUE-WEB/lions-web/src/api/interfaces/article.js create mode 100644 VUE-WEB/lions-web/src/api/interfaces/auth.js create mode 100644 VUE-WEB/lions-web/src/api/interfaces/index.js create mode 100644 VUE-WEB/lions-web/src/api/interfaces/vote.js create mode 100644 VUE-WEB/lions-web/src/assets/back.png create mode 100644 VUE-WEB/lions-web/src/assets/back_1.png create mode 100644 VUE-WEB/lions-web/src/assets/back_2.png create mode 100644 VUE-WEB/lions-web/src/assets/logo.png create mode 100644 VUE-WEB/lions-web/src/main.js create mode 100644 VUE-WEB/lions-web/src/pages/auth/login.vue create mode 100644 VUE-WEB/lions-web/src/pages/auth/verify.vue create mode 100644 VUE-WEB/lions-web/src/pages/files/index.vue create mode 100644 VUE-WEB/lions-web/src/pages/files/show.vue create mode 100644 VUE-WEB/lions-web/src/pages/index/index.vue create mode 100644 VUE-WEB/lions-web/src/pages/layouts/common.vue create mode 100644 VUE-WEB/lions-web/src/pages/vote/diff.vue create mode 100644 VUE-WEB/lions-web/src/pages/vote/equal.vue create mode 100644 VUE-WEB/lions-web/src/pages/vote/index.vue create mode 100644 VUE-WEB/lions-web/src/plugins/toast/index.js create mode 100644 VUE-WEB/lions-web/src/plugins/toast/toast.vue create mode 100644 VUE-WEB/lions-web/src/plugins/utils.js create mode 100644 VUE-WEB/lions-web/src/plugins/vuetify.js create mode 100644 VUE-WEB/lions-web/src/router/index.js create mode 100644 VUE-WEB/lions-web/src/store/index.js create mode 100644 app/Admin/Actions/CleanData.php create mode 100644 app/Admin/Actions/DestroyData.php create mode 100644 app/Admin/Actions/ExportCha.php create mode 100644 app/Admin/Actions/ExportDeng.php create mode 100644 app/Admin/Actions/Replicate.php create mode 100644 app/Admin/Actions/UserImport.php create mode 100644 app/Admin/Controllers/ArticleController.php create mode 100644 app/Admin/Controllers/AuthController.php create mode 100644 app/Admin/Controllers/HomeController.php create mode 100644 app/Admin/Controllers/ItemController.php create mode 100644 app/Admin/Controllers/UserController.php create mode 100644 app/Admin/Controllers/VoteController.php create mode 100644 app/Admin/bootstrap.php create mode 100644 app/Admin/routes.php create mode 100644 app/Api/Controllers/ArticleController.php create mode 100644 app/Api/Controllers/AuthController.php create mode 100644 app/Api/Controllers/Controller.php create mode 100644 app/Api/Controllers/IndexController.php create mode 100644 app/Api/Controllers/VoteController.php create mode 100644 app/Api/Resources/ItemResource.php create mode 100644 app/Api/bootstrap.php create mode 100644 app/Api/routes.php create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Http/Controllers/AuthController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/IndexController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/Authenticate.php create mode 100644 app/Http/Middleware/CheckForMaintenanceMode.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Models/Article.php create mode 100644 app/Models/ArticleAudit.php create mode 100644 app/Models/Item.php create mode 100644 app/Models/ItemLog.php create mode 100644 app/Models/Model.php create mode 100644 app/Models/User.php create mode 100644 app/Models/Vote.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/admin.php create mode 100644 config/api.php create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/hashing.php create mode 100644 config/jwt.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/sms.php create mode 100644 config/ueditor.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/LionsVote.sql create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 database/migrations/2016_01_04_173148_create_admin_tables.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2020_05_01_235031_create_items_table.php create mode 100644 database/migrations/2020_05_01_235326_create_item_logs_table.php create mode 100644 database/seeds/DatabaseSeeder.php create mode 100644 database/vote.sql create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 public/static/css/mzui.css create mode 100644 public/static/css/mzui.min.css create mode 100644 public/static/fonts/zenicon.eot create mode 100644 public/static/fonts/zenicon.svg create mode 100644 public/static/fonts/zenicon.ttf create mode 100644 public/static/fonts/zenicon.woff create mode 100644 public/static/js/mzui.js create mode 100644 public/static/js/mzui.min.js create mode 100644 public/static/lib/jquery/jquery-3.2.1.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/js/bootstrap.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/AdminLTE.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/_all-skins.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.jpg create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.png create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/default-50x50.gif create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/icons.png create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/js/app.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/slider.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/alpha-horizontal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/alpha.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/hue-horizontal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/hue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/saturation.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/icheck.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/jquery.inputmask.bundle.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/phone-be.json create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/phone-codes.json create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/readme.txt create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/img/sprite-skin-flat.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/img/sprite-skin-nice.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.skinFlat.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.skinNice.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/jQuery/jQuery-2.1.4.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ar.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/az.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/bg.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ca.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/cs.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/da.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/de.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/el.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/en.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/es.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/et.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/eu.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fa.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/gl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/he.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hu.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/id.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/is.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/it.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ja.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/km.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ko.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lt.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lv.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/mk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ms.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/nb.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/nl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pt-BR.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pt.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ro.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ru.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr-Cyrl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sv.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/th.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/tr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/uk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/vi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/zh-CN.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/zh-TW.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/select2.full.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/select2.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/slimScroll/jquery.slimscroll.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/css/fileinput.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/img/loading-sm.gif create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/img/loading.gif create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/fileinput.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/canvas-to-blob.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/canvas-to-blob.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-switch/dist/js/bootstrap-switch.min.js create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/css/bootstrap-editable.css create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/img/clear.png create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/img/loading.gif create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/js/bootstrap-editable.min.js create mode 100644 public/vendor/laravel-admin/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css create mode 100644 public/vendor/laravel-admin/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js create mode 100644 public/vendor/laravel-admin/font-awesome/css/font-awesome.min.css create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/FontAwesome.otf create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 public/vendor/laravel-admin/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.min.css create mode 100644 public/vendor/laravel-admin/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.min.js create mode 100644 public/vendor/laravel-admin/google-fonts/fonts.css create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.eot create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.svg create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.woff2 create mode 100644 public/vendor/laravel-admin/jquery-pjax/jquery.pjax.js create mode 100644 public/vendor/laravel-admin/laravel-admin/laravel-admin.css create mode 100644 public/vendor/laravel-admin/laravel-admin/laravel-admin.js create mode 100644 public/vendor/laravel-admin/moment/min/moment-with-locales.min.js create mode 100644 public/vendor/laravel-admin/nestable/jquery.nestable.js create mode 100644 public/vendor/laravel-admin/nestable/nestable.css create mode 100644 public/vendor/laravel-admin/nprogress/nprogress.css create mode 100644 public/vendor/laravel-admin/nprogress/nprogress.js create mode 100644 public/vendor/laravel-admin/number-input/bootstrap-number-input.js create mode 100644 public/vendor/laravel-admin/sweetalert2/dist/sweetalert2.css create mode 100644 public/vendor/laravel-admin/sweetalert2/dist/sweetalert2.min.js create mode 100644 public/vendor/laravel-admin/toastr/build/toastr.min.css create mode 100644 public/vendor/laravel-admin/toastr/build/toastr.min.js create mode 100644 public/vendor/ueditor/dialogs/anchor/anchor.html create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.css create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.html create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.js create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/alignicon.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/alignicon.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/file-icons.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/file-icons.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/image.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/success.png create mode 100644 public/vendor/ueditor/dialogs/background/background.css create mode 100644 public/vendor/ueditor/dialogs/background/background.html create mode 100644 public/vendor/ueditor/dialogs/background/background.js create mode 100644 public/vendor/ueditor/dialogs/background/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/background/images/success.png create mode 100644 public/vendor/ueditor/dialogs/charts/chart.config.js create mode 100644 public/vendor/ueditor/dialogs/charts/charts.css create mode 100644 public/vendor/ueditor/dialogs/charts/charts.html create mode 100644 public/vendor/ueditor/dialogs/charts/charts.js create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts0.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts1.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts2.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts3.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts4.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts5.png create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.css create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.html create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.js create mode 100644 public/vendor/ueditor/dialogs/emotion/images/0.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/bface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/cface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/fface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/jxface2.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 public/vendor/ueditor/dialogs/emotion/images/tface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/wface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/yface.gif create mode 100644 public/vendor/ueditor/dialogs/gmap/gmap.html create mode 100644 public/vendor/ueditor/dialogs/help/help.css create mode 100644 public/vendor/ueditor/dialogs/help/help.html create mode 100644 public/vendor/ueditor/dialogs/help/help.js create mode 100644 public/vendor/ueditor/dialogs/image/image.css create mode 100644 public/vendor/ueditor/dialogs/image/image.html create mode 100644 public/vendor/ueditor/dialogs/image/image.js create mode 100644 public/vendor/ueditor/dialogs/image/images/alignicon.jpg create mode 100644 public/vendor/ueditor/dialogs/image/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/image/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/image/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/image/images/image.png create mode 100644 public/vendor/ueditor/dialogs/image/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/image/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/image/images/success.png create mode 100644 public/vendor/ueditor/dialogs/insertframe/insertframe.html create mode 100644 public/vendor/ueditor/dialogs/internal.js create mode 100644 public/vendor/ueditor/dialogs/link/link.html create mode 100644 public/vendor/ueditor/dialogs/map/map.html create mode 100644 public/vendor/ueditor/dialogs/map/show.html create mode 100644 public/vendor/ueditor/dialogs/music/music.css create mode 100644 public/vendor/ueditor/dialogs/music/music.html create mode 100644 public/vendor/ueditor/dialogs/music/music.js create mode 100644 public/vendor/ueditor/dialogs/preview/preview.html create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/addimg.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/brush.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/delimg.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/delimgH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/empty.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/emptyH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/eraser.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/redo.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/redoH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/scale.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/scaleH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/size.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/undo.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/undoH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.css create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.html create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.js create mode 100644 public/vendor/ueditor/dialogs/searchreplace/searchreplace.html create mode 100644 public/vendor/ueditor/dialogs/searchreplace/searchreplace.js create mode 100644 public/vendor/ueditor/dialogs/snapscreen/snapscreen.html create mode 100644 public/vendor/ueditor/dialogs/spechars/spechars.html create mode 100644 public/vendor/ueditor/dialogs/spechars/spechars.js create mode 100644 public/vendor/ueditor/dialogs/table/dragicon.png create mode 100644 public/vendor/ueditor/dialogs/table/edittable.css create mode 100644 public/vendor/ueditor/dialogs/table/edittable.html create mode 100644 public/vendor/ueditor/dialogs/table/edittable.js create mode 100644 public/vendor/ueditor/dialogs/table/edittd.html create mode 100644 public/vendor/ueditor/dialogs/table/edittip.html create mode 100644 public/vendor/ueditor/dialogs/template/config.js create mode 100644 public/vendor/ueditor/dialogs/template/images/bg.gif create mode 100644 public/vendor/ueditor/dialogs/template/images/pre0.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre1.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre2.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre3.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre4.png create mode 100644 public/vendor/ueditor/dialogs/template/template.css create mode 100644 public/vendor/ueditor/dialogs/template/template.html create mode 100644 public/vendor/ueditor/dialogs/template/template.js create mode 100644 public/vendor/ueditor/dialogs/video/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/video/images/center_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/file-icons.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/file-icons.png create mode 100644 public/vendor/ueditor/dialogs/video/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/video/images/image.png create mode 100644 public/vendor/ueditor/dialogs/video/images/left_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/none_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/video/images/right_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/success.png create mode 100644 public/vendor/ueditor/dialogs/video/video.css create mode 100644 public/vendor/ueditor/dialogs/video/video.html create mode 100644 public/vendor/ueditor/dialogs/video/video.js create mode 100644 public/vendor/ueditor/dialogs/webapp/webapp.html create mode 100644 public/vendor/ueditor/dialogs/wordimage/fClipboard_ueditor.swf create mode 100644 public/vendor/ueditor/dialogs/wordimage/imageUploader.swf create mode 100644 public/vendor/ueditor/dialogs/wordimage/tangram.js create mode 100644 public/vendor/ueditor/dialogs/wordimage/wordimage.html create mode 100644 public/vendor/ueditor/dialogs/wordimage/wordimage.js create mode 100644 public/vendor/ueditor/index.html create mode 100644 public/vendor/ueditor/lang/en/en.js create mode 100644 public/vendor/ueditor/lang/en/images/addimage.png create mode 100644 public/vendor/ueditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 public/vendor/ueditor/lang/en/images/alldeletebtnupskin.png create mode 100644 public/vendor/ueditor/lang/en/images/background.png create mode 100644 public/vendor/ueditor/lang/en/images/button.png create mode 100644 public/vendor/ueditor/lang/en/images/copy.png create mode 100644 public/vendor/ueditor/lang/en/images/deletedisable.png create mode 100644 public/vendor/ueditor/lang/en/images/deleteenable.png create mode 100644 public/vendor/ueditor/lang/en/images/listbackground.png create mode 100644 public/vendor/ueditor/lang/en/images/localimage.png create mode 100644 public/vendor/ueditor/lang/en/images/music.png create mode 100644 public/vendor/ueditor/lang/en/images/rotateleftdisable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotateleftenable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotaterightdisable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotaterightenable.png create mode 100644 public/vendor/ueditor/lang/en/images/upload.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/copy.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/localimage.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/music.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/upload.png create mode 100644 public/vendor/ueditor/lang/zh-cn/zh-cn.js create mode 100644 public/vendor/ueditor/themes/default/css/ueditor.css create mode 100644 public/vendor/ueditor/themes/default/css/ueditor.min.css create mode 100644 public/vendor/ueditor/themes/default/dialogbase.css create mode 100644 public/vendor/ueditor/themes/default/images/anchor.gif create mode 100644 public/vendor/ueditor/themes/default/images/arrow.png create mode 100644 public/vendor/ueditor/themes/default/images/arrow_down.png create mode 100644 public/vendor/ueditor/themes/default/images/arrow_up.png create mode 100644 public/vendor/ueditor/themes/default/images/button-bg.gif create mode 100644 public/vendor/ueditor/themes/default/images/cancelbutton.gif create mode 100644 public/vendor/ueditor/themes/default/images/charts.png create mode 100644 public/vendor/ueditor/themes/default/images/cursor_h.gif create mode 100644 public/vendor/ueditor/themes/default/images/cursor_h.png create mode 100644 public/vendor/ueditor/themes/default/images/cursor_v.gif create mode 100644 public/vendor/ueditor/themes/default/images/cursor_v.png create mode 100644 public/vendor/ueditor/themes/default/images/dialog-title-bg.png create mode 100644 public/vendor/ueditor/themes/default/images/filescan.png create mode 100644 public/vendor/ueditor/themes/default/images/highlighted.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons-all.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons.png create mode 100644 public/vendor/ueditor/themes/default/images/loaderror.png create mode 100644 public/vendor/ueditor/themes/default/images/loading.gif create mode 100644 public/vendor/ueditor/themes/default/images/lock.gif create mode 100644 public/vendor/ueditor/themes/default/images/neweditor-tab-bg.png create mode 100644 public/vendor/ueditor/themes/default/images/pagebreak.gif create mode 100644 public/vendor/ueditor/themes/default/images/scale.png create mode 100644 public/vendor/ueditor/themes/default/images/sortable.png create mode 100644 public/vendor/ueditor/themes/default/images/spacer.gif create mode 100644 public/vendor/ueditor/themes/default/images/sparator_v.png create mode 100644 public/vendor/ueditor/themes/default/images/table-cell-align.png create mode 100644 public/vendor/ueditor/themes/default/images/tangram-colorpicker.png create mode 100644 public/vendor/ueditor/themes/default/images/toolbar_bg.png create mode 100644 public/vendor/ueditor/themes/default/images/unhighlighted.gif create mode 100644 public/vendor/ueditor/themes/default/images/upload.png create mode 100644 public/vendor/ueditor/themes/default/images/videologo.gif create mode 100644 public/vendor/ueditor/themes/default/images/word.gif create mode 100644 public/vendor/ueditor/themes/default/images/wordpaste.png create mode 100644 public/vendor/ueditor/themes/iframe.css create mode 100644 public/vendor/ueditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 public/vendor/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 public/vendor/ueditor/third-party/codemirror/codemirror.css create mode 100644 public/vendor/ueditor/third-party/codemirror/codemirror.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/standalone-framework.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts-more.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts-more.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/annotations.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/annotations.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/canvas-tools.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/data.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/data.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/drilldown.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/drilldown.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/exporting.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/exporting.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/funnel.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/funnel.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/heatmap.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/heatmap.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/map.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/map.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/no-data-to-display.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/dark-blue.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/dark-green.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/gray.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/grid.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/skies.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.min.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.min.map create mode 100644 public/vendor/ueditor/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.eot create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.svg create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.ttf create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.woff create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.css create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.min.css create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.swf create mode 100644 public/vendor/ueditor/third-party/video-js/video.dev.js create mode 100644 public/vendor/ueditor/third-party/video-js/video.js create mode 100644 public/vendor/ueditor/third-party/webuploader/Uploader.swf create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.css create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.custom.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.html5only.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.swf create mode 100644 public/vendor/ueditor/ueditor.all.js create mode 100644 public/vendor/ueditor/ueditor.all.min.js create mode 100644 public/vendor/ueditor/ueditor.config.js create mode 100644 public/vendor/ueditor/ueditor.parse.js create mode 100644 public/vendor/ueditor/ueditor.parse.min.js create mode 100644 public/web.config create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/lang/ar/admin.php create mode 100644 resources/lang/az/admin.php create mode 100644 resources/lang/en/admin.php create mode 100644 resources/lang/en/auth.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/validation.php create mode 100644 resources/lang/es/admin.php create mode 100644 resources/lang/fa/admin.php create mode 100644 resources/lang/fr/admin.php create mode 100644 resources/lang/he/admin.php create mode 100644 resources/lang/id/admin.php create mode 100644 resources/lang/ja/admin.php create mode 100644 resources/lang/ko/admin.php create mode 100644 resources/lang/ms/admin.php create mode 100644 resources/lang/nl/admin.php create mode 100644 resources/lang/pl/admin.php create mode 100644 resources/lang/pt-BR/admin.php create mode 100644 resources/lang/pt/admin.php create mode 100644 resources/lang/ru/admin.php create mode 100644 resources/lang/tr/admin.php create mode 100644 resources/lang/uk/admin.php create mode 100644 resources/lang/ur/admin.php create mode 100644 resources/lang/vendor/ueditor/en/upload.php create mode 100644 resources/lang/vendor/ueditor/zh-CN/upload.php create mode 100644 resources/lang/vendor/ueditor/zh-TW/upload.php create mode 100644 resources/lang/zh-CN/admin.php create mode 100644 resources/lang/zh-TW/admin.php create mode 100644 resources/sass/app.scss create mode 100644 resources/views/admin/vote/detail.blade.php create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/index/index.blade.php create mode 100644 resources/views/index/vote.blade.php create mode 100644 resources/views/layouts.blade.php create mode 100644 resources/views/vendor/ueditor/assets.blade.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 server.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 webpack.mix.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6537ca4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b53f87e --- /dev/null +++ b/.env.example @@ -0,0 +1,51 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY=base64:umLkXIEpRxIKX78YG1gu3kr1OcMJ7+kFq2G87/paE2E= +APP_DEBUG=false +APP_URL=http:// + +LOG_CHANNEL=stack + +FILESYSTEM_DRIVER=public + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE= +DB_USERNAME= +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=redis +QUEUE_CONNECTION=sync +SESSION_DRIVER=redis +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +JWT_TTL=102400 +JWT_SECRET=92mEtw8IgQ9yARXPs0Doy7L8DRvPHclm4YZB4tSq3uCYtNURxy3X3Q6YRh8MUEcG diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a4cf782 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +/tests/ +.idea diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..1db61d9 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - unused_use + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/README.md b/README.md new file mode 100644 index 0000000..4c866c8 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# 狮子会的现场投票系统 diff --git a/VUE-WEB/lions-agent/.browserslistrc b/VUE-WEB/lions-agent/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/VUE-WEB/lions-agent/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/VUE-WEB/lions-agent/.eslintrc.js b/VUE-WEB/lions-agent/.eslintrc.js new file mode 100644 index 0000000..8ad90db --- /dev/null +++ b/VUE-WEB/lions-agent/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/essential', + 'eslint:recommended' + ], + parserOptions: { + parser: 'babel-eslint' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' + } +} diff --git a/VUE-WEB/lions-agent/.gitignore b/VUE-WEB/lions-agent/.gitignore new file mode 100644 index 0000000..a0dddc6 --- /dev/null +++ b/VUE-WEB/lions-agent/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/VUE-WEB/lions-agent/README.md b/VUE-WEB/lions-agent/README.md new file mode 100644 index 0000000..e8706b4 --- /dev/null +++ b/VUE-WEB/lions-agent/README.md @@ -0,0 +1,29 @@ +# lions + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Run your tests +``` +npm run test +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/VUE-WEB/lions-agent/babel.config.js b/VUE-WEB/lions-agent/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/VUE-WEB/lions-agent/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/VUE-WEB/lions-agent/package-lock.json b/VUE-WEB/lions-agent/package-lock.json new file mode 100644 index 0000000..2913595 --- /dev/null +++ b/VUE-WEB/lions-agent/package-lock.json @@ -0,0 +1,11975 @@ +{ + "name": "lions-agent", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.9.6.tgz", + "integrity": "sha1-P2BMQOQgExr/5vLIBS6aJ1riBJs=", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.9.6.tgz", + "integrity": "sha1-2aofWAq/OyKG70C2kE05CQTGM3Y=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.9.6.tgz?cache=0&sync_timestamp=1588185669310&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.9.6.tgz", + "integrity": "sha1-VAjIKsXemM2g132BJOmfofIXCkM=", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha1-YLwLxlf2Ogkk/5pLSgskoTz03u4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha1-yECXpCegYaxWocMOv1S3si0kFQM=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha1-HgW3zMnTjS+LQLRYs4CgTc+t04o=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.9.6.tgz?cache=0&sync_timestamp=1588185668472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.9.6.tgz", + "integrity": "sha1-llyLCp8FGAH9nTs3LKDM8gCpCJc=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.9.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha1-XYQYC1iPVgt4ZO+u6okkPlgxIIc=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-define-map%2Fdownload%2F%40babel%2Fhelper-define-map-7.8.3.tgz", + "integrity": "sha1-oGVcrVRRw3YLcm66h18c2PqgLBU=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha1-pyjcW06J4w/C38fQT6KKkwZT+YI=", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.9.5.tgz?cache=0&sync_timestamp=1586287622088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.9.5.tgz", + "integrity": "sha1-K1OCDTUnUSDhh0qC5aq+E3aSClw=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha1-Hb6ba1XXjJtBg/yM3G4wzrg7cTQ=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz", + "integrity": "sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.9.0.tgz", + "integrity": "sha1-Q7NN/hWWGRhwfSRzJ0MTiOn+luU=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.8.3.tgz", + "integrity": "sha1-nqKTvhm6vA9S/4yoizTDYRsghnA=", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-regex%2Fdownload%2F%40babel%2Fhelper-regex-7.8.3.tgz", + "integrity": "sha1-E5dyYH1RuT8j7/5yEFsxnSpMaWU=", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha1-JzxgDYub9QBhQsHjWIfVVcEu3YY=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.9.6.tgz", + "integrity": "sha1-AxSdfmpVhqtnZJls0x1pgaF+FEQ=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz", + "integrity": "sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.9.5.tgz?cache=0&sync_timestamp=1586287619304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.9.5.tgz", + "integrity": "sha1-kJd6jm+/a0MafcMXUu7iM78FLYA=", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.8.3.tgz", + "integrity": "sha1-nb2yu1XvFKqgH+jJm2Kb1TUthhA=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.9.6.tgz", + "integrity": "sha1-CSx3R0NHHQu2x9461GWrPTSG1YA=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.9.0.tgz", + "integrity": "sha1-TptFzLgreWBycbKXmtgse2gWMHk=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.9.6.tgz?cache=0&sync_timestamp=1588185669160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.9.6.tgz", + "integrity": "sha1-Oxu7MNq+YAzXLbWHIJmDdv9lO8c=", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha1-utMpxnCzgliXIbJ1QMfSiGAcbm8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.8.3.tgz?cache=0&sync_timestamp=1578951896490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha1-XgZlSvXNBLYIkVqtqbKmeIAERk4=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha1-IVaGCrZcWr8GjD9nBCGEBBBmVD4=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha1-OMT+VVdEgm6X4q6TCw+0zAfmYFQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha1-2lIWsjipi1ih4F1oUhBLEPmnDWs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz?cache=0&sync_timestamp=1578952594995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-5FciU/3u1lzd7s/as/kor+sv1dI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha1-XWdpQJaZ7Js7aGhM2BFs7f+Tutg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha1-egk1hvyxiwgmbrGnF32mcaxXW2M=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-ne6WqxZQ7tiGRq6XNMoWesSpxck=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha1-MdsWsVTDnWuKZFKSRyuYOUwpKlg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.8.8.tgz?cache=0&sync_timestamp=1584039532520&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha1-7jqV6QzcBP6M2S7DJ5+gF9aKDR0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.8.3.tgz", + "integrity": "sha1-jSwVqfGvYksAJflhaCqdU9MAG9o=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.8.3.tgz?cache=0&sync_timestamp=1578952595130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-jsx%2Fdownload%2F%40babel%2Fplugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha1-UhsGyDxASA8eWLT9M7kuzrHW6pQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz?cache=0&sync_timestamp=1578952518069&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha1-Dj+2Pgm+obEelkZyccgwgAfnxB8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz?cache=0&sync_timestamp=1578950070697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz?cache=0&sync_timestamp=1578952519472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-optional-chaining%2Fdownload%2F%40babel%2Fplugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.8.3.tgz?cache=0&sync_timestamp=1578952595485&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha1-Os3s5pXmsTqvV/wpHRqACVDHE5E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha1-gndsLtDNnhpJlW2uuJYCTJRzuLY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha1-Qwj60NlAnXHq+5sabuNfnWS2QIY=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha1-Q37sW3mbWFIHIISzrl72boNJ6KM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha1-l9Ndq2aFekN8FmNYuR0JBQyGjzo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha1-gAWX3biu/CwpPtJ0WcH8yTWibCw=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha1-ltDSi3985OtbEguy4OlDNDyG+Bs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha1-csl89fOGBK6jq/O5NbDhex23alA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha1-w8bsXuYSXGmTxcvKINyGIanqem4=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha1-jRLfMJqlN/JyiZxWXqF2jihuIfE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha1-WBptf1aXDga/UVYM1k9elHtw17c=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.9.0.tgz?cache=0&sync_timestamp=1584719156763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.9.0.tgz", + "integrity": "sha1-DyYOJ9PinNG7MSjaXnbHYapsEI4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha1-J5NzyycyKqrWfCaD53bfxHGW7Ys=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha1-rvI5gj2RmU7Hto5VGTUl1229XcE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha1-lj/tS2IKx8v2Apx1VCQCn6OkBBA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha1-hTnsQsFT0S6jg24OOsMNWq57JY4=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha1-ZLdHSkJ57liMrNGQZpXKchaHwnc=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha1-IH8UYceKIx1TN6khQOUkIlENgaQ=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha1-6Qmsridv7CgPm4IaXzjh8ItIBpc=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha1-YMwq5m2FyVq1QOs0urtkNNTHDEM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha1-67ah56hv+paFi9asAQLWWUQmFyU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha1-FzsmV0b14Vsq/lJ+7aZbc2I6B5U=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha1-MxlDANhTnB7SjGKtUIe6OAe5gmM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha1-Xkag3KK+4a2ChesFJ+arycN2cvg=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha1-mgY1rE5mXSmxYoN908xQdF398fU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.9.6.tgz?cache=0&sync_timestamp=1588185670098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.9.6.tgz", + "integrity": "sha1-O6gEQ4rQ2IChe8peqgzfHt7tsv0=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha1-KFRSFuAjqDLU06EYXtSSvP6sCMg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha1-nI/+gXD9+4ixFOy5ILgvtulf5eg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha1-vnoSkPgdrnZ0dUUhmeH3bWF1sQA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha1-e/pHMrRV6mpDEwrcC6dn7A5AKoA=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.8.4.tgz?cache=0&sync_timestamp=1580389261491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha1-7eQGIxXOCq+KZXqSCFjxovNfxBI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha1-DO8247pz5cVyc+/7GC9GuRoeyq0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.9.6.tgz", + "integrity": "sha1-3wY7J2xkVexvz8blOqzDjamwrqY=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.3.tgz", + "integrity": "sha1-EyQrU7XvjIg8PPfd3VWzbOgPvHI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.9.6.tgz?cache=0&sync_timestamp=1588185666578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.9.6.tgz", + "integrity": "sha1-qRAutcre3z8x0IqezylK94J+op8=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.6.tgz?cache=0&sync_timestamp=1582806154512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.9.6.tgz?cache=0&sync_timestamp=1588185667210&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.9.6.tgz", + "integrity": "sha1-VUDXV3aXv2GcxXuSqg8cIxqU9EI=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.9.6.tgz?cache=0&sync_timestamp=1588185677174&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.9.6.tgz", + "integrity": "sha1-LFUCtCclHp3hvS3/la3WRtlcyfc=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz", + "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz", + "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz", + "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz", + "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz", + "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mdi/font": { + "version": "5.1.45", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-5.1.45.tgz", + "integrity": "sha512-7H1UMwUpEp8mthdPlpAi7bhEyvTbvtK1TlA89scc0cXMpQy0UFygdkaf+6fveIxpBcRNgw0gnGSEonlsfYocXg==", + "dev": true + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@soda/get-current-script": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.0.tgz", + "integrity": "sha1-YjqkBiNVDjuUdnz/6wlqb7WX7Qk=", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&sync_timestamp=1588199606687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz", + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1588200126626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&sync_timestamp=1588200170004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", + "dev": true + }, + "@types/node": { + "version": "13.13.4", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.13.4.tgz?cache=0&sync_timestamp=1588201184465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.13.4.tgz", + "integrity": "sha1-FYHWwW49SAPrB5yH1KyJPudQHCw=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1588201212713&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz", + "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz?cache=0&sync_timestamp=1588201373449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.2.tgz", + "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=", + "dev": true + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha1-wKPm78Ai515CR7RIqPxrhvA+kcA=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-4.3.1.tgz?cache=0&sync_timestamp=1586274159197&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-4.3.1.tgz", + "integrity": "sha1-u2eq5WKYMGfFskLCf7feF/QM8Qk=", + "dev": true, + "requires": { + "@babel/core": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/runtime": "^7.9.2", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.0", + "core-js": "^3.6.4", + "core-js-compat": "^3.6.4" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha1-LhaetMIE6jfKZsLqhaiAv8mdTyA=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha1-9+JPugnm8e5wEEVgqICAV1VfGpo=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha1-ilJ2ttji7Rb/yAeKrZQjYnTm7fA=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha1-H/b9G4ACI/ycsehNzrXlLXN6gZI=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha1-su+ZuPL6sJ++rSWq1w70Lhz1sTs=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-4.3.1.tgz", + "integrity": "sha1-Q0UpwYi2KKVHc2cCAWZ6C0o2Hgc=", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.3.1.tgz?cache=0&sync_timestamp=1586274099041&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-4.3.1.tgz", + "integrity": "sha1-bjpqoYWVuYrVxSiYooUNRSQEcSs=", + "dev": true, + "requires": { + "@babel/core": "^7.9.0", + "@vue/babel-preset-app": "^4.3.1", + "@vue/cli-shared-utils": "^4.3.1", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.3.1.tgz?cache=0&sync_timestamp=1586274114370&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-4.3.1.tgz", + "integrity": "sha1-L14JvX0djElBNLbHGvK3eZONKJo=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.3.1", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.3.1.tgz?cache=0&sync_timestamp=1586274145925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.3.1.tgz", + "integrity": "sha1-C6WJ9Omh8+ZKj/bM2S984oRVhr8=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.3.1" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.3.1.tgz?cache=0&sync_timestamp=1586274154358&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-vuex%2Fdownload%2F%40vue%2Fcli-plugin-vuex-4.3.1.tgz", + "integrity": "sha1-K3Ov9W+eG+MQGIc9XtLVnxVedHY=", + "dev": true + }, + "@vue/cli-service": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-4.3.1.tgz?cache=0&sync_timestamp=1586274117842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-service%2Fdownload%2F%40vue%2Fcli-service-4.3.1.tgz", + "integrity": "sha1-lLISHQjjQ6Vffs7yYK9SV6n/5+U=", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@vue/cli-overlay": "^4.3.1", + "@vue/cli-plugin-router": "^4.3.1", + "@vue/cli-plugin-vuex": "^4.3.1", + "@vue/cli-shared-utils": "^4.3.1", + "@vue/component-compiler-utils": "^3.0.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.1.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.7.5", + "browserslist": "^4.11.1", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.4.2", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.25", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.5", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.1", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.10.3", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1588033405119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", + "integrity": "sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-3.0.0.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-3.0.0.tgz", + "integrity": "sha1-SS5Imi13t7gErTkaX12XhwlSVI4=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-7.1.0.tgz", + "integrity": "sha1-ksJBv23oI2W1x/tL126XVSLhKU0=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "terser-webpack-plugin": { + "version": "2.3.6", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.6.tgz?cache=0&sync_timestamp=1588354502839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.6.tgz", + "integrity": "sha1-pAFLMRph+HxqGyF+9PWnW9BmWmk=", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.3.1.tgz?cache=0&sync_timestamp=1586274154670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.3.1.tgz", + "integrity": "sha1-p0v01Tgl1KSwWoSwPgI5dIcbw4o=", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.1.2.tgz", + "integrity": "sha1-ghOl/zIC+fITf+VTcPnouWVggcM=", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.1.tgz", + "integrity": "sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo=", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz", + "integrity": "sha1-uw5G8VhafiibTuYGfcxaauYvHdE=", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.9.0.tgz", + "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz?cache=0&sync_timestamp=1580600186633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.9.0.tgz", + "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-api-error%2Fdownload%2F%40webassemblyjs%2Fhelper-api-error-1.9.0.tgz", + "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.9.0.tgz", + "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-code-frame%2Fdownload%2F%40webassemblyjs%2Fhelper-code-frame-1.9.0.tgz", + "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz?cache=0&sync_timestamp=1580600184873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.9.0.tgz", + "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-module-context%2Fdownload%2F%40webassemblyjs%2Fhelper-module-context-1.9.0.tgz", + "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-section%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-section-1.9.0.tgz", + "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fieee754%2Fdownload%2F%40webassemblyjs%2Fieee754-1.9.0.tgz", + "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.9.0.tgz", + "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Futf8%2Fdownload%2F%40webassemblyjs%2Futf8-1.9.0.tgz", + "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.9.0.tgz", + "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.9.0.tgz", + "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-opt%2Fdownload%2F%40webassemblyjs%2Fwasm-opt-1.9.0.tgz", + "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-parser%2Fdownload%2F%40webassemblyjs%2Fwasm-parser-1.9.0.tgz", + "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz", + "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz", + "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz", + "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz?cache=0&sync_timestamp=1582724149302&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.2.0.tgz", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.1.1.tgz", + "integrity": "sha1-NF8N/61cc15zc9L+yaECPmpEuD4=", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz", + "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz", + "integrity": "sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA=", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.2.tgz?cache=0&sync_timestamp=1587339911109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.2.tgz", + "integrity": "sha1-xinF7O0XuvMUQ3kY0tqIyZ1ZWM0=", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz", + "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-colors%2Fdownload%2Fansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz?cache=0&sync_timestamp=1583072804444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.1.tgz", + "integrity": "sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz", + "integrity": "sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz", + "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz", + "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz?cache=0&sync_timestamp=1588238331562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574271635932&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz", + "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "autoprefixer": { + "version": "9.7.6", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.7.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.7.6.tgz", + "integrity": "sha1-Y6xbvAznk05plyB9W7ANaPqCk6Q=", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz", + "integrity": "sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4=", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz?cache=0&sync_timestamp=1584715959282&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.1.0.tgz", + "integrity": "sha1-xhHVESvVIJq+i5+oTD5NolJ18cM=", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1587496311403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", + "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", + "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", + "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz", + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.12.0.tgz?cache=0&sync_timestamp=1587419256330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.12.0.tgz", + "integrity": "sha1-BsbVcVoe3mxR/Dn/Z/1kf3QLZW0=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz", + "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz", + "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1588033405119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz", + "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz", + "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz?cache=0&sync_timestamp=1562668966653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-callsite%2Fdownload%2Fcaller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1574395720588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz?cache=0&sync_timestamp=1576721717499&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001048", + "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001048.tgz?cache=0&sync_timestamp=1587836069414&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001048.tgz", + "integrity": "sha1-S7TxvC6zBOXhFU2oC5Pe4/HPRH4=", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha1-I6xhPMmoVuT4j/i7c7u16YmCXPc=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1585650396850&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz", + "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1587911215694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchownr%2Fdownload%2Fchownr-1.1.4.tgz", + "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz", + "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz", + "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz", + "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz", + "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.4.tgz?cache=0&sync_timestamp=1573949240542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.4.tgz", + "integrity": "sha1-CYy2Qs8X9CrcHBFF4H+WDsTXUis=", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^5.1.1", + "yargs": "^15.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.3.0.tgz?cache=0&sync_timestamp=1586157510340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.3.0.tgz", + "integrity": "sha1-BjIjmktapMlYYQFCw0u3plH8jfU=", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.1.tgz", + "integrity": "sha1-sEM9C06chH7xiGik7xb9X8gnHEg=", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz", + "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.1.1.tgz?cache=0&sync_timestamp=1569219622778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-2.1.1.tgz", + "integrity": "sha1-ShwVLUKd89RBZpSY4khtNZbrrx0=", + "dev": true + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz", + "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", + "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz", + "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz", + "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz", + "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz", + "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz", + "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha1-VIGgPeoRI9iKmIxv+LeCRyFPC4g=", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz", + "integrity": "sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo=" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.6.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.6.5.tgz", + "integrity": "sha1-KlHZpOJd/W5pAlGqgfmePAVIHxw=", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz", + "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.5.3.tgz", + "integrity": "sha1-lawWRo4a3NlchEcp4LsWdjnrC88=", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz", + "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.2.1.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-3.2.1.tgz", + "integrity": "sha1-9KjxJCEGRiG0VnVeNKA6LCLfXaE=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz", + "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.0.3.tgz?cache=0&sync_timestamp=1585052282901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.0.3.tgz", + "integrity": "sha1-DZmF3IUsfMKyys+74QeQFNGo6QM=", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha1-K/8//huz93bPfu/ZHuXLp3oUnus=", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.6.tgz?cache=0&sync_timestamp=1584029100530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.6.tgz", + "integrity": "sha1-hS3GD8ql2qLoz2yRicRA7T4EKXg=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz", + "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1572279720382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz", + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz?cache=0&sync_timestamp=1583993714392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.5.tgz", + "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.2.tgz", + "integrity": "sha1-0Nfc+nTokRXHYZ9PchqU4f23FtY=", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz", + "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz", + "integrity": "sha1-ASA83JJZf5uQkGfD5lbMH008Tck=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-2.0.1.tgz", + "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", + "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz", + "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdir-glob%2Fdownload%2Fdir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz", + "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.2.0.tgz?cache=0&sync_timestamp=1572620767955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz?cache=0&sync_timestamp=1571190782798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv%2Fdownload%2Fdotenv-8.2.0.tgz", + "integrity": "sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv-expand%2Fdownload%2Fdotenv-expand-5.1.0.tgz", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz", + "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.427", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.427.tgz?cache=0&sync_timestamp=1588392351643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.427.tgz", + "integrity": "sha1-6kPQKQioxx9H67RuCd5aPPgjbwQ=", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz?cache=0&sync_timestamp=1574449776597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.2.tgz", + "integrity": "sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz?cache=0&sync_timestamp=1569416272686&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fend-of-stream%2Fdownload%2Fend-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1572991764265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz", + "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz", + "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz", + "integrity": "sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1587767110841&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz", + "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz", + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.1.tgz", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz", + "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1587511767993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz", + "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705523991&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1583883525323&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz", + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.3.1.tgz", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.1.0.tgz?cache=0&sync_timestamp=1586968779444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.1.0.tgz", + "integrity": "sha1-N0MJ05/ZNa5QDnuS6Ka0xyDllkI=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1586968779444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz", + "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz", + "integrity": "sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevents%2Fdownload%2Fevents-3.1.0.tgz", + "integrity": "sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1582318304084&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz?cache=0&sync_timestamp=1585068742276&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffiggy-pudding%2Fdownload%2Ffiggy-pudding-3.5.2.tgz", + "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz", + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz", + "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz", + "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz", + "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.11.0.tgz", + "integrity": "sha1-r6FPCLoSpSljFA/kMhJliJe8Dss=", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1573027118125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz", + "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.12.tgz?cache=0&sync_timestamp=1587572647225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.12.tgz", + "integrity": "sha1-234NjsOwtFck/U2D1DVUqPHw3lw=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgensync%2Fdownload%2Fgensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz?cache=0&sync_timestamp=1588086905523&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.4.tgz", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", + "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz", + "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz?cache=0&sync_timestamp=1573950844856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz", + "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-2.0.0.tgz", + "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.1.tgz?cache=0&sync_timestamp=1587994673925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhighlight.js%2Fdownload%2Fhighlight.js-9.18.1.tgz", + "integrity": "sha1-7SGqAB/mJSuxCj121HVzxlOf4Tw=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", + "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.3.1.tgz", + "integrity": "sha1-+5oaS1sUxdq6gtPjTGrk/nAaDkQ=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", + "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1588268193119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz?cache=0&sync_timestamp=1568770934756&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.0.tgz", + "integrity": "sha1-2+VfY+daNH2389mZdPJpKjFKajo=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz", + "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1579335902637&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz", + "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.1.0.tgz?cache=0&sync_timestamp=1583821033098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.1.0.tgz", + "integrity": "sha1-EpigGFmIPhfHJkuChwrhA0+S3Sk=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1584010513586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1583993714392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz", + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1569905495687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-callable%2Fdownload%2Fis-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", + "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz?cache=0&sync_timestamp=1576454688491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz?cache=0&sync_timestamp=1579236224749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-svg%2Fdownload%2Fis-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296307739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&sync_timestamp=1569219622778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.0.1.tgz?cache=0&sync_timestamp=1572948916758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.0.1.tgz", + "integrity": "sha1-bvNYA1MQ411mfGde1j0+t8GqGeU=", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.5.0.tgz?cache=0&sync_timestamp=1588422314597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.5.0.tgz", + "integrity": "sha1-JhHQcbec6g9D7lej0RhZOsFUfbE=", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1567740732347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", + "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz", + "integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", + "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz", + "integrity": "sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/levenary/download/levenary-1.1.1.tgz?cache=0&sync_timestamp=1580182411097&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flevenary%2Fdownload%2Flevenary-1.1.1.tgz", + "integrity": "sha1-hCqe6Y0gdap/ru2+MmeekgX0b3c=", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz", + "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", + "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.defaultsdeep%2Fdownload%2Flodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.8.tgz", + "integrity": "sha1-iiX7ddCSIw7NRFcnDYC1TigBEXE=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz?cache=0&sync_timestamp=1575601555695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-design-icons-iconfont": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz", + "integrity": "sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1584029100530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz", + "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge2%2Fdownload%2Fmerge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.5.tgz?cache=0&sync_timestamp=1588374764430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.5.tgz", + "integrity": "sha1-2N4uy5KYLe27ZUHJtoQdfyGOoAk=", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz", + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz?cache=0&sync_timestamp=1576856499989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimist%2Fdownload%2Fminimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.1.tgz", + "integrity": "sha1-dgfOd4RyoYWtbYkIKqIHD3nO3NU=", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz", + "integrity": "sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz", + "integrity": "sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.2.tgz", + "integrity": "sha1-PctrtKVG4ylpx61xDyx5qGq7qTo=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz?cache=0&sync_timestamp=1587535418745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.5.tgz", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.1.tgz", + "integrity": "sha1-174036MQW5FJTDFHCJMV7/iHSwE=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz", + "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1584699756095&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1569552454213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz", + "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz", + "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.53.tgz", + "integrity": "sha1-LYIb+kme18Xf/F4vKMiOeKCO4/Q=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1581061498787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.2.tgz?cache=0&sync_timestamp=1586894009620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.2.tgz", + "integrity": "sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", + "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1583734616839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-6.4.0.tgz", + "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz", + "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopn%2Fdownload%2Fopn-5.5.0.tgz", + "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz", + "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz?cache=0&sync_timestamp=1587481412542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-3.4.0.tgz", + "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-is-promise%2Fdownload%2Fp-is-promise-2.1.0.tgz", + "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz", + "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1580284192633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz", + "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz", + "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz", + "integrity": "sha1-c+URTJhtFD76NxLU6iTbmkJm9g8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1586991218581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz", + "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-5.1.1.tgz?cache=0&sync_timestamp=1586991223660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5-htmlparser2-tree-adapter%2Fdownload%2Fparse5-htmlparser2-tree-adapter-5.1.1.tgz", + "integrity": "sha1-6MdD1OkhlNUpPs3isIvjHmdGHLw=", + "dev": true, + "requires": { + "parse5": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz?cache=0&sync_timestamp=1565253337239&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpascalcase%2Fdownload%2Fpascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&sync_timestamp=1574278262588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.26.tgz?cache=0&sync_timestamp=1588108029311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.26.tgz", + "integrity": "sha1-R1ZY1WyjC+1yrH8TeO01C9G2TnA=", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.28", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.28.tgz?cache=0&sync_timestamp=1588430580894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.28.tgz", + "integrity": "sha1-00nO13Q0dXF7qR9oEO+1jFH7Xbs=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.2.tgz?cache=0&sync_timestamp=1582014221563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.2.tgz", + "integrity": "sha1-UE780AjKAnMSBWiweSsWzc3oqsE=", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz", + "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz", + "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz", + "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz", + "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.2.tgz?cache=0&sync_timestamp=1559685933515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha1-6KZWG+kUqvPAUodjd1JMqQ27eRU=", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz?cache=0&sync_timestamp=1584620714522&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-2.2.0.tgz", + "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-3.0.0.tgz", + "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz", + "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.1.0.tgz", + "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1587488858835&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprocess-nextick-args%2Fdownload%2Fprocess-nextick-args-2.0.1.tgz", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz?cache=0&sync_timestamp=1585170332277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpsl%2Fdownload%2Fpsl-1.8.0.tgz", + "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&sync_timestamp=1569938200736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz", + "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz", + "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz?cache=0&sync_timestamp=1583946996794&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate-unicode-properties%2Fdownload%2Fregenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz?cache=0&sync_timestamp=1584052392667&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.4.tgz", + "integrity": "sha1-UmaFeJZRjRYWp4oEeTN6MOqXTMc=", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.0.tgz?cache=0&sync_timestamp=1583949999327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.0.tgz", + "integrity": "sha1-/L9FjFBDGwu3tF1pZ7gZLZHz2Tg=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.1.tgz", + "integrity": "sha1-SPC/Gl6iBRlpKcDZeYtC0e2YRDw=", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz?cache=0&sync_timestamp=1583896720909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.4.tgz", + "integrity": "sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz", + "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz", + "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz", + "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.3.tgz", + "integrity": "sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.8.tgz?cache=0&sync_timestamp=1572829683581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest-promise-native%2Fdownload%2Frequest-promise-native-1.0.8.tgz", + "integrity": "sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY=", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fretry%2Fdownload%2Fretry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz", + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.5.tgz?cache=0&sync_timestamp=1585894516752&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.5.5.tgz", + "integrity": "sha1-xciE4wlMjP7jG/J+uH5UzPyH+ew=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz?cache=0&sync_timestamp=1571687713993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-regex%2Fdownload%2Fsafe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.6.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.6.tgz", + "integrity": "sha1-KZ/mvUozZdwj2Z/URsr/jx1sMww=", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz?cache=0&sync_timestamp=1569952074772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.7.tgz", + "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1588374764430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-2.1.2.tgz", + "integrity": "sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz?cache=0&sync_timestamp=1585774809732&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fset-value%2Fdownload%2Fset-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsha.js%2Fdownload%2Fsha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz?cache=0&sync_timestamp=1567324294105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshell-quote%2Fdownload%2Fshell-quote-1.7.2.tgz", + "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585253373618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz", + "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz?cache=0&sync_timestamp=1583783910272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs%2Fdownload%2Fsockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz", + "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1565864727994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584829552965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz?cache=0&sync_timestamp=1587719493563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.19.tgz", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz?cache=0&sync_timestamp=1587422511430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-exceptions%2Fdownload%2Fspdx-exceptions-2.3.0.tgz", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz?cache=0&sync_timestamp=1585970548235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.2.tgz", + "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz", + "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "dev": true + }, + "stackframe": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.1.1.tgz", + "integrity": "sha1-/+8KMxixtgw7WFZJiaylZgcp7HE=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1587355518192&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz", + "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.0.tgz", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz?cache=0&sync_timestamp=1586465233837&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.1.tgz", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha1-RAiqLl1t3QyagHObCH+8BnwDs8w=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz?cache=0&sync_timestamp=1585557103516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimright%2Fdownload%2Fstring.prototype.trimright-2.1.2.tgz", + "integrity": "sha1-x28c7zDyG7rYr+uNsVEUls+w8qM=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz?cache=0&sync_timestamp=1586465234129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.1.tgz", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.0.tgz?cache=0&sync_timestamp=1586160054577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.0.tgz", + "integrity": "sha1-djjTFCISns9EV0QACfugP5+awYA=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz", + "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1572433264480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz", + "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "terser": { + "version": "4.6.12", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.6.12.tgz", + "integrity": "sha1-RLmK74cD/bCaNJG/ebQ/r/xbT+4=", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz?cache=0&sync_timestamp=1588354502839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.3.tgz", + "integrity": "sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz?cache=0&sync_timestamp=1565261083321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthread-loader%2Fdownload%2Fthread-loader-2.1.3.tgz", + "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz", + "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz?cache=0&sync_timestamp=1565448362964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.11.tgz", + "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584647110516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz", + "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz", + "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz?cache=0&sync_timestamp=1585245674012&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fts-pnp%2Fdownload%2Fts-pnp-1.2.0.tgz", + "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=", + "dev": true + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581364183265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz?cache=0&sync_timestamp=1585882977555&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-check%2Fdownload%2Ftype-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz", + "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz?cache=0&sync_timestamp=1583945805856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz", + "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1583532006299&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz", + "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupper-case%2Fdownload%2Fupper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz", + "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz", + "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz?cache=0&sync_timestamp=1588238331562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz", + "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1588193215088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", + "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz", + "integrity": "sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1579857106626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz", + "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870772154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "vue": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.11.tgz", + "integrity": "sha1-dllNh31LEiNEBuhONSdcbVFBJcU=" + }, + "vue-eslint-parser": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.0.0.tgz", + "integrity": "sha1-pO0mafhxed7dBq/dhzasuzo4ZNY=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz", + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-hot-reload-api%2Fdownload%2Fvue-hot-reload-api-2.3.4.tgz", + "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", + "dev": true + }, + "vue-loader": { + "version": "15.9.2", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.2.tgz", + "integrity": "sha1-rgH19MnGoEv/RIORLnLvkaQCwa4=", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-router": { + "version": "3.1.6", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.6.tgz?cache=0&sync_timestamp=1588196237384&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.1.6.tgz", + "integrity": "sha1-RfWjo4Q+MXAsBh3YKTk1VOQyj4k=" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz", + "integrity": "sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.11.tgz?cache=0&sync_timestamp=1576267389403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.11.tgz", + "integrity": "sha1-wEcE749JixUxMAGJk+VjCdRpgIA=", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", + "dev": true + }, + "vuelidate": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.5.tgz", + "integrity": "sha512-GAAG8QAFVp7BFeQlNaThpTbimq3+HypBPNwdkCkHZZeVaD5zmXXfhp357dcUJXHXTZjSln0PvP6wiwLZXkFTwg==" + }, + "vuetify": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.2.26.tgz", + "integrity": "sha512-B/aOV9wgO2xOV2zcEZ+LGyxfw5hArbAj3uxNQcEYd8rbQyt/Rw5dHfiUd8af68QA+KUPB+9cs7jzFAx4Ku6Wkg==" + }, + "vuex": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.3.0.tgz", + "integrity": "sha1-ZltGMOoTRzFxOfzFy0laqz7F5RM=" + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.1.tgz?cache=0&sync_timestamp=1585253929080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.6.1.tgz", + "integrity": "sha1-KA2gqHGFkhdAEMB4x1hadM2M0OI=", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.43.0.tgz?cache=0&sync_timestamp=1588187260179&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.43.0.tgz", + "integrity": "sha1-xIVHsR1WMiTFYdrRFyyKoLimeOY=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.7.0", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.7.0.tgz?cache=0&sync_timestamp=1586846559504&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.7.0.tgz", + "integrity": "sha1-hNpDTolEKJm4hNmtOORm0NsCpW8=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + } + } + }, + "webpack-chain": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-6.4.0.tgz", + "integrity": "sha1-IvCye2qbye48uk+eZRPPZjlANOI=", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1582191620751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", + "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.10.3.tgz?cache=0&sync_timestamp=1580911348381&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.10.3.tgz", + "integrity": "sha1-81lFA2gT5X71gsJCDve0cOFNOvA=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&sync_timestamp=1587149376242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&sync_timestamp=1566978693896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz", + "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz", + "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz", + "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz", + "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1587811730960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1587149376242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz", + "integrity": "sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys=", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz", + "integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz", + "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/VUE-WEB/lions-agent/package.json b/VUE-WEB/lions-agent/package.json new file mode 100644 index 0000000..1dbe5c5 --- /dev/null +++ b/VUE-WEB/lions-agent/package.json @@ -0,0 +1,30 @@ +{ + "name": "lions-agent", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.19.2", + "core-js": "^3.6.4", + "vue": "^2.6.11", + "vue-router": "^3.1.6", + "vuelidate": "^0.7.5", + "vuetify": "^2.2.26", + "vuex": "^3.1.3" + }, + "devDependencies": { + "@mdi/font": "^5.1.45", + "@vue/cli-plugin-babel": "^4.3.0", + "@vue/cli-plugin-eslint": "^4.3.0", + "@vue/cli-service": "^4.3.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", + "material-design-icons-iconfont": "^5.0.1", + "vue-template-compiler": "^2.6.11" + } +} diff --git a/VUE-WEB/lions-agent/public/favicon.ico b/VUE-WEB/lions-agent/public/favicon.ico new file mode 100644 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/VUE-WEB/lions-agent/public/index.html b/VUE-WEB/lions-agent/public/index.html new file mode 100644 index 0000000..223c768 --- /dev/null +++ b/VUE-WEB/lions-agent/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/VUE-WEB/lions-agent/src/App.vue b/VUE-WEB/lions-agent/src/App.vue new file mode 100644 index 0000000..bf56fab --- /dev/null +++ b/VUE-WEB/lions-agent/src/App.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/VUE-WEB/lions-agent/src/api/axios.js b/VUE-WEB/lions-agent/src/api/axios.js new file mode 100644 index 0000000..7f70444 --- /dev/null +++ b/VUE-WEB/lions-agent/src/api/axios.js @@ -0,0 +1,56 @@ +import axios from 'axios' +import store from "@/store" +import router from "@/router"; +// axios 配置 +axios.defaults.timeout = 3000; +axios.defaults.baseURL = 'http://lions-vote.funnyzhibo.com/api/'; + +const axiosConf = (config) => { + // config.headers.Authorization = store.state.accessToken; + config.headers.Authorization = localStorage.getItem('accessToken') + return config; +}; + +axios.interceptors.request.use(axiosConf, err => { + return Promise.reject(err); +}); + +axios.interceptors.response.use(async (response) => { + let data = {}; + let code = Number(response.data.status_code); + if (code === 401 || code == 0) { + if (response.data.status == 'EXCEPTION') { + return Promise.reject(response.data) + } + if (response.headers.authorization) { + await store.commit('login', response.headers.authorization); + + response.config.headers.Authorization = response.headers.authorization; + const result = await axios.request(axiosConf(response.config)); + if (result) { + data = result; + } + } else if (router.currentRoute.name != 'AuthLogin') { + setTimeout(() => { + router.replace({name: 'AuthLogin', query: {redirect: router.currentRoute.fullPath}}); + }, 1000); + } + } else if (code === 200) { + data = response.data.data; + } else if (code === 403) { + await router.replace({path: '/403', query: {redirect: router.currentRoute.fullPath}}); + } else if (code === 410) { + setTimeout(() => { + router.replace({name: 'AuthLogin', query: {redirect: router.currentRoute.fullPath}}); + }, 1200); + } else if (code == 404) { + return Promise.reject(response.data); + } else { + return Promise.reject(response.data); + } + return data; +}, (error) => { + return Promise.reject(error.response.data); +}); + +export default axios; diff --git a/VUE-WEB/lions-agent/src/api/index.js b/VUE-WEB/lions-agent/src/api/index.js new file mode 100644 index 0000000..711b826 --- /dev/null +++ b/VUE-WEB/lions-agent/src/api/index.js @@ -0,0 +1,7 @@ +import auth from './interfaces/auth' +import index from './interfaces/index' + +export default { + index, + auth +} \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/api/interfaces/auth.js b/VUE-WEB/lions-agent/src/api/interfaces/auth.js new file mode 100644 index 0000000..6034f15 --- /dev/null +++ b/VUE-WEB/lions-agent/src/api/interfaces/auth.js @@ -0,0 +1,13 @@ +import axios from '../axios' + +const license = () => axios.get('auth/license') + +const code = (data) => axios.post('auth/code/login2', data) + +const loginByCode = (data) => axios.post('auth/loginByCode', data) + +export default { + license, + code, + loginByCode +} diff --git a/VUE-WEB/lions-agent/src/api/interfaces/index.js b/VUE-WEB/lions-agent/src/api/interfaces/index.js new file mode 100644 index 0000000..456b17e --- /dev/null +++ b/VUE-WEB/lions-agent/src/api/interfaces/index.js @@ -0,0 +1,7 @@ +import axios from '../axios' + +const index = () => axios.get('agent') + +export default { + index +} diff --git a/VUE-WEB/lions-agent/src/assets/logo.png b/VUE-WEB/lions-agent/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6687c460483390f84523a565d0579a35a452109e GIT binary patch literal 60437 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�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 W6bp_Ic3p@70000 { + router.push({ + name: name, + params: params, + query: query + }) +} +new Vue({ + vuetify, + router, + store, + render: h => h(App) +}).$mount('#app') diff --git a/VUE-WEB/lions-agent/src/pages/auth/login.vue b/VUE-WEB/lions-agent/src/pages/auth/login.vue new file mode 100644 index 0000000..306e43f --- /dev/null +++ b/VUE-WEB/lions-agent/src/pages/auth/login.vue @@ -0,0 +1,174 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/pages/auth/verify.vue b/VUE-WEB/lions-agent/src/pages/auth/verify.vue new file mode 100644 index 0000000..183396e --- /dev/null +++ b/VUE-WEB/lions-agent/src/pages/auth/verify.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/VUE-WEB/lions-agent/src/pages/index/index.vue b/VUE-WEB/lions-agent/src/pages/index/index.vue new file mode 100644 index 0000000..04be073 --- /dev/null +++ b/VUE-WEB/lions-agent/src/pages/index/index.vue @@ -0,0 +1,140 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/pages/layouts/common.vue b/VUE-WEB/lions-agent/src/pages/layouts/common.vue new file mode 100644 index 0000000..cf8b3ff --- /dev/null +++ b/VUE-WEB/lions-agent/src/pages/layouts/common.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/plugins/toast/index.js b/VUE-WEB/lions-agent/src/plugins/toast/index.js new file mode 100644 index 0000000..8f73e08 --- /dev/null +++ b/VUE-WEB/lions-agent/src/plugins/toast/index.js @@ -0,0 +1,34 @@ +import Toast from "./toast" +import Vue from 'vue' + +let currentToast; + +const index = (message, color) => { + if (currentToast) { + currentToast.close() + } + + currentToast = createToast({ + Vue, + message, + color: color || 'success', + onClose: () => { + currentToast = null + } + }); +}; + +function createToast({Vue, message, color, onClose}) { + const Constructor = Vue.extend(Toast) + + let toast = new Constructor() + toast.message = message + toast.color = color + toast.timeout = 1000 + toast.$mount(); + toast.$on('close', onClose) + document.body.appendChild(toast.$el) + return toast +} + +export default index \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/plugins/toast/toast.vue b/VUE-WEB/lions-agent/src/plugins/toast/toast.vue new file mode 100644 index 0000000..c77b986 --- /dev/null +++ b/VUE-WEB/lions-agent/src/plugins/toast/toast.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/plugins/utils.js b/VUE-WEB/lions-agent/src/plugins/utils.js new file mode 100644 index 0000000..13cdec5 --- /dev/null +++ b/VUE-WEB/lions-agent/src/plugins/utils.js @@ -0,0 +1,8 @@ +const isWechat = () => { + let ua = navigator.userAgent.toLowerCase(); + return (/micromessenger/.test(ua)) ? true : false; +} + +export default { + isWechat +} \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/plugins/vuetify.js b/VUE-WEB/lions-agent/src/plugins/vuetify.js new file mode 100644 index 0000000..24beabf --- /dev/null +++ b/VUE-WEB/lions-agent/src/plugins/vuetify.js @@ -0,0 +1,13 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import 'vuetify/dist/vuetify.min.css' +import '@mdi/font/css/materialdesignicons.css' + +Vue.use(Vuetify) + +export default new Vuetify({ + icons: { + iconfont: 'mdi' + }, + theme: {} +}) \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/router/index.js b/VUE-WEB/lions-agent/src/router/index.js new file mode 100644 index 0000000..326c6ce --- /dev/null +++ b/VUE-WEB/lions-agent/src/router/index.js @@ -0,0 +1,79 @@ +import VueRouter from "vue-router" +import store from "@/store" + +const routes = [ + { + path: '/', + name: 'Index', + component: () => import(/* webpackChunkName: "index" */ '@/pages/index/index'), + meta: { + title: '首页', + keepAlive: true, + requireAuth: true + } + }, { + path: '/auth', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/layouts/common'), + children: [ + { + path: 'login', + name: 'AuthLogin', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/auth/login'), + meta: { + title: '登录' + } + }, { + path: 'verify', + name: 'AuthVerify', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/auth/verify'), + meta: { + title: '验证手机号' + } + } + ] + } +]; + +const router = new VueRouter({ + mode: 'history', + routes +}); + +router.beforeEach((to, from, next) => { + let hasLogin = store.state.hasLogin; + console.log('ROUTE' + to.name + '||' + hasLogin) + if (to.name === 'AuthLogin') { + // 如果已经登录,直接跳转到首页去 + if (hasLogin) { + next({ + name: 'Index' + }); + return + } + + let tk = localStorage.getItem('accessToken') + + if (tk) { + store.commit('login', tk); + next({ + name: 'Index' + }); + return + } + } else if (to.meta.requireAuth === true) { + if (hasLogin === false) { + next({ + name: 'AuthLogin', + params: { + next: to.path + } + }); + return + } + } + store.state.showFooter = to.meta.showFooter || false; + + next() +}); + +export default router \ No newline at end of file diff --git a/VUE-WEB/lions-agent/src/store/index.js b/VUE-WEB/lions-agent/src/store/index.js new file mode 100644 index 0000000..4520a9e --- /dev/null +++ b/VUE-WEB/lions-agent/src/store/index.js @@ -0,0 +1,49 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex); + +const store = new Vuex.Store({ + state: { + hasLogin: false, + accessToken: '', + userInfo: null, + }, + mutations: { + login(state, token) { + state.hasLogin = true; + state.accessToken = token; + localStorage.setItem('accessToken', token) + }, + logout(state) { + state.hasLogin = false; + state.accessToken = ""; + state.userInfo = null; + localStorage.removeItem('accessToken') + localStorage.removeItem('userInfo') + } + }, + getters: {}, + actions: { + /** + * 登录并获取用户基础信息 + * @param dispatch + * @param commit + * @param token + * @returns {Promise} + */ + async doLogin({commit}, token) { + commit('login', token) + }, + /** + * 登出方法 + * @param commit + * @returns {Promise} + */ + async doLogout({commit}) { + commit('logout') + } + } +}); + +export default store diff --git a/VUE-WEB/lions-web/.browserslistrc b/VUE-WEB/lions-web/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/VUE-WEB/lions-web/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/VUE-WEB/lions-web/.eslintrc.js b/VUE-WEB/lions-web/.eslintrc.js new file mode 100644 index 0000000..8ad90db --- /dev/null +++ b/VUE-WEB/lions-web/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + root: true, + env: { + node: true + }, + 'extends': [ + 'plugin:vue/essential', + 'eslint:recommended' + ], + parserOptions: { + parser: 'babel-eslint' + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' + } +} diff --git a/VUE-WEB/lions-web/.gitignore b/VUE-WEB/lions-web/.gitignore new file mode 100644 index 0000000..a0dddc6 --- /dev/null +++ b/VUE-WEB/lions-web/.gitignore @@ -0,0 +1,21 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/VUE-WEB/lions-web/README.md b/VUE-WEB/lions-web/README.md new file mode 100644 index 0000000..e8706b4 --- /dev/null +++ b/VUE-WEB/lions-web/README.md @@ -0,0 +1,29 @@ +# lions + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Run your tests +``` +npm run test +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/VUE-WEB/lions-web/babel.config.js b/VUE-WEB/lions-web/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/VUE-WEB/lions-web/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/VUE-WEB/lions-web/package-lock.json b/VUE-WEB/lions-web/package-lock.json new file mode 100644 index 0000000..d0a8c7e --- /dev/null +++ b/VUE-WEB/lions-web/package-lock.json @@ -0,0 +1,11980 @@ +{ + "name": "lions", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.9.6.tgz", + "integrity": "sha1-P2BMQOQgExr/5vLIBS6aJ1riBJs=", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.9.6.tgz", + "integrity": "sha1-2aofWAq/OyKG70C2kE05CQTGM3Y=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.9.6.tgz?cache=0&sync_timestamp=1588185669310&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fgenerator%2Fdownload%2F%40babel%2Fgenerator-7.9.6.tgz", + "integrity": "sha1-VAjIKsXemM2g132BJOmfofIXCkM=", + "dev": true, + "requires": { + "@babel/types": "^7.9.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha1-YLwLxlf2Ogkk/5pLSgskoTz03u4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha1-yECXpCegYaxWocMOv1S3si0kFQM=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.9.6.tgz", + "integrity": "sha1-HgW3zMnTjS+LQLRYs4CgTc+t04o=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "browserslist": "^4.11.1", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.9.6.tgz?cache=0&sync_timestamp=1588185668472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-class-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-class-features-plugin-7.9.6.tgz", + "integrity": "sha1-llyLCp8FGAH9nTs3LKDM8gCpCJc=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.9.6", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.8", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha1-XYQYC1iPVgt4ZO+u6okkPlgxIIc=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-define-map%2Fdownload%2F%40babel%2Fhelper-define-map-7.8.3.tgz", + "integrity": "sha1-oGVcrVRRw3YLcm66h18c2PqgLBU=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha1-pyjcW06J4w/C38fQT6KKkwZT+YI=", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.9.5.tgz?cache=0&sync_timestamp=1586287622088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.9.5.tgz", + "integrity": "sha1-K1OCDTUnUSDhh0qC5aq+E3aSClw=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.9.5" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha1-Hb6ba1XXjJtBg/yM3G4wzrg7cTQ=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz", + "integrity": "sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.9.0.tgz", + "integrity": "sha1-Q7NN/hWWGRhwfSRzJ0MTiOn+luU=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.6", + "@babel/types": "^7.9.0", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.8.3.tgz", + "integrity": "sha1-nqKTvhm6vA9S/4yoizTDYRsghnA=", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-regex%2Fdownload%2F%40babel%2Fhelper-regex-7.8.3.tgz", + "integrity": "sha1-E5dyYH1RuT8j7/5yEFsxnSpMaWU=", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha1-JzxgDYub9QBhQsHjWIfVVcEu3YY=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.9.6.tgz", + "integrity": "sha1-AxSdfmpVhqtnZJls0x1pgaF+FEQ=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz", + "integrity": "sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.9.5.tgz?cache=0&sync_timestamp=1586287619304&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.9.5.tgz", + "integrity": "sha1-kJd6jm+/a0MafcMXUu7iM78FLYA=", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.8.3.tgz", + "integrity": "sha1-nb2yu1XvFKqgH+jJm2Kb1TUthhA=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.9.6.tgz", + "integrity": "sha1-CSx3R0NHHQu2x9461GWrPTSG1YA=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6" + } + }, + "@babel/highlight": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.9.0.tgz", + "integrity": "sha1-TptFzLgreWBycbKXmtgse2gWMHk=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.0", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.9.6.tgz?cache=0&sync_timestamp=1588185669160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.9.6.tgz", + "integrity": "sha1-Oxu7MNq+YAzXLbWHIJmDdv9lO8c=", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-async-generator-functions%2Fdownload%2F%40babel%2Fplugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha1-utMpxnCzgliXIbJ1QMfSiGAcbm8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.8.3.tgz?cache=0&sync_timestamp=1578951896490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha1-XgZlSvXNBLYIkVqtqbKmeIAERk4=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha1-IVaGCrZcWr8GjD9nBCGEBBBmVD4=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha1-OMT+VVdEgm6X4q6TCw+0zAfmYFQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha1-2lIWsjipi1ih4F1oUhBLEPmnDWs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz?cache=0&sync_timestamp=1578952594995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-5FciU/3u1lzd7s/as/kor+sv1dI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha1-XWdpQJaZ7Js7aGhM2BFs7f+Tutg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.9.6.tgz", + "integrity": "sha1-egk1hvyxiwgmbrGnF32mcaxXW2M=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.9.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-catch-binding%2Fdownload%2F%40babel%2Fplugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-ne6WqxZQ7tiGRq6XNMoWesSpxck=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha1-MdsWsVTDnWuKZFKSRyuYOUwpKlg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.8.8.tgz?cache=0&sync_timestamp=1584039532520&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.8.8.tgz", + "integrity": "sha1-7jqV6QzcBP6M2S7DJ5+gF9aKDR0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.8", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.8.3.tgz", + "integrity": "sha1-jSwVqfGvYksAJflhaCqdU9MAG9o=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.8.3.tgz?cache=0&sync_timestamp=1578952595130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-jsx%2Fdownload%2F%40babel%2Fplugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha1-UhsGyDxASA8eWLT9M7kuzrHW6pQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz?cache=0&sync_timestamp=1578952518069&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-nullish-coalescing-operator%2Fdownload%2F%40babel%2Fplugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.8.3.tgz", + "integrity": "sha1-Dj+2Pgm+obEelkZyccgwgAfnxB8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz?cache=0&sync_timestamp=1578950070697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz?cache=0&sync_timestamp=1578952519472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-optional-chaining%2Fdownload%2F%40babel%2Fplugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.8.3.tgz?cache=0&sync_timestamp=1578952595485&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha1-Os3s5pXmsTqvV/wpHRqACVDHE5E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha1-gndsLtDNnhpJlW2uuJYCTJRzuLY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha1-Qwj60NlAnXHq+5sabuNfnWS2QIY=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha1-Q37sW3mbWFIHIISzrl72boNJ6KM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha1-l9Ndq2aFekN8FmNYuR0JBQyGjzo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.9.5.tgz", + "integrity": "sha1-gAWX3biu/CwpPtJ0WcH8yTWibCw=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.6", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha1-ltDSi3985OtbEguy4OlDNDyG+Bs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.9.5.tgz", + "integrity": "sha1-csl89fOGBK6jq/O5NbDhex23alA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha1-w8bsXuYSXGmTxcvKINyGIanqem4=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha1-jRLfMJqlN/JyiZxWXqF2jihuIfE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha1-WBptf1aXDga/UVYM1k9elHtw17c=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.9.0.tgz?cache=0&sync_timestamp=1584719156763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.9.0.tgz", + "integrity": "sha1-DyYOJ9PinNG7MSjaXnbHYapsEI4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha1-J5NzyycyKqrWfCaD53bfxHGW7Ys=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha1-rvI5gj2RmU7Hto5VGTUl1229XcE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha1-lj/tS2IKx8v2Apx1VCQCn6OkBBA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.9.6.tgz", + "integrity": "sha1-hTnsQsFT0S6jg24OOsMNWq57JY4=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.9.6.tgz", + "integrity": "sha1-ZLdHSkJ57liMrNGQZpXKchaHwnc=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.9.6.tgz", + "integrity": "sha1-IH8UYceKIx1TN6khQOUkIlENgaQ=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.9.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.9.0.tgz", + "integrity": "sha1-6Qmsridv7CgPm4IaXzjh8ItIBpc=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha1-YMwq5m2FyVq1QOs0urtkNNTHDEM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha1-67ah56hv+paFi9asAQLWWUQmFyU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.9.5", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.9.5.tgz", + "integrity": "sha1-FzsmV0b14Vsq/lJ+7aZbc2I6B5U=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha1-MxlDANhTnB7SjGKtUIe6OAe5gmM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.7", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha1-Xkag3KK+4a2ChesFJ+arycN2cvg=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha1-mgY1rE5mXSmxYoN908xQdF398fU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.9.6.tgz?cache=0&sync_timestamp=1588185670098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-runtime%2Fdownload%2F%40babel%2Fplugin-transform-runtime-7.9.6.tgz", + "integrity": "sha1-O6gEQ4rQ2IChe8peqgzfHt7tsv0=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha1-KFRSFuAjqDLU06EYXtSSvP6sCMg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha1-nI/+gXD9+4ixFOy5ILgvtulf5eg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha1-vnoSkPgdrnZ0dUUhmeH3bWF1sQA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha1-e/pHMrRV6mpDEwrcC6dn7A5AKoA=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.8.4.tgz?cache=0&sync_timestamp=1580389261491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha1-7eQGIxXOCq+KZXqSCFjxovNfxBI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha1-DO8247pz5cVyc+/7GC9GuRoeyq0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.9.6.tgz", + "integrity": "sha1-3wY7J2xkVexvz8blOqzDjamwrqY=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.3.tgz", + "integrity": "sha1-EyQrU7XvjIg8PPfd3VWzbOgPvHI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.9.6.tgz?cache=0&sync_timestamp=1588185666578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.9.6.tgz", + "integrity": "sha1-qRAutcre3z8x0IqezylK94J+op8=", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.8.6", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.6.tgz?cache=0&sync_timestamp=1582806154512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.8.6.tgz", + "integrity": "sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + } + }, + "@babel/traverse": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.9.6.tgz?cache=0&sync_timestamp=1588185667210&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.9.6.tgz", + "integrity": "sha1-VUDXV3aXv2GcxXuSqg8cIxqU9EI=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-function-name": "^7.9.5", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.9.6", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.9.6.tgz?cache=0&sync_timestamp=1588185677174&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftypes%2Fdownload%2F%40babel%2Ftypes-7.9.6.tgz", + "integrity": "sha1-LFUCtCclHp3hvS3/la3WRtlcyfc=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.9.5", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz", + "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz", + "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz", + "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz", + "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz", + "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@mdi/font": { + "version": "5.1.45", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-5.1.45.tgz", + "integrity": "sha512-7H1UMwUpEp8mthdPlpAi7bhEyvTbvtK1TlA89scc0cXMpQy0UFygdkaf+6fveIxpBcRNgw0gnGSEonlsfYocXg==", + "dev": true + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz", + "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha1-cG9kvLSouWQrSK46zkRMcDNNYV0=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@soda/get-current-script": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.0.tgz", + "integrity": "sha1-YjqkBiNVDjuUdnz/6wlqb7WX7Qk=", + "dev": true + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&sync_timestamp=1588199606687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz", + "integrity": "sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA=", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1588200126626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz?cache=0&sync_timestamp=1588200170004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", + "dev": true + }, + "@types/node": { + "version": "13.13.4", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-13.13.4.tgz?cache=0&sync_timestamp=1588201184465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-13.13.4.tgz", + "integrity": "sha1-FYHWwW49SAPrB5yH1KyJPudQHCw=", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1588201212713&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz", + "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz?cache=0&sync_timestamp=1588201373449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.2.tgz", + "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=", + "dev": true + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha1-BI/leZWNpAj7eosqPsBQtQpmEEA=", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha1-wKPm78Ai515CR7RIqPxrhvA+kcA=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-4.3.1.tgz?cache=0&sync_timestamp=1586274159197&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-4.3.1.tgz", + "integrity": "sha1-u2eq5WKYMGfFskLCf7feF/QM8Qk=", + "dev": true, + "requires": { + "@babel/core": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/plugin-proposal-class-properties": "^7.8.3", + "@babel/plugin-proposal-decorators": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.9.0", + "@babel/preset-env": "^7.9.0", + "@babel/runtime": "^7.9.2", + "@vue/babel-preset-jsx": "^1.1.2", + "babel-plugin-dynamic-import-node": "^2.3.0", + "core-js": "^3.6.4", + "core-js-compat": "^3.6.4" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha1-LhaetMIE6jfKZsLqhaiAv8mdTyA=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha1-9+JPugnm8e5wEEVgqICAV1VfGpo=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha1-ilJ2ttji7Rb/yAeKrZQjYnTm7fA=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha1-H/b9G4ACI/ycsehNzrXlLXN6gZI=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha1-su+ZuPL6sJ++rSWq1w70Lhz1sTs=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-4.3.1.tgz", + "integrity": "sha1-Q0UpwYi2KKVHc2cCAWZ6C0o2Hgc=", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.3.1.tgz?cache=0&sync_timestamp=1586274099041&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-4.3.1.tgz", + "integrity": "sha1-bjpqoYWVuYrVxSiYooUNRSQEcSs=", + "dev": true, + "requires": { + "@babel/core": "^7.9.0", + "@vue/babel-preset-app": "^4.3.1", + "@vue/cli-shared-utils": "^4.3.1", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.3.1.tgz?cache=0&sync_timestamp=1586274114370&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-4.3.1.tgz", + "integrity": "sha1-L14JvX0djElBNLbHGvK3eZONKJo=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.3.1", + "eslint-loader": "^2.2.1", + "globby": "^9.2.0", + "inquirer": "^7.1.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + } + }, + "@vue/cli-plugin-router": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.3.1.tgz?cache=0&sync_timestamp=1586274145925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.3.1.tgz", + "integrity": "sha1-C6WJ9Omh8+ZKj/bM2S984oRVhr8=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.3.1" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.3.1.tgz?cache=0&sync_timestamp=1586274154358&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-vuex%2Fdownload%2F%40vue%2Fcli-plugin-vuex-4.3.1.tgz", + "integrity": "sha1-K3Ov9W+eG+MQGIc9XtLVnxVedHY=", + "dev": true + }, + "@vue/cli-service": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-4.3.1.tgz?cache=0&sync_timestamp=1586274117842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-service%2Fdownload%2F%40vue%2Fcli-service-4.3.1.tgz", + "integrity": "sha1-lLISHQjjQ6Vffs7yYK9SV6n/5+U=", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@soda/get-current-script": "^1.0.0", + "@vue/cli-overlay": "^4.3.1", + "@vue/cli-plugin-router": "^4.3.1", + "@vue/cli-plugin-vuex": "^4.3.1", + "@vue/cli-shared-utils": "^4.3.1", + "@vue/component-compiler-utils": "^3.0.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.1.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.7.5", + "browserslist": "^4.11.1", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "cli-highlight": "^2.1.4", + "clipboardy": "^2.3.0", + "cliui": "^6.0.0", + "copy-webpack-plugin": "^5.1.1", + "css-loader": "^3.4.2", + "cssnano": "^4.1.10", + "debug": "^4.1.1", + "default-gateway": "^5.0.5", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^2.0.0", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.9.0", + "minimist": "^1.2.5", + "pnp-webpack-plugin": "^1.6.4", + "portfinder": "^1.0.25", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.5", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.1", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.6.1", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.10.3", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1588033405119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", + "integrity": "sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-3.0.0.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-3.0.0.tgz", + "integrity": "sha1-SS5Imi13t7gErTkaX12XhwlSVI4=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-7.1.0.tgz", + "integrity": "sha1-ksJBv23oI2W1x/tL126XVSLhKU0=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "terser-webpack-plugin": { + "version": "2.3.6", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.6.tgz?cache=0&sync_timestamp=1588354502839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.6.tgz", + "integrity": "sha1-pAFLMRph+HxqGyF+9PWnW9BmWmk=", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.3.1", + "jest-worker": "^25.4.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.3.1.tgz?cache=0&sync_timestamp=1586274154670&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-4.3.1.tgz", + "integrity": "sha1-p0v01Tgl1KSwWoSwPgI5dIcbw4o=", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "read-pkg": "^5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.1.2.tgz", + "integrity": "sha1-ghOl/zIC+fITf+VTcPnouWVggcM=", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.1.tgz", + "integrity": "sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo=", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz", + "integrity": "sha1-uw5G8VhafiibTuYGfcxaauYvHdE=", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.9.0.tgz", + "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz?cache=0&sync_timestamp=1580600186633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.9.0.tgz", + "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-api-error%2Fdownload%2F%40webassemblyjs%2Fhelper-api-error-1.9.0.tgz", + "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.9.0.tgz", + "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-code-frame%2Fdownload%2F%40webassemblyjs%2Fhelper-code-frame-1.9.0.tgz", + "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz?cache=0&sync_timestamp=1580600184873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.9.0.tgz", + "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-module-context%2Fdownload%2F%40webassemblyjs%2Fhelper-module-context-1.9.0.tgz", + "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-section%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-section-1.9.0.tgz", + "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fieee754%2Fdownload%2F%40webassemblyjs%2Fieee754-1.9.0.tgz", + "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.9.0.tgz", + "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Futf8%2Fdownload%2F%40webassemblyjs%2Futf8-1.9.0.tgz", + "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.9.0.tgz", + "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.9.0.tgz", + "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-opt%2Fdownload%2F%40webassemblyjs%2Fwasm-opt-1.9.0.tgz", + "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-parser%2Fdownload%2F%40webassemblyjs%2Fwasm-parser-1.9.0.tgz", + "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz", + "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz", + "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz", + "integrity": "sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ=", + "dev": true + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.2.0.tgz?cache=0&sync_timestamp=1582724149302&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.2.0.tgz", + "integrity": "sha1-TGYGkXPW/daO2FI5/CViJhgrLr4=", + "dev": true + }, + "acorn-walk": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.1.1.tgz", + "integrity": "sha1-NF8N/61cc15zc9L+yaECPmpEuD4=", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz", + "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz", + "integrity": "sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA=", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.12.2.tgz?cache=0&sync_timestamp=1587339911109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.2.tgz", + "integrity": "sha1-xinF7O0XuvMUQ3kY0tqIyZ1ZWM0=", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz", + "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-colors%2Fdownload%2Fansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz?cache=0&sync_timestamp=1583072804444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.1.tgz", + "integrity": "sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE=", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz", + "integrity": "sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E=", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz", + "integrity": "sha1-j1wnMao1owkpIhuwZA7tZRdeyE4=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz", + "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz?cache=0&sync_timestamp=1588238331562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574271635932&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz", + "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "autoprefixer": { + "version": "9.7.6", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.7.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.7.6.tgz", + "integrity": "sha1-Y6xbvAznk05plyB9W7ANaPqCk6Q=", + "dev": true, + "requires": { + "browserslist": "^4.11.1", + "caniuse-lite": "^1.0.30001039", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.27", + "postcss-value-parser": "^4.0.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz", + "integrity": "sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4=", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz", + "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.1.0.tgz?cache=0&sync_timestamp=1584715959282&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.1.0.tgz", + "integrity": "sha1-xhHVESvVIJq+i5+oTD5NolJ18cM=", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz?cache=0&sync_timestamp=1587496311403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-plugin-dynamic-import-node%2Fdownload%2Fbabel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", + "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz", + "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", + "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz", + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.12.0.tgz?cache=0&sync_timestamp=1587419256330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.12.0.tgz", + "integrity": "sha1-BsbVcVoe3mxR/Dn/Z/1kf3QLZW0=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz", + "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz", + "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1588033405119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz", + "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz", + "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-3.3.1.tgz", + "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.1.0.tgz", + "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz?cache=0&sync_timestamp=1562668966653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-callsite%2Fdownload%2Fcaller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz?cache=0&sync_timestamp=1574395720588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-path%2Fdownload%2Fcaller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz?cache=0&sync_timestamp=1576721717499&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001048", + "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001048.tgz?cache=0&sync_timestamp=1587836069414&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001048.tgz", + "integrity": "sha1-S7TxvC6zBOXhFU2oC5Pe4/HPRH4=", + "dev": true + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha1-I6xhPMmoVuT4j/i7c7u16YmCXPc=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1585650396850&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz", + "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1587911215694&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchownr%2Fdownload%2Fchownr-1.1.4.tgz", + "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz", + "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz", + "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.3.tgz", + "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz", + "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.4.tgz?cache=0&sync_timestamp=1573949240542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.4.tgz", + "integrity": "sha1-CYy2Qs8X9CrcHBFF4H+WDsTXUis=", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^5.1.1", + "yargs": "^15.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.3.0.tgz?cache=0&sync_timestamp=1586157510340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.3.0.tgz", + "integrity": "sha1-BjIjmktapMlYYQFCw0u3plH8jfU=", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.1.tgz", + "integrity": "sha1-sEM9C06chH7xiGik7xb9X8gnHEg=", + "dev": true + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz", + "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.1.1.tgz?cache=0&sync_timestamp=1569219622778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-2.1.1.tgz", + "integrity": "sha1-ShwVLUKd89RBZpSY4khtNZbrrx0=", + "dev": true + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz", + "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", + "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz", + "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz", + "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz", + "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz", + "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", + "dev": true + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz", + "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha1-VIGgPeoRI9iKmIxv+LeCRyFPC4g=", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz", + "integrity": "sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo=" + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.6.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js-compat%2Fdownload%2Fcore-js-compat-3.6.5.tgz", + "integrity": "sha1-KlHZpOJd/W5pAlGqgfmePAVIHxw=", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.0.0.tgz", + "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npm.taobao.org/css-loader/download/css-loader-3.5.3.tgz", + "integrity": "sha1-lawWRo4a3NlchEcp4LsWdjnrC88=", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz", + "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.2.1.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-3.2.1.tgz", + "integrity": "sha1-9KjxJCEGRiG0VnVeNKA6LCLfXaE=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz", + "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.0.3.tgz?cache=0&sync_timestamp=1585052282901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.0.3.tgz", + "integrity": "sha1-DZmF3IUsfMKyys+74QeQFNGo6QM=", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha1-K/8//huz93bPfu/ZHuXLp3oUnus=", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.6.tgz?cache=0&sync_timestamp=1584029100530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.6.tgz", + "integrity": "sha1-hS3GD8ql2qLoz2yRicRA7T4EKXg=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz", + "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1572279720382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz", + "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=", + "dev": true + }, + "default-gateway": { + "version": "5.0.5", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz?cache=0&sync_timestamp=1583993714392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.5.tgz", + "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=", + "dev": true, + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.2.tgz", + "integrity": "sha1-0Nfc+nTokRXHYZ9PchqU4f23FtY=", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-3.4.0.tgz", + "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz", + "integrity": "sha1-ASA83JJZf5uQkGfD5lbMH008Tck=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz", + "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-2.0.1.tgz", + "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz", + "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz", + "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz", + "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz", + "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", + "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz", + "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdir-glob%2Fdownload%2Fdir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz", + "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz", + "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.2.0.tgz?cache=0&sync_timestamp=1572620767955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.2.0.tgz", + "integrity": "sha1-w07MKVVtxF8fTCJpe29JBODMT8s=", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/dotenv/download/dotenv-8.2.0.tgz?cache=0&sync_timestamp=1571190782798&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv%2Fdownload%2Fdotenv-8.2.0.tgz", + "integrity": "sha1-l+YZJZradQ7qPk6j4mvO6lQksWo=", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdotenv-expand%2Fdownload%2Fdotenv-expand-5.1.0.tgz", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz", + "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.427", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.427.tgz?cache=0&sync_timestamp=1588392351643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.427.tgz", + "integrity": "sha1-6kPQKQioxx9H67RuCd5aPPgjbwQ=", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz?cache=0&sync_timestamp=1574449776597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.2.tgz", + "integrity": "sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz?cache=0&sync_timestamp=1569416272686&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fend-of-stream%2Fdownload%2Fend-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1572991764265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz", + "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz", + "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=", + "dev": true, + "requires": { + "stackframe": "^1.1.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz", + "integrity": "sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npm.taobao.org/eslint/download/eslint-6.8.0.tgz?cache=0&sync_timestamp=1587767110841&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-6.8.0.tgz", + "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz", + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz", + "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.2.1.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.2.1.tgz", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz", + "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + } + }, + "eslint-plugin-vue": { + "version": "6.2.2", + "resolved": "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1587511767993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz", + "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=", + "dev": true, + "requires": { + "natural-compare": "^1.4.0", + "semver": "^5.6.0", + "vue-eslint-parser": "^7.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705523991&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1583883525323&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-6.2.1.tgz", + "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesquery%2Fdownload%2Fesquery-1.3.1.tgz", + "integrity": "sha1-t4tYKKqOIU4p+3TE1bdS4cAz2lc=", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.1.0.tgz?cache=0&sync_timestamp=1586968779444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.1.0.tgz", + "integrity": "sha1-N0MJ05/ZNa5QDnuS6Ka0xyDllkI=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1586968779444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz", + "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz", + "integrity": "sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevents%2Fdownload%2Fevents-3.1.0.tgz", + "integrity": "sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&sync_timestamp=1582318304084&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz", + "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz?cache=0&sync_timestamp=1585068742276&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffiggy-pudding%2Fdownload%2Ffiggy-pudding-3.5.2.tgz", + "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz", + "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz", + "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz", + "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz", + "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.11.0.tgz", + "integrity": "sha1-r6FPCLoSpSljFA/kMhJliJe8Dss=", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1573027118125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz", + "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.12.tgz?cache=0&sync_timestamp=1587572647225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.12.tgz", + "integrity": "sha1-234NjsOwtFck/U2D1DVUqPHw3lw=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgensync%2Fdownload%2Fgensync-1.0.0-beta.1.tgz", + "integrity": "sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk=", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz", + "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.4.tgz?cache=0&sync_timestamp=1588086905523&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraceful-fs%2Fdownload%2Fgraceful-fs-4.2.4.tgz", + "integrity": "sha1-Ila94U02MpWMRl68ltxGfKB6Kfs=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz", + "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz", + "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz?cache=0&sync_timestamp=1573950844856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz", + "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-2.0.0.tgz", + "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true + }, + "highlight.js": { + "version": "9.18.1", + "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.1.tgz?cache=0&sync_timestamp=1587994673925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhighlight.js%2Fdownload%2Fhighlight.js-9.18.1.tgz", + "integrity": "sha1-7SGqAB/mJSuxCj121HVzxlOf4Tw=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz", + "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.8.tgz", + "integrity": "sha1-dTm9S8Hg4KiVgVouAmJCCxKFhIg=", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.3.1.tgz", + "integrity": "sha1-+5oaS1sUxdq6gtPjTGrk/nAaDkQ=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz", + "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz?cache=0&sync_timestamp=1588268193119&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-webpack-plugin%2Fdownload%2Fhtml-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz", + "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz", + "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz?cache=0&sync_timestamp=1568770934756&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-proxy%2Fdownload%2Fhttp-proxy-1.18.0.tgz", + "integrity": "sha1-2+VfY+daNH2389mZdPJpKjFKajo=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz", + "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1579335902637&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz", + "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1573665074534&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.1.0.tgz?cache=0&sync_timestamp=1583821033098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.1.0.tgz", + "integrity": "sha1-EpigGFmIPhfHJkuChwrhA0+S3Sk=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&sync_timestamp=1585815752864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz", + "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1584010513586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1583993714392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finvariant%2Fdownload%2Finvariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz", + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1569905495687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-callable%2Fdownload%2Fis-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz", + "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz", + "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz?cache=0&sync_timestamp=1576454688491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz?cache=0&sync_timestamp=1579236224749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-svg%2Fdownload%2Fis-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296307739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&sync_timestamp=1569219622778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.0.1.tgz?cache=0&sync_timestamp=1572948916758&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.0.1.tgz", + "integrity": "sha1-bvNYA1MQ411mfGde1j0+t8GqGeU=", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.5.0.tgz?cache=0&sync_timestamp=1588422314597&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.5.0.tgz", + "integrity": "sha1-JhHQcbec6g9D7lej0RhZOsFUfbE=", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1567740732347&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", + "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz", + "integrity": "sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM=", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-6.0.3.tgz", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz", + "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz", + "integrity": "sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I=", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/levenary/download/levenary-1.1.1.tgz?cache=0&sync_timestamp=1580182411097&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flevenary%2Fdownload%2Flevenary-1.1.1.tgz", + "integrity": "sha1-hCqe6Y0gdap/ru2+MmeekgX0b3c=", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz", + "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz?cache=0&sync_timestamp=1583734806517&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz", + "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash.defaultsdeep%2Fdownload%2Flodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.8.tgz", + "integrity": "sha1-iiX7ddCSIw7NRFcnDYC1TigBEXE=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz?cache=0&sync_timestamp=1575601555695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1587567610342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-design-icons-iconfont": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/material-design-icons-iconfont/-/material-design-icons-iconfont-5.0.1.tgz", + "integrity": "sha512-Xg6rIdGrfySTqiTZ6d+nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1584029100530&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmem%2Fdownload%2Fmem-4.3.0.tgz", + "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge2%2Fdownload%2Fmerge2-1.3.0.tgz", + "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.5.tgz?cache=0&sync_timestamp=1588374764430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.4.5.tgz", + "integrity": "sha1-2N4uy5KYLe27ZUHJtoQdfyGOoAk=", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz", + "integrity": "sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz", + "integrity": "sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz?cache=0&sync_timestamp=1560442058146&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz?cache=0&sync_timestamp=1576856499989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmini-css-extract-plugin%2Fdownload%2Fmini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimist%2Fdownload%2Fminimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.1.tgz", + "integrity": "sha1-dgfOd4RyoYWtbYkIKqIHD3nO3NU=", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz", + "integrity": "sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz", + "integrity": "sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.2.tgz", + "integrity": "sha1-PctrtKVG4ylpx61xDyx5qGq7qTo=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz?cache=0&sync_timestamp=1587535418745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmkdirp%2Fdownload%2Fmkdirp-0.5.5.tgz", + "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz", + "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.1.tgz", + "integrity": "sha1-174036MQW5FJTDFHCJMV7/iHSwE=", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz", + "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1584699756095&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz", + "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz?cache=0&sync_timestamp=1569552454213&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.9.0.tgz", + "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz", + "integrity": "sha1-TiRe1pOOZRAOWV68XcNLFujdXWk=", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.53", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.53.tgz", + "integrity": "sha1-LYIb+kme18Xf/F4vKMiOeKCO4/Q=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1581061498787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.2.tgz?cache=0&sync_timestamp=1586894009620&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.2.tgz", + "integrity": "sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", + "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz?cache=0&sync_timestamp=1583734616839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopen%2Fdownload%2Fopen-6.4.0.tgz", + "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz", + "integrity": "sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0=", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopn%2Fdownload%2Fopn-5.5.0.tgz", + "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz", + "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz?cache=0&sync_timestamp=1587481412542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fora%2Fdownload%2Fora-3.4.0.tgz", + "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1560955759606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-is-promise%2Fdownload%2Fp-is-promise-2.1.0.tgz", + "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz", + "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1580284192633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz", + "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz", + "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz", + "integrity": "sha1-c+URTJhtFD76NxLU6iTbmkJm9g8=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1586991218581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz", + "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-5.1.1.tgz?cache=0&sync_timestamp=1586991223660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5-htmlparser2-tree-adapter%2Fdownload%2Fparse5-htmlparser2-tree-adapter-5.1.1.tgz", + "integrity": "sha1-6MdD1OkhlNUpPs3isIvjHmdGHLw=", + "dev": true, + "requires": { + "parse5": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz?cache=0&sync_timestamp=1565253337239&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpascalcase%2Fdownload%2Fpascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&sync_timestamp=1574278262588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.26.tgz?cache=0&sync_timestamp=1588108029311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.26.tgz", + "integrity": "sha1-R1ZY1WyjC+1yrH8TeO01C9G2TnA=", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.28", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.28.tgz?cache=0&sync_timestamp=1588430580894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.28.tgz", + "integrity": "sha1-00nO13Q0dXF7qR9oEO+1jFH7Xbs=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.2.tgz?cache=0&sync_timestamp=1582014221563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.2.tgz", + "integrity": "sha1-UE780AjKAnMSBWiweSsWzc3oqsE=", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz", + "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz", + "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz", + "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz", + "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.2.tgz?cache=0&sync_timestamp=1559685933515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha1-6KZWG+kUqvPAUodjd1JMqQ27eRU=", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz?cache=0&sync_timestamp=1584620714522&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-scope%2Fdownload%2Fpostcss-modules-scope-2.2.0.tgz", + "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-3.0.0.tgz", + "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha1-k0z3mdAWyDQRhZ4J3Oyt4BKG7Fw=", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz", + "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz?cache=0&sync_timestamp=1588083303810&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-value-parser%2Fdownload%2Fpostcss-value-parser-4.1.0.tgz", + "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npm.taobao.org/prettier/download/prettier-1.19.1.tgz?cache=0&sync_timestamp=1587488858835&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprettier%2Fdownload%2Fprettier-1.19.1.tgz", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprocess-nextick-args%2Fdownload%2Fprocess-nextick-args-2.0.1.tgz", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz?cache=0&sync_timestamp=1585170332277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpsl%2Fdownload%2Fpsl-1.8.0.tgz", + "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&sync_timestamp=1569938200736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1585168658937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz", + "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz", + "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz?cache=0&sync_timestamp=1583946996794&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate-unicode-properties%2Fdownload%2Fregenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.5.tgz?cache=0&sync_timestamp=1584052392667&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.5.tgz", + "integrity": "sha1-2Hih0JS0MG0QuQlkhLM+vVXiZpc=", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.4.tgz", + "integrity": "sha1-UmaFeJZRjRYWp4oEeTN6MOqXTMc=", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.0.tgz?cache=0&sync_timestamp=1583949999327&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.0.tgz", + "integrity": "sha1-/L9FjFBDGwu3tF1pZ7gZLZHz2Tg=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.1.tgz", + "integrity": "sha1-SPC/Gl6iBRlpKcDZeYtC0e2YRDw=", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.4.tgz?cache=0&sync_timestamp=1583896720909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.4.tgz", + "integrity": "sha1-p2n4aEMIQBpm6bUp0kNv9NBmYnI=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz", + "integrity": "sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1573341698559&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz", + "integrity": "sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI=", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz", + "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.3.tgz", + "integrity": "sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.8.tgz?cache=0&sync_timestamp=1572829683581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest-promise-native%2Fdownload%2Frequest-promise-native-1.0.8.tgz", + "integrity": "sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY=", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.17.0.tgz", + "integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fretry%2Fdownload%2Fretry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz", + "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.5.tgz?cache=0&sync_timestamp=1585894516752&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frxjs%2Fdownload%2Frxjs-6.5.5.tgz", + "integrity": "sha1-xciE4wlMjP7jG/J+uH5UzPyH+ew=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz?cache=0&sync_timestamp=1571687713993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-regex%2Fdownload%2Fsafe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "2.6.6", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.6.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.6.tgz", + "integrity": "sha1-KZ/mvUozZdwj2Z/URsr/jx1sMww=", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz?cache=0&sync_timestamp=1569952074772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.7.tgz", + "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1588374764430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz?cache=0&sync_timestamp=1581887711256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-2.1.2.tgz", + "integrity": "sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz?cache=0&sync_timestamp=1585774809732&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fset-value%2Fdownload%2Fset-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsha.js%2Fdownload%2Fsha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz?cache=0&sync_timestamp=1567324294105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshell-quote%2Fdownload%2Fshell-quote-1.7.2.tgz", + "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585253373618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz", + "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz", + "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz?cache=0&sync_timestamp=1583783910272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs%2Fdownload%2Fsockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz", + "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffaye-websocket%2Fdownload%2Ffaye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz?cache=0&sync_timestamp=1565864727994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsort-keys%2Fdownload%2Fsort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584829552965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz?cache=0&sync_timestamp=1587719493563&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.19.tgz", + "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz?cache=0&sync_timestamp=1587422511430&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-exceptions%2Fdownload%2Fspdx-exceptions-2.3.0.tgz", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz?cache=0&sync_timestamp=1585970548235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.2.tgz", + "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz", + "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz", + "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "dev": true + }, + "stackframe": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.1.1.tgz", + "integrity": "sha1-/+8KMxixtgw7WFZJiaylZgcp7HE=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1587355518192&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz", + "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.0.tgz", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz?cache=0&sync_timestamp=1586465233837&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.1.tgz", + "integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha1-RAiqLl1t3QyagHObCH+8BnwDs8w=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz?cache=0&sync_timestamp=1585557103516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimright%2Fdownload%2Fstring.prototype.trimright-2.1.2.tgz", + "integrity": "sha1-x28c7zDyG7rYr+uNsVEUls+w8qM=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz?cache=0&sync_timestamp=1586465234129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.1.tgz", + "integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", + "dev": true + } + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz", + "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.0.tgz?cache=0&sync_timestamp=1586160054577&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.0.tgz", + "integrity": "sha1-djjTFCISns9EV0QACfugP5+awYA=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz", + "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1572433264480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz", + "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "terser": { + "version": "4.6.12", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.6.12.tgz", + "integrity": "sha1-RLmK74cD/bCaNJG/ebQ/r/xbT+4=", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz?cache=0&sync_timestamp=1588354502839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.3.tgz", + "integrity": "sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz?cache=0&sync_timestamp=1565261083321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthread-loader%2Fdownload%2Fthread-loader-2.1.3.tgz", + "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz", + "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz?cache=0&sync_timestamp=1565448362964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.11.tgz", + "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz?cache=0&sync_timestamp=1579194040958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkind-of%2Fdownload%2Fkind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584647110516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz", + "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz", + "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=", + "dev": true + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz?cache=0&sync_timestamp=1585245674012&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fts-pnp%2Fdownload%2Fts-pnp-1.2.0.tgz", + "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=", + "dev": true + }, + "tslib": { + "version": "1.11.1", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz", + "integrity": "sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581364183265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz?cache=0&sync_timestamp=1585882977555&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-check%2Fdownload%2Ftype-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz", + "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz", + "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz?cache=0&sync_timestamp=1583945805856&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-property-aliases-ecmascript%2Fdownload%2Funicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz", + "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1583532006299&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz", + "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupper-case%2Fdownload%2Fupper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz", + "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz", + "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz?cache=0&sync_timestamp=1588238331562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz", + "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1588193215088&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", + "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz", + "integrity": "sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1579857106626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz", + "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz?cache=0&sync_timestamp=1572870772154&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvm-browserify%2Fdownload%2Fvm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "vue": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.11.tgz", + "integrity": "sha1-dllNh31LEiNEBuhONSdcbVFBJcU=" + }, + "vue-eslint-parser": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.0.0.tgz", + "integrity": "sha1-pO0mafhxed7dBq/dhzasuzo4ZNY=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.0.0.tgz", + "integrity": "sha1-6HyIh8c+jR7ITxylkWRcNYv8j7k=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } + } + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-hot-reload-api%2Fdownload%2Fvue-hot-reload-api-2.3.4.tgz", + "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", + "dev": true + }, + "vue-loader": { + "version": "15.9.2", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.2.tgz", + "integrity": "sha1-rgH19MnGoEv/RIORLnLvkaQCwa4=", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-router": { + "version": "3.1.6", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.6.tgz?cache=0&sync_timestamp=1588196237384&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.1.6.tgz", + "integrity": "sha1-RfWjo4Q+MXAsBh3YKTk1VOQyj4k=" + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz", + "integrity": "sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg=", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhash-sum%2Fdownload%2Fhash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.11.tgz?cache=0&sync_timestamp=1576267389403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.11.tgz", + "integrity": "sha1-wEcE749JixUxMAGJk+VjCdRpgIA=", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=", + "dev": true + }, + "vue-wechat-title": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vue-wechat-title/-/vue-wechat-title-2.0.5.tgz", + "integrity": "sha512-bCfKnJpbquqNY5ygNN7nRgNHGhyinWd277ecVh0Z15Tk8nS69catrvQSJIuRxXUOxoO/4Y32c6IfNbQUA8oh0g==" + }, + "vuelidate": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/vuelidate/-/vuelidate-0.7.5.tgz", + "integrity": "sha512-GAAG8QAFVp7BFeQlNaThpTbimq3+HypBPNwdkCkHZZeVaD5zmXXfhp357dcUJXHXTZjSln0PvP6wiwLZXkFTwg==" + }, + "vuetify": { + "version": "2.2.26", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.2.26.tgz", + "integrity": "sha512-B/aOV9wgO2xOV2zcEZ+LGyxfw5hArbAj3uxNQcEYd8rbQyt/Rw5dHfiUd8af68QA+KUPB+9cs7jzFAx4Ku6Wkg==" + }, + "vuex": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.3.0.tgz", + "integrity": "sha1-ZltGMOoTRzFxOfzFy0laqz7F5RM=" + }, + "watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.1.tgz?cache=0&sync_timestamp=1585253929080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.6.1.tgz", + "integrity": "sha1-KA2gqHGFkhdAEMB4x1hadM2M0OI=", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "4.43.0", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.43.0.tgz?cache=0&sync_timestamp=1588187260179&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack%2Fdownload%2Fwebpack-4.43.0.tgz", + "integrity": "sha1-xIVHsR1WMiTFYdrRFyyKoLimeOY=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.7.0", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.7.0.tgz?cache=0&sync_timestamp=1586846559504&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.7.0.tgz", + "integrity": "sha1-hNpDTolEKJm4hNmtOORm0NsCpW8=", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz", + "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=", + "dev": true + } + } + }, + "webpack-chain": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-6.4.0.tgz", + "integrity": "sha1-IvCye2qbye48uk+eZRPPZjlANOI=", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1582191620751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", + "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.10.3.tgz?cache=0&sync_timestamp=1580911348381&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.10.3.tgz", + "integrity": "sha1-81lFA2gT5X71gsJCDve0cOFNOvA=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz?cache=0&sync_timestamp=1569736493122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1587138209923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586886301819&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1573488535785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&sync_timestamp=1587149376242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&sync_timestamp=1566978693896&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz", + "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz", + "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz", + "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz", + "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz", + "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz", + "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz", + "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&sync_timestamp=1587811730960&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1587149376242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz", + "integrity": "sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys=", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101311914&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.3.tgz?cache=0&sync_timestamp=1587068375851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.3.tgz", + "integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz", + "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + } + } +} diff --git a/VUE-WEB/lions-web/package.json b/VUE-WEB/lions-web/package.json new file mode 100644 index 0000000..02bb734 --- /dev/null +++ b/VUE-WEB/lions-web/package.json @@ -0,0 +1,31 @@ +{ + "name": "lions", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.19.2", + "core-js": "^3.6.4", + "vue": "^2.6.11", + "vue-router": "^3.1.6", + "vue-wechat-title": "^2.0.5", + "vuelidate": "^0.7.5", + "vuetify": "^2.2.26", + "vuex": "^3.1.3" + }, + "devDependencies": { + "@mdi/font": "^5.1.45", + "@vue/cli-plugin-babel": "^4.3.0", + "@vue/cli-plugin-eslint": "^4.3.0", + "@vue/cli-service": "^4.3.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", + "material-design-icons-iconfont": "^5.0.1", + "vue-template-compiler": "^2.6.11" + } +} diff --git a/VUE-WEB/lions-web/public/favicon.ico b/VUE-WEB/lions-web/public/favicon.ico new file mode 100644 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/VUE-WEB/lions-web/public/index.html b/VUE-WEB/lions-web/public/index.html new file mode 100644 index 0000000..840a9f9 --- /dev/null +++ b/VUE-WEB/lions-web/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + 推举系统 + + + +
+ + + diff --git a/VUE-WEB/lions-web/src/App.vue b/VUE-WEB/lions-web/src/App.vue new file mode 100644 index 0000000..3906870 --- /dev/null +++ b/VUE-WEB/lions-web/src/App.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/VUE-WEB/lions-web/src/api/axios.js b/VUE-WEB/lions-web/src/api/axios.js new file mode 100644 index 0000000..3d8561d --- /dev/null +++ b/VUE-WEB/lions-web/src/api/axios.js @@ -0,0 +1,56 @@ +import axios from 'axios' +import store from "@/store" +import router from "@/router"; +// axios 配置 +axios.defaults.timeout = 3000; +axios.defaults.baseURL = 'http://api.lions-vote.cnskl.com/api/'; + +const axiosConf = (config) => { + // config.headers.Authorization = store.state.accessToken; + config.headers.Authorization = localStorage.getItem('accessToken') + return config; +}; + +axios.interceptors.request.use(axiosConf, err => { + return Promise.reject(err); +}); + +axios.interceptors.response.use(async (response) => { + let data = {}; + let code = Number(response.data.status_code); + if (code === 401 || code == 0) { + if (response.data.status == 'EXCEPTION') { + return Promise.reject(response.data) + } + if (response.headers.authorization) { + await store.commit('login', response.headers.authorization); + + response.config.headers.Authorization = response.headers.authorization; + const result = await axios.request(axiosConf(response.config)); + if (result) { + data = result; + } + } else if (router.currentRoute.name != 'AuthLogin') { + setTimeout(() => { + router.replace({name: 'AuthLogin', query: {redirect: router.currentRoute.fullPath}}); + }, 1000); + } + } else if (code === 200) { + data = response.data.data; + } else if (code === 403) { + await router.replace({path: '/403', query: {redirect: router.currentRoute.fullPath}}); + } else if (code === 410) { + setTimeout(() => { + router.replace({name: 'AuthLogin', query: {redirect: router.currentRoute.fullPath}}); + }, 1200); + } else if (code == 404) { + return Promise.reject(response.data); + } else { + return Promise.reject(response.data); + } + return data; +}, (error) => { + return Promise.reject(error.response.data); +}); + +export default axios; diff --git a/VUE-WEB/lions-web/src/api/index.js b/VUE-WEB/lions-web/src/api/index.js new file mode 100644 index 0000000..9e792d0 --- /dev/null +++ b/VUE-WEB/lions-web/src/api/index.js @@ -0,0 +1,11 @@ +import article from './interfaces/article' +import auth from './interfaces/auth' +import index from './interfaces/index' +import vote from './interfaces/vote' + +export default { + article, + index, + auth, + vote +} \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/api/interfaces/article.js b/VUE-WEB/lions-web/src/api/interfaces/article.js new file mode 100644 index 0000000..2523805 --- /dev/null +++ b/VUE-WEB/lions-web/src/api/interfaces/article.js @@ -0,0 +1,11 @@ +import axios from '../axios' + +const index = () => axios.get('articles') +const show = (id) => axios.get('articles/' + id) +const audit = (id) => axios.post('articles/' + id) + +export default { + index, + show, + audit +} diff --git a/VUE-WEB/lions-web/src/api/interfaces/auth.js b/VUE-WEB/lions-web/src/api/interfaces/auth.js new file mode 100644 index 0000000..50e6b35 --- /dev/null +++ b/VUE-WEB/lions-web/src/api/interfaces/auth.js @@ -0,0 +1,13 @@ +import axios from '../axios' + +const license = () => axios.get('auth/license') + +const code = (data) => axios.post('auth/code/login', data) + +const loginByCode = (data) => axios.post('auth/loginByCode', data) + +export default { + license, + code, + loginByCode +} diff --git a/VUE-WEB/lions-web/src/api/interfaces/index.js b/VUE-WEB/lions-web/src/api/interfaces/index.js new file mode 100644 index 0000000..cb2da56 --- /dev/null +++ b/VUE-WEB/lions-web/src/api/interfaces/index.js @@ -0,0 +1,10 @@ +import axios from '../axios' + +const index = () => axios.get('index') + +const sign = () => axios.post('sign') + +export default { + index, + sign +} diff --git a/VUE-WEB/lions-web/src/api/interfaces/vote.js b/VUE-WEB/lions-web/src/api/interfaces/vote.js new file mode 100644 index 0000000..b9b667d --- /dev/null +++ b/VUE-WEB/lions-web/src/api/interfaces/vote.js @@ -0,0 +1,12 @@ +import axios from '../axios' + +const index = () => axios.get('vote') +const show = (id) => axios.get('vote/' + id) + +const submit = (id, data) => axios.post('vote/' + id, {data: data}) + +export default { + index, + show, + submit +} diff --git a/VUE-WEB/lions-web/src/assets/back.png b/VUE-WEB/lions-web/src/assets/back.png new file mode 100644 index 0000000000000000000000000000000000000000..93ef6722a24c47978f7db1c2c68aba5d3aa94f5b GIT binary patch literal 172811 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 kjmdHW7-SKMJml*}pcNkSx*vF9EzG*cu%wfKHNF z%mc<@^DEWbS|}j8VyLxBzBTLW_y_ol@1whjYbI*9*I}s;jt6!M=3j)u_ z<2>mbt8+!Bm_j=Z4E=17(yT*R|G&oFE4G{d(T0^&7DrX~h>+7Hvw^=TU1gA4@Id{Z z3?tAU*$`@Q;{J~FVZ&!d9U1d;AeUY+UHi4uM+a0OW9H(0w?UDZTRs#Evpp_J@+AgM zgZUA8G_}N>*H`jKO~SXN;AJM+ypAH&&bME-EbQ{kZZeBGkFm?pHx^^T8mP4sj zd=1$FC{Uq{nNJ;qEG}EWd#|_2uCg7*V~us2Y?t*%eGeKFF*GB$tOJPH$=PQZVIXiF z(M`1=s_dY1dK0JOCEJk1X~2QBY&XBPWkJ9D`x0(ar`O%E%G*Q=toYQ`*BSK7W2lm< z=-1jP=W)T$EswNTkWk`L;5UDsFi)x>&UNG_M03ab=JN+r9jQ{1Vfa=aMZ0nvcDsFI z4OlH>`1u#&I%xn#70fdrXUy+}ekU`;XsM7g%2+b&TxD(Qr@5NRmk>wwg%o*ff2p$S17tV5@0B<5p zj=;+MzWUp8GX~0f5C$93dcJb<8zBIh95o98JZG2uAlRyjjaI!dME`KIjy*WJR6OyG}##pN=3CQb2NQIG0#SD=_N~z7dCcW*FO`f{I_bXfk z8aO&mw~S{xo}oBi7({llQDSymf_*bdfS&LF=(bXzlm(9bO7mP9eGb4Q9adwqOK&gl8| zJ8VAbyRJOf{erO2i^3V#a8YN!xU$M;F+p5r3Gc7vKM_U0BnwdZ5^8;sca zCQ#_m)@&tomwH(+0 zt!BaWeU=_ypv;^7Zqxg|=KG6jwDkFi;mF&*4Z^g4$=rOjcPm&KWfXdHduf!-pNT$u z3B~yt_CptyaCTKINhE=dL+V;AkF-cjk*Q7b=qW?qmLa_}7}o&3$>pF<&MQ*MDz{IZbjyEL5<{d!k1!*eRq zSPJ~b-JY&L94%jz6yK20;1X#Oz20$nE+)*jiF5X1Cns0;_^@d{w9Zl}I5oF#xmfL? zMLASyeTxaJfw=%w;6miUGM`-tzt{atI>dU8hx1Bn*V2$!_$=uRzg!B>xK<@VBCNCR zz0YydeE%D!0!rP%yoSWC1BadJ%m)%|5{o^ef3-dCi+oyhn4X`67uv5$ylxKX^b3Bz z7scP*`dUAG7omn9-J=#+8F92g*y-(A;zn&N(7~~mdl@)C<2+-#2Ar^rTA$6pN3wrA z5Egn7GhcfxobqWcf2J7g0_s1OVMol>*vcdOc{|uxF9{V!A#~jz<>G*Ax$W2t;HQki-9c=@{4e~O z&`Opyk92Mp4KwY&L?`F#y#lG7w{Ned{X$;MQ^5qNduUC zmVJg2kCw@PoPX!oXhQcDG(MWMpWjgbnpS)V=itcUMh*E-%z5a01q0Ie z1Ed-@<{7sDLaIY6&n^>VK9MdhSwvXiOpZKF=Gp&kEgPt5gF_sb>@ zb<_3IXcmVX>N%Gefs@vj{KI4{apGw?NA~Rwq$r<2aK*$}QvUe)HCxmFjeqm@SD^PL zMe5ffx8-Mr>@e#Tz1_E}vKbmU8C9=N#Qt|HEfjnE`DI!(Q=jYJ49 z?BkEsoB@NyefLhBeTd#Np6|34JgVmJg9R2Zg>$uJT{P`W3f^?fAF1|QN;f95NCddKgz(6_M5kNV`KmRHzl$RS(dmYIBzV_pk*m0rYme%9;^{*4@ zcOuW&qN!!SGtXNFF^=_Mn*u$P12DDce-Bx8aZM9}L~!V7Pjz-iTHW#YYz?vR+I=A| zLYpTf_St!mNk50d&(_N{v_NT`QaT{ZmC$*bQD?$3@EYdRGf~}_3o8qtk6#C0^loq| zUJRP?(hq@8B#%3+iUE6%X`s(h5ddc8_jM`Bo?ziQE*%={>{5~a#lk%zvyM;3DPP+7 zm*avvjkBS1E^oFZ0r}}a&!BL#(xxESnPPSuW_{>D5V(q71!|YCcECS8J+UCZ<@nD(SJeV@s{pg{#jgF5JEiJgm)j^vsX zT#U8b-M2q@41!7qNRE>5mkRrkrF;xH5t#7K>C z%6cXapyxsrAT+K-*UbTEcY4d<{}=}7>Q;xN&&dxA9KvSjKGjNaR)l!8W_b?od7NncS%mk#L88wL(N$!#cZ z*ZaG9-Tfw(0!MjCV#q8w6i162@K-*eO=tj$m1DtJu{-{6%WlwAbqAIR(Pc*+EK6uG z@9E6#gj_26?bM-T=`mUvou>7GmZHnNF`0=za_fRV)PhIZi95~GHPxh3pV=AzYm{ZI zxKv{rC%B4)2p8zr6ZfjWtn&&mCI4_mR9<%v0DtY!v*2w(kzOKcAi983vorBoIU$!w zW;-qV!Xxz!oraH->}Wn2>OTMlS?d_|Gsz8!V}gaxpxW5Wo9p=c@n(Rdh$B9xL0$Xz=$16kN8-3)3vKhoz7IEBTKsSeVN{@E zZ4P}@+wtq2K{;ViMt&KcnJquT5PzdfAME=#f9}6vFKdbPJUJ(%js$?7ALUZL*AO;+ z_WcaPXz$2zrXcz=`HFtzFa4-+c_P`r8yO;WlU94LNrj3R`p2g-&)0uE9oKWset5(} z!(M}p?1||7$>HE}2MH&^pP8oks1gnKbzwUZX$h3A;`5>AiD?>09e5d~9BsHe5P}p! z0(6i7#JKF~#1Spe&d2}90wkIqO#~Kf;qN~`R&`7({qx4Mz3y87H==#BbwLOI`0Byh zDYEZf$&PY6DZIB&3&{+j4d^$7CaqDxrx7vo#JX zLOxvX8Z9#oD0&W*wWP+E`%huNx~~_(E81M@Ig@`reg4Z<*skEAvX~%pj5J-ei^ZH@ z6Ng~pPaXfS?Dy(qRSD+>9A@4Vs!{C>x&$-s}+)wCQ4i6LVZY-?6 zbnwe-B%)x?Hoap_&FG?Ab>P?cSnTQbOl{$N6Y0~llGebmtCX-m;ik{K6oMarRUEjc zvZ@(O3|7AO*Exy)Ux*`~#lKE9=&tH{q&qr4776+#{IOns z&7=%Wxq-}i>zrnCU>^4X++}7gucgA|7YG=RyCY0qa&06nysnr)nimR9+@H)4wM~vAuULTxM2i?Pxe)^%eA^%_Yus;P!=xwXlU^{6AXfhm% zpbG~PnDFN~8xM)W()fcjMUL|2-j__fYc!vr1+C*~F(m!BXD?T#(u{X?RjkAhNhejl ziw`@mUXh%3u>KL^MrUotuOt5PC#Duq{^uAA3kUJW{G-=^D|hGBU5wHP_Jy#Hn=Whro@`rn~kz`L@t> z_ExZU3p%Z7WtF97x&2uf&YtH^kDHRgFy4l(hU@&P)Oc-raC(RE7L%l8Lm#5RU?mF7 zOT3)tu*2+$2?{EE&%of&pIH%Vcm*^y8K#kL$aLnr{z`6+c|)R)S@KGLS1n2=6ct8^ zVmV5*x~-yWJPr|+iUUp9ZG?St?=Xr0YIwH}hK_Y|phSgweS@F=_m1Vrc_l!_p8Ptn+h|QKZ3NtOKtue^G)DBk0 zcisA(dvw@QvGFaxfw9!;LOoh4Y))U`%wjVy^G92t!~hnL1<3G`Y%*P7mm?OEHde5= zfhrj1KVtO6Fz>UD=|Zg;XtqAMcZ>0V;5(oAu=(78)jM9zuYab`vH_(Jca(0hbH1Y! zAji%)PC@)x0|&cHS14uhcJh`OzX6FilD`L7Z%5gqrgYq%&i1kFJR#vWTv2#1qkm4`717cV*=j`bt`7 zo8%}&Jz!OCVGQcN$^&s@ZhvOS@VK4dlKgb6zG`~;cV^vjn(m$g0SXU7YDQpla64@4 zG#L-Ff?7tl5#iB_{$6=Aq4EAQ5k3aZFBorg9Dt>tjW@G)ha{a{(tW|Qu~1V&e#m5Y zJXcRUL4&%iwF+~u|hv65XI1@9UC(=zkB?qieMtt+n>@-h6kr(SG(b~aRqLxhI<_c!XTaE$2(AtIc?OZ6c?$GgdTp%vcKkclXo6x#XIwVe} zNbayci7@{=m?JK{KVo-KRzv_5{xWh<+NRwa2L+3bnnrqfD7I6dAOHOB{B4PIF8fBq zT!6`ELte?u;ZY-xQTrr8dq(afnW6_@U<&|RKBS5iPjJolsd}fTLPOJ}(Fn3$z^%$%1`DwwQl3``;+u=t&jx8(Smsety4H z@~~+vVRVAb6;p>RElQx9Q?~qL7F2Q>P>xlsl$j%r0H5siBP<-V7Q80OioxtrlR;nX zC*IZ`*lDS9F!=B|$m2hxnP5s0agqm3aMvp_8KrI9pM)A*v4`azc?0NSM1PZ$LlK)iWC?hjg&*bYEfHefnX`&M0gwR zYhQdQ`B@^{f>i5YPYDh#c{gP^wue1gf7%fDD5!Obi zFKr`mJ?lP@kMzlL`DG4-{vECV3pX=f9?s!g zA9%69JLv~E!9f}+I0pCo{k-lQ@|+owzDdYTxH|7reim6K_dTFTuC7`JBroK-%NIts zpgk4=4UH24d>F^U!y)O0xvtmN%^tjwP~qSFy9*HTljBFZzJ*7%J!8}Y5_H#)oQuAP z7p3tD^i04-=Wh2MSDhOH0bz;(`fK2xnFXcSX#w})x4fe6yEFkkEE#fKCQ6V|rJ{vt zT%&=Tw zPAaQ_9!=dEo4Y@WuwP||P@c*^LgK-$1V^y@Q)f-N{FK!1BAWHK?1OGdKjY|>&Jmy< zy4q*RY?;UZ^}vQQVE+xkc&NY9NKJf`Nl+t&lhjsg>oR7);vdT>JrWpyehog{6rM}YOAruOtLFT5K>kN(*3(&9@~b+qsHX#4lPHb)civakj0I7{tJ4m zl@t}VV7-fH9mT@h2xdw8ZzEB4z<=O7iZX#;zfJVJQ1}mGAiz*m0s2A0eU+!>XsCoU!Q!qZN;idrd81F| zv58tyr};gd@PVhghIqEYb-~J}{IM)_I3-~GkD8yjrnzZqTYv4-r0c4wzA>$hj;G5_ z?4^-!F-w8gNybzk_n;G4;8?stlU7np)kmZN5?o$acZ1_kDB&s~xWLNLHR>brky|Ys zddSF)cobE>{v`!{O)_ZtTjxwd*)uu*2)=Li$WLe^UVoe4N=%(G-qrV2*Eg(&3Opy< z{g={(ai}(=s$9&R&YLhWnN-{oR;eo0=o{AZ3xIi+>vn{V#=V!@ai<(2_vG?^bYWZe{V zNUd%#Ja4DCfPbPIRI28;7hInr(v(87fpB&-PU7aEI54rQ>fWz`2x5U|JSThPsK{GR`zW zb^g*)A!tHMRRM3$a!oFFNe(w44w~ipQLjtGF320#iAIFSAd-*;Tj;egcWdh@WcckW z;NzOki=T%dUViT#i3J%Sbm+ju*tjr0QeiLXFcgZ|>D?2afZUk2!H4&hsv{&skx35; zbzB9n=${ILw5NC71+CWc$T0b&X7=n%hVnaqreVt567icJ`UoGc1KAJapjQD@Uj{pU zplOr8+s0B|1fJq)5o5VbpfDzx(tnRUJHaNHv})01SLZn+LIjzl=VgvUs&a%^|Wgp3C z#u$$r+T%W!M&T4tkqkqGtR+#_?{=P=bD>8C;m$jAfYY6*l$z*`Of3();T$1GCv74Vhri**!^9rDYRpDuCi3!Az|q`+cLYNc$Q3M9(p}+sQ@e1Ndi-x#iRv z-H{qAE(5JPJuBz2V=M04+PtqU(bU;Or`4llV~l@eRU(Ri|6bJMTB~iUT!9wVlWdjs z%KbA_u$~*G>#6L}=;R^He48IFRvmI^W(-)L2(oC><^E68WV0Gtc?h6Y}{FDvEbW;}W6YpW58$=*s%%ArX`O2RhQLwh*8x{nvZXc@{%)fI&66 zH;D;Qd!@?g8L%NTk*{sX5Mw1yLkmzoAdbjwcZsOJWo+PLj4{Mx{`6#xZ(>HI8mmEr z@mLv3C6@Ywe{uT}olSTG&+eF;`bapGDt;76 z9ZXA-uO&@Sur`i7q6a=_wUy}UajV^(9OJ42MSUG8l)SZjG*$mc<<`?-oqc zJsLzWfv!3TO~I9wefjXclo6A6Z@zgy`<`rUvmU1w&D`0Xi?mGgJpEPB6YM(HGDcw- zw~>_PQ%7AYBx+aO)|OALk}i`C-yiw+&*cefw1q0%S{4;{6P$e}?T`x00U}^k=$dsY zU~2vzVUK8AfFn_NB|V^Rwm(;TvLg!u5Hc7$;8sZal)~_XJ}3KeWliPIt5<#$-Wlc4 zENTp{IlH+DNobZ73I9%7@zJk#%|W>#hKkzRws4K=Zt`N(QXFW2(P5%{r2N$uTW6LR zC1W*6>&2sGFq_yJ`DNZsqA*(I-vl|XP_r4g;>I88Qa$E!@bgDlVKMI?%IlwqhkUy7 z)L(KYpTlfhH=;K4`IUsG3*`yENHk9=W-;zLP7^VGtxm06%@B-UUe+L77FvWrb&TbJ z3U))#E7oLjt9Od)E+*L+h7jv8`8~qNpvMC`P{dD@*=kT#)C}a{{`KG4yb7C>o7p@s zhGeL8X3zwlyCVPRb?rqyrkt1FpPPahIp(w)>uPtLS_mvt6C-=MxGBH_dU6zS`=u_e za2F2L=*Y;2GN*%KMiBr~x{i%l51bL0JclV&n;8^qW|q8eQ#ML|co{tVB|YkF$8O&h zvDWolbci6qwH0UH%xy|w!(HB5ByG)CdVm@Ig%VL%8#xN?5Zi$(UV%#!G^;XnElppT zKP=_^(MU1rS9D!09{W@q5AluE!v+4ZVRVcGJ*qy;C^dxzim@jvehWYoj?Z0ig;-xq zPPC~*dIeFZb$mD}e`gxaq^DZHRz#n3^_fm2KoSC%0~k9h<8w`_h;1STV}Ks#_&?`4 z@a%>Mo;}{;`HpzJ$oRp2sn0URPl@CxG32Jzj5jCq#K~mnP%Bdv0x-v%{k?3(o1+OF zM2TtG)DK45b@9=N+Kyi=?R7yJ?zqR6eX#eho*W2rFP49Rr2SFZs4~60r?EAE z18?1^*Tl!rRlc%3p`6)lHCBVE8^LMLCzsutUh>4tu_8ZRLB>DtlUtRJ-fVNNl}6te zh>!Ws2|hLNP=hxqUYwPjt=-Po8(vAC337K>kwntiK$ee~YENS6N1etvVRY?pV ztpYTYeU=wc1Y$IYH$+u-PAiJzpzfO#)lU72bdJfOnPrU>NCtv-rOp zTgGXLj#?C69cd;I8_s+wO9hYs8v#!+Mpstqe9!Yf=Ehs&d{$Q1P5?R}BLdc1hk4JO z#sAiC;1xy0e0*<;pi4NS%L7+DkvVz|AhUN|%aodfRXfXI+l?M*3EW|{`P?D)8D`vm z9)xcZfsfU65}UY#z*p^Kt$#bjZt?LO9^cg096Jbp?=bP!PSp2}!{j4U%^nZWy;nXU zd$j?@1%7Q`+&?3-SqiXxd7k1P-(5JKIP|W5K6zupARI2^PT9bSGU8Wg$iJhp_ET?q)GDF&|o_+xq4vN!Ko0K8d%WfaPao& z{ws0=xACqO{QQ{Tt#1{!8aH#z9_F#Od{jv3Q)(PA32Ml;e$BGo>mxogGYLeZv`)ggL5lZX!G8h&C79%H~7}NbtsBQq(Z>S&?bvb9Dr)&_?HA32m3Dp&i152J}Y-FSKH?F6xjA~mwz9rb^ma;G7_6; z8tw~zQ6S-|s@)LQHsnh^u3DeA0GuWqV7}PM0z-f4wRsR=$OsC zQgHs4NP{V*3Sg{a>N^7y2H<6XT%IZX4#dN}wQdltA>cv2KnbJ=w19sdi)<~+WVY>M z7jt5ZTG-T~Elf8t?$chAG!hw&Q;{i0jRB^MD^dU-689#gMe?(u3 zfZyj5VZKVYd5#b82vlLF*KiB|-I*3IYq=d9ykAmB1fE>F)I$ba!DsWAOPXPTHPlo8 zJm6UZ*~HcScSvTEMZ3hcHQ2Gbk9N$rUv3jBRA?C4k)8asjM9{Rf(#R?z!qpF0Z8Z1 z0By+zCmyDYqdp*i-(998KAuT=nk&~a#OSO+avBAP##}uYII^lp7Yzhk=$Zgc zN3&lOb)TNb#2PrtsEYHWMr}Weo6#})q4|SdUc`Y~7zeS^SIlldhaWmPKRZ@jOvRgx zTyragq8ehU_Mq{L&*=->;aJe(7TU61C9 zCFh35URl!|COk1TI80Pp<5bet!`JFh`Hq=(0VDxE#a;lb&7`V4y%c1gWdWZ3(G;=8 z`S+Ht>c^uGk!={SlUoMAvJ=(;t3}1}yl24X*RtM6`lappnZM>Wd*!m`M^oBH8w?E^ zLzcpaTQ~3e={0x9vEJvAMy@@KC(EQofv;Ipk6ag7s2Fem=Yx-)^9RO<{__zl?g8^P_>#0y z>}VsppCfeXj|V#xMcEAL9%iIm8AGyDA0bP*_}5p0)WIrDZ_RZB5%))WWLd1yf{S^H zSM$7n4SC44kIdM%iJKE;i@hvSxcB;_s@oo7ZKd<DOMWLA$Rpk|AwrP}P>_>Ogv)R)lhU5f+aOX}!Gxj6 zStI*+Lv10>nUq@QVyT|Sn@81S(`@&_NXS_Vm*7Qhz#!wv30!Wx{Y(J0!$O$-)J?Ht z^jD0n2DAQ)txC!>_m3&`4n^?_ufLP%0lPson0W4H=AI?5-9WWB&iexRUroFTabF5(J3 zozU(&fxNb#)0r>@Z_^2a1S4P#t+zhBHG?kHffcS4y7j*Oqi%Li_vkVE zoY=CZ6lVLZEaXqPi|r{Q6_lJ*UAwD=Yz^eW3)`Be3%TFg3!6v}+l91T4Qm7}@Db_v zvfrq5LYx3aW-{ss9BYi4>xGDvBtL#vWx&3wu3yxVi{_y(|%ux0Y5w zHhpC*YkSsR>5fdr-VSbz*N%pEZ=}|Rn!})jrLvTXQXj;o{ z!I}t?qpJv#v~-I_tOdfrbCPJ>w4Ic!qL!PiOmGzN-2H!Oy6V5C-naij6hR5;25AAw z(IZrp4r!Ex?!V-QqR6WJpaIXz0Nt;bzgD6L&(bR zSJ^lksDwSAnDaRj?s6`!%QCr6U#{v|HSe1a3n!hRO(BpHz{wF_$-~>{x=MPdwKoPT^0E16Cycxrf|-2p3VS9wnA1Yy zT5tYtnL(aB)MQ=xznehVceO@`Vh*o;VGtzE2LlrMGi?4Jc7*Coi%a|R!D60M(L)k% zQLL-6pjfELgtDOVVOXw0Z+dmpw4Jh{m}yNII&p2Ng=wX#DxPbITzJ9NVW3T4GOn`y z*sk2In*RaLzmR4D6W@=}s&;)6w`pB|@#_bLZT|G;G9szgZ+mcn+mW-lV$1M>XI$6P zzLZ7A4e=hwLV#Cgo-ejG=)3Wsol}=CJH$+&Y;cPYs0${z!lkO;F2d3{jg<9l{*~Cm z-JTw!c-$O)XwdbjWb~M76o$^6In9F?Zh2zsEp~VF#bdMPgYkEWimU85Wey<9OJf!HxktJ zJf*IZ7;D&MZF9MglVo5LLyrC{ix2VsRZU-cW6^%TG!U>LBXTwSsWoF2Hs_6G#1aN6 zxO;IOKQA~uPqlWudC^yQX!A=woK+woO1;dq^0_5y$jlSSb*{)^({<{c9E7~W$G7#CE*6XY927YEuWy>~U#&|#+_>>%x9qJgd)V8~s zyDH2?Y7W%N>RO<8{1>vI-HC)XFTDoB@v3GngD+OMO`$EQ6mW zPxkW--GT03f4xVd8lGlBpQ?y_-sh21j3f=7-n4(hx#fBGCmAg{2$npsrcikZHuILL z{7GvcVW^pKk>%qs@Dp~Y==2-!e}PND;2qNL{%$<8&flhT{%!I|$juU|X!(c^6OcLF z{R*`Gc=NV9(6WK7>IAS(?l;)9SFrd;Jq&=9VK5S`jFPVC%6$j&Xp~%c zXOos!Ty^G5_-iv9iSR~dOpcs2oQNtTS!W143_!of;Ym>;fJ;(8>`c0Ap{eTB^DZ>W z!{a~4vP1=59_QdZ!O*55D99RS;thtZq36z6CEM{G(^js1nKY|O_wSs};=tj_QOo`s zarQVE9zr|I@9%_u(*l&LerIL|j3i(qN+&vQs1F#kZxbkah!iBkv*YlT=(-ok^Q{Za z2Ro^T+CPjSkA3Ufzx)EB?F9kKq-=cE#dXQfYBPoq27SrQD^;pu9UiO{MiL-7#rz|# z0&lOYDru6<6xR0IM6;CfS1A2vn^i-BE>2u@+*=1mPv}@uwtIE3XZeQ^qv-!=q*|T1 z=P^@4CG>~o%Ri(aMGU6eMpbExbvUpSh6RO~Z|(-kW{qY!jez$k)rZOaBst%ij1)rC-d8&gL!X|CPqv5z$s6<5w+o_4 z@H81&%m*|rin@gL*^Eme)phst*pyeVYO8;9e*=*3T&4GcOm` zcuGElsRL2RRi`J0LWx%}(Fn~|Iw;AEQ=@|Qi}?4@PlEVHL)*7)sj$96&lw;D0ep0j zw5PvVamniNS{4ocS06j40|?pT%7$hYlna>7#Z$w~^=1_$AGdf%z@OcdvYBzuo0aey zg7x^N8;NC@ClysktyC?fb+?3;9p{(HE69{X;=H;0pBY%b=SfQ?F(68t>_gR`ir6O?p4uG}qNb8oIoYE~Pj7akpbJ=4bO3@C%z=?U4|5yTei zL8ntvCY~}vl$@bcDsu=@0uRzs2fS`Sn{)P8NLy@<>!jj`j3A-Fk(9}jj7K<~<8Du^ zs$VuGeroz~)Z{`|aK6NRFpLBuo2Mo*4@Agtjg3_?P%ped0hc$1(XZJcp7NAUVlF`{ zfJYB~T1kxQi=Q??x#WG=x|H^S(2h8Q!$Enr3;1}_uYiOOcgGmn1|VT?8q zF>`uQLiZErco!y2i=jy3*Q?1%)e*SDazPg4B7+28FGkFkez$%Gq8dDa znT!#RXu(Zhq6qx{%QRHXrYhChw0}m{;=X>X7YR*17*!TL7moS@{VX7!>nK#9mK_5f z@kMvHwY^1d&QQ{*fw7uN*^^y90qczGdwG@x==iWD-il?81YMDLC04o~aQPt!&gJqSI9MSJjdR$?pO z=pydSx}!xp3Rim#ay}|b-sB3aD z-+HG_hhG>h#79Vs>I^)=>HN)`&h%s-i-W!dnl1zs+w<}d)#8>o&lLrDca`xT!?;HM z-}qaM8bxiU6NnD96|n@qk3>8MJ8mhE;3PYKghWX4Jj+*mx#(XgOH;nK9@?8PG3nG=2}uii<{!1RI6>>1w@6J_)^4fn|i= zdvnPC1Q(kZ+NE#$+N%V9-Y&Drf^TK(D@u`iuHCvhl_ZlGUyg@L8dgyq$@XeS)lc@5 zJ}xSab8mS2sLW7S{6oDMf!Av~SJEuGG-}9_LH0G}PKbQc?<=nb1j8U3lAjpjTdAY2 z-Hnk^tO~0O7zR}@aBsRf!EFM9PQ=#DZA znm$kj@9y^W*hj#pEz+ZXpc3#jXD}&9I{97%<4ZZ0D`E{=Do@9F{HngCrWh|}l;8zO zjJ>MVL>_*i9bYjxiQPkMFOs-gay)=&qOTq>L$pzjw!+#dE?)K2v?f@F1?nm+O-%8> ziU(xTGEGm}(;5;!3HObBVEXhz$KeIKjhAcYtm0}?b+YJLR0wuuKRpfi62H@&cKOSF zYWdNOFZ4aE`8ikwPk8YbJDLK8mYIA0)rCrAwB|GKJGrZvcywF5F7O+~2GfwZSRB)2ng`Np%|0C34N^Kf<6qKkPx( zRmw^u(&EA|8k}Z21HcN!+3f?K*vd*Ca1B3<+4fx2BsBtRqa|CNw%R$cGG3TDkWlaa z{OC5uy})Hvc$Ne6I3nI99hO3rJ1*znrNOP=MuU?GX!ZgKoGLzDNtCy*{7L+JS)P@4 z>ycLsfCOn4B@GbUQ=FV!y#!EWj3PcaK=K-{)T}gZwn`6*-$9gqE-F589(3sEn2C$L zcpcDO&Z+r%ixsJ5)Bn^jM?G61{?W)Gi1!=rHnj9gtw>wuCtww=zbcBBox&W(6Ms)s z$}$<*vi}Li)xF2XX)YBfKmv)f^>H;BA<(rK2JMB~e5!NF$M-Z*OOJakT;p|==bfFG z9edk6N}&r{aIQ_};SugtOPwe~*TO7u454Dd;;1qEMeRhE1=^(Vj9DM`u&rQ1v4l!f z1JPXBGJB;?a`J!&Z2-a=ye|?0gy1vaZ5#1TDlH8c{CqpYaL!*)Cse|2>ItqqWi9I^ z+D&?$8GPS)3#HkG`ZxJCP$D#M@fFC#9lw0E$x+`x;s2FeKk=d3mk&)YC#m=l56(SZmo(6a~+s0nX=>{ zVpD`tom#Qfi7|9l2n8Nnav>!}yqxXp<{3{};*uObtY&>g3r?+CHs~{}n7v(Vv(oLc zNU`)c&$5<$vmp3Jn|h0*GWlqC7++(?)}7UyQG}OGzG>h%{53c`4@Q&G;dAlmRoO6t z;@N2y%^Mzai6jF&^$lk7n-CXkh8p{IISO-4ODp4|C~Xd5EBK`=LXoJhmXgvE5CL`Y z>u_;ED=dw1r{RxK^Km@=@MD<@$V3>b2XmALum-PvbcT@m3Lc`%R6RvTsY}Z^jK-n- zHmGXL$*c%mc#|K+Szg*p25t(8Bc9@Jc{KNj`^gg^nJy_qd(@9|Ml%Q7W{*)q3&k}|Zdy%_xc z1SzzK8Y>h>?rY5QU{0&T9xOg^W#z>jltfvjXJhOcu!}DYs#=QP;Y_jZ4cWjm>|NKkE)z^wd(Q4J@N_Vhc#Rwdj=u#k=Y)TY96> zVngL*SX1~{9OgYhb2h+vHvvZ@U9Xb{v3JndkGK5lWHcjBXj5UqCpSbf+68@$8sXnl zq{eLOT)RAqmA7Mvg0`fZlkZmk&DF;djE#LsyfSYkV=Ox?GovJ2(0*4zP9?BEXq*Vv<`SWki_F({7aL%%&Hy(W$zELA!{$>dq<^ zdl>y=^-tYRqNm~&>TA1Z_4+e6_@C7*zG^uM3LhICg?5jt9W_%fY9kX#yGDhw%P{9} zd?EWe;_ynvl#A9ZpSZp@eU07#p(iz`Z)y2Br9p9#S3HNuC+?&Yl~RP2-@oh;ui+j> z8Lb<{_YaMDzjEZTg-JKJ&iyt*@rxOlm~aslb44ys?;c=#)g*^Trazmb?0M^6TRH?t z=6+qF!g>3tf~~B^-lYwSc9|!;9M`(Eu?=rqxkZ<^*J^_hiE7T*|Laa2N00_%EAsQuGdI$nBa`P2Q) z(9gKmQ-*uUeQ;^pvkrrG9o9tNBR2pAe(orGc&u1ys#A*z{^KKtPgAY;Hd_f7+yQf= zR{}k4MQISv80+R_8g<$zby&t88=ma95Y?T@?)g+Y6?Y}}&lRu*?bvO~vWijl-{&wdj6Ss)OH&&YXo~q3e zU(o)MoUkeV2}x4{W5ly27#STWr`y_}BCYjo(v*u^<5XG^zeC`4nx2*E?2nlyE%_Ez z`$Aq8*@+|?Eb5%F5#tv{K~8)Q!u+}$H@URspWokzG(9E3%?B5KmGsi*rhX@x@GMFl zk=Q!5N}Z1({$SBKaRxh08q6rm3^zpr} zCHki9v4vl$nUV<~)%!w->-br=UV`2&5rxK^%S&si!?x>5OY!n99As%9Q6eP2d*NZw z@dAa9JgK;X;G(8Y)KX@9;71xBz)zKTuh-iCuxXrPhT$ndyVCvc_j8V2Z3fk@5ox(; z223RT!mR!WAoB|2IzL8!Y+${^CWlC0zK?% z1$SqTYB|TWFiI9Nl|F^x$EFR`Tin*?$`Qx^$V2^f=lKhBn8HJS(i>!)t@7hM=lp#f z^r=?U^H2XE2lfEoQ7Lh~7`l|H)m;BYx$w zbXd5|h*7=DYye83`l=A-xQdE4%J_f=FPd2k`{nSHKMrttWXbQkR^>>RSTh(4{0*l- z5k)XoSfd7&V~Yk@0sHS?$XD#aa5EroqKq{q6ODq!DbPb4rgA2Mb4GI!u)s)$1EUc5 zM%4!WSRH2O-p{Kn{os6$)04gK59oU*g@r>=B}g$NZNls7zWn=eN=gDtgtnBzgpP0LJX=zy{wr}4wI=APvfwV~D@%ltsvtvf%N z=bZNmapQkt4VOsbU2M9dH|=+znXW~xt`1w1!*&gTn#5HT3Y&H_f_jxf$(jV;^ByF;u*e84U0}N4ai^aw`8`ivg z@;NK>;-u6UrYdiA0_G!o6r6tyIkq`GZbF2~j|Njo0#X`u-5k$GwGvk?_tG4SB##^z zo$4HQ_Dt`gYftAkLrbA77@aDZTjo@nT3(qp%_mDI3eFH` zy1miLSLE}j$CiU%;7s;;OU^T_CKHU2nhFW#l9f>ZMFlZ^p}$1?73ZBJZ-++lTVPGl zZ(*#DLs%Ll80dCFmkLqZqH;x#RC*(aZpXLs)=hr~5Up57ueqJK{%cxEPa?elQ-pPbL+j z^Qn?W_&?mmTW$wfE8J6h(UT7OcOry-DLZ0w(wc?+i){fDTw7A4#}DVqf;%s1wTirw zKv+qN1MqTFGa$!3ba#N~#`?^<(si>w4>?YU+gOqcE0m=|In;Ce%9DLIv>Wc(Jhj&2 zJkvG^St|WAJqxFG0h@Ip;EppvHcRf`FF) z7->AYp|hf4>}&Ig1I+ACl86xFT8X*B)20Jlko%lEF>HFN1uOy(qPR6h!^Xkp!qUBK zoc^D@-e|So4Nd|MRT$%;QJ&%Y)%LIXTBMNWKNq40cs~R8*oNiE8Agza9BImhjc3YZ z?STLZE=+oBGgo$ru$7qBk;cr|0jRp6clJK8<4B@l)n0xVC4>}F&x*u_^J3l_S|r2^ zxO!55F59Lpd2B+>TwcV3-gjWLe+d&*j_(@PiUKOBB(*jRL3uyWUnmGaE!~pbuTqXP z5t;V%uwKxQ@bpkYToopzi39U97&}>uY59<{$8S|vTo2Xm`bPLxs^YlCkX%xx1~?rM z0qnGbR9Lj`^}44Th#6#b-CaeRPw?>mGVGo(mSL#>9WJL=dLzC~A%Go0D(TFNzeY@Z zCtal6w&5#>W?zKOX~>*DpQFFuzHAQ--zC30-sEb^M?B4Mt+&e8%f2td7Q+upu{9Bc z&24vOZgXq~zX!8vcMtal7P*LR|Alb`EH7q#KtTi0<@&4y2F#&w$}-DI#kS0dHOr|{ zp!>;f&c^OyRiHJL&!nXG4CDi;ul(`1|zpZ_cURP77k-LfZFC zJV1eGBdbNhI`Ol$l?!kP`0K6lr`b{SSMr4jCA*WrrS3LvD!?n-RKI~Xt_BN|8@-Pe zi`A+dZF@Crtky5+zQJed;^6L`NAJPh{D59AhEf45U%Nqgifbuv*k5y)65_M^6)6Hw z0Vl;VrQwpj@k?6;{+C(R8^k|J9;TPYYt{Q31mpLu{in}YH2t0>0MtQ)W5jnx zdH_O)BE!>-F9MPd=m6Coiw9e%iAV{qC@DeBhn^(XSAy)tT zoQ>ZmJ)~v@9OnJymd30(?~EZIpMXVd?OVM?lqFes6r(JMdT&;FIsk+4P+-7$?(@YJ znAd5Q{qF`?qbbTgatZuT8us@2p6YOS+s~c^3B=}6`Ij=ZhXv=)*)<*ZqAwSRM=W+(tc>fL{@S!$>Lvs^mCbN z6TKnU-T-BVrUNZi={bv=|DsBu_aW}$({JBunnk0dQl$+V7<*n+s*%k@?Jh2^ zB)u3sH4|}l459K7_m+pWlWhs$z9<@!vD1NQfuMRGGW z(Un@-~_2uA=Gxr4;GC0O*6ri~!bG$*`_C2MGrp?hFEmAouf0(N^ z_O=UHz)6T2Jqz`N5S3?HdH4Gs=1Q&7&1lhbp;t`rP3suo!eEpX5^nAiOh#eA^_x_8 zJ(O(Eb>E@b6JcQ|C#F6kDRc60-~Yz~xRH?!JPN&{+SBn^@bwB1R|6-dvG>K6_Tv&| z1<4}#65gGlKUzj!{W{SpWn?lA?FDAJ>rn)Q%9!bWzwOvq||iwlc)ArHoR`RaDm3|P)5w>dA@{J7`)<9}fcX($_w?rbYxn^v?( z$0Sq3N!VbvGq-=94c0xBqlECJe9>k3t%Ep@TP&x9SUZ}Q(=+2Uu?E1ZV*nux@a-tW zcJ`=413=uFRIJGLRh8)0hn6}YyUlf;DFn^C;BreR6pVbvK-DwCm7|;+7VO4-rAxMB za2hZ-TeTRT(E5}zoyZUId&1_iE6Hv{sED5w9{;VO zC%^pW2dtlVr;Yr);$&KD7Z^yB4-6AsizOR_|KJ31^{NA~=_TNU(QF9{Z&~Am&LkG! ziov30+x!`3Ves6>Tnv07o590=5J(ZYJf}^!=KkCg*Z>A&=|f=HZj|uNfxbLVlkAoQ zq5ugUf=3(B+d1|wl$oPSP1X6efg2&)XXL&q7p8?GS8iZzrv?3yi*kYv!x*t23x@T| zxij;AmKC)pq%oJ2>_{j>HGEI9WS=3ffy>PG=FwSX&DbY6yq)guQdVRKfLvPS#lGir zgQ6FCN*~t&RA>pb3VJP~=Pz!)JT##(p5Q_(oqr2cV{~~zpAW;8w^}^O@xo2GKc~WF zwi4ow{~)yBzHbl_P+Qv)A(ps8y$Mzv5!S240)`RaOUunwZLtW0R-^jK#;VS~#D+yM ztsLPK{_A4pk^r^(@@wh~KRPPu066NjAbh9`6MPd2j8drL96TsmF1fIN*b`$E|Cp;d zjCrn=qS9lqg>sSHN~=ZF^5-4c}GWI;JOSwTiyB zQ<)kUTZ+kS85`9}Pt&`nWnQ)&4RqY+4k3C%fAlS4nN+%rXv^E}ED8&eMfV~?GM!bd za>lWrXJrFrv0Ia48PXzp7SWj#)bXa7#S4QzLDMHgJ||VF*kTgzG3=>Zqidn9v#Tuz z@lo(Alqy@U>_r~JCC&!4yvuMWJY!Lh4S_f2n6523Y+JW4HC1AiV_OhBCR4(qNUws! zK}3gOUt2c~t9>RH1x7EV!O8wpT(FNz3TzzpXH;!pnCd~p!<^i{pTAB=p!2raZ-L6o zjRDra zkF>EzFMehY6~Ec+2zRY%^*;SKrny2tQ{|c~kj3-dbGs9AW3ICw;4A{Vo=C}aotv%* ztkAG=T0tRk>h3b{cBOkWTRp+sO2990->(po;f5%9nCXwdlVmCVW-yO=SXAnll4@zD zqK5p8UFi_;G7k_C3?~t|zA_%@&Fs_o&4rI7k|)< zFZ2nnAGa{f>&n7xgZ!=BTrHX}OI_a>IZf=Vr}bDX7gy&R6eC8%wj8G)?_f#241HR6 z)%^QL`hhPt#4J}G9q0d;6tlnlr`K%-kl_4gJN0*Zz&7b;u(5~4FCFzx#rWRS3>@4o z@j}Xh&?nyaN6PSBz4!JwDk4=NC*?PRus_ z80mj8>f7BZOEO^DY?{txBqys zr`_aBn172*aYg}(!^OQtC}#jk`j2o9Fz#==&EBm}**_xl5ZRP>D()*nNVhKTFQh6w zKQsgyiwnPaJi#o6dV2h!uuN-Z*PLEJjl(9Mh&Y!#DCJ>BeUnMpabimEI(+-wsG*7N zvTS@k^Q-?WG_DHdF*iuM^gvw22>1--2 z>&Y5qeMmVE29wAgt~OO+c1)ybez8E_{Hgt--Mlg0pY38AWSdv+^blZslgL{737Huc zcZ(kfbGK~a^o!#R z8p576)F0x0vjG5TC{_WF*pC@P(~iPl2XJ~EPh44`)HK&Y6>}Tp{GCg0`w{tt`aUZ| z#GBW(8)hZ7{-2f0njhoBYDrHp_vKJ!gjy)+4Nm5@Z038A^QnpDQq!|qSTIkI(r$kg zWpxF#psm_lE>kc3T|eG<5Lk)J+YaHj$9X`i zk%t(Nd<&_3lN^@Dh`>C-`>JV;^ku|?p0j2I{Bcqh&cK9`9eO^UU%j<>j)5OZuESzT zu5|28MofJ?h!=$-It(vcJRO&?**6^on2JqNvlnLUIKmL!T5S#Sh^sKm`$aLoT#|cF zdd%aPnVAhl-B+tbgigM$j?W(ffIa+lmeMn*Kz$!3@24}&lfmak(IpwbTyIy~UBGvR#`U6T_Aw84ptNt*+xyou^xh4vil(zc8!RmsfD^}>lm;lGBE-%lvko(_j zaW`v}RfJine@Q?h?Z;06BNw;J!0e+fZ;2FJ-TL+MrnO~%JPqvX%YZJcKF;UoiHQxa zZAr8OXsJSX7^2?uLrWe0W0Y|z*#Ontu>V%ZHBg!i!+b{f7uYD5M9nDL7F zE7+gaz1(E6(zju$8WK_!y~5nzC}h5HvvG{SAP&7w5{z3vNk~z16vO;sQ)<6;j_qoH z+-Q}`X0TTE@U4D9Z!DCSOysbP0Y6%YnKs#uJSjfaripr72A`E%Q};tHbJz;WKU}L4 z`QpCjIX8pSxQaf;`cH@nN5tQ`o3y4`oNgt}k2h2nro7w^#2y#V=TTK_jh#PdW7`W) z@g+OPuI8+;uWo6#qJNR#1R=Mw|DhqyN8hmb6L57!>eW7EeE(eX4`*L1Sh!K57A9^6 zYTwi&>PBW&&bm2hJJ?jFEv|y9Ft2&)bPV13`zw0}-lx^Fgq$xkmjgv|f_@yJ($#_72#kCnJ7Sm0!sLi`8UnR|DAaiO(8eFYz_F4;ZandJ!LX(M%a;1J-Fi18PMKnOm~u<+h$ z6s4XQEhGmnwQoCo%piiWv_k#2Eo(HB%CJ!IOS!;mQ!{#;$sU2Z&f=`1J7MsEz`}Q~ z;w@Ls^dSxxL5xsEBRj`mv+LZ5t1Y5CIP4M9@2xs#^j(!C2X2wVQnkM>u98rhfw6T7 zw4K_-LQ*{X2Jzr=E`DAPF9JgwqoqB@Fa4(fqwX*L z4qQqIDo2?7{h$tnw=YTt^X-5r+Fkecc@ub${hk{T;#?`qmgj7m6CYh;yTSPuO(A{p zqaGi3VcFu~R{~6VWKWp44pZsS|{O-oI1MHru0A@?n|!{X84tc=oZ|@Rggvi zd+#RYF7~Ow?Oc`%DJItgxlUk9_NRbYt|>(p_)U11Zv|v|GVAAF;Be4K@WA%KtI*Ka zf#>KzSYz(P8DOz8pqExx<8cT7t-&JerQHWqturPQ!_+hGWXQ**Y^kCMj++op*MZ6( z%}ves-?RC=;NkY#_>N}I)rAkSn!lVYCYz~bYUbG(Z6JEYw}xY=jH?> zs7j%Tf63{9hT7bbq6nyk-Z+oBJf1b zutIW?yDfq%juSH+9YT=`c-d-WSptPC>RXAT8M6kp?6Hf*xEux0Q;$~PJ}BpI9>}n2 z`TFn|#m+U$XSg3KQYWF$!Zb}c)ms#(jOa+*i-qS4iAkG3v(z<*VNJP;<#_cXS$<|v ziDcI=_0L*ohGcSe@Mk}{Yp&K8H(!$;KBmN&^YtJ4+>r>Tl+<^%?D_;VPfQh)Xj#%=0h~uKDb4&69GJnNYt%qPTKA?HDp%( z`isc1B&K?SCYZ;@8$p@mDFk<0>mYIS@bIu|T6g@dlRYGb9vD_VKSN(G@JsL zb&;xvyciBOSd7QUYmJ#=^X4ghtn-CXx6RE`%YB{gS1zyj6wBfY@;d1PakuC;=6TGU z+@Q5j67L@=zMDt=y#Dv4xlXjSq4-qTbGw1-fD{MKMz6o?m&1wsep9G?8ffxJUSW|T zjZ4xDG5uN)Dc4l9wl}UfnXqh=lQ_s*QTmC#G_U{iL9gt_l7}gDsOk?|KC0m`<%|@K z_&abh;%EzceQ;Q7%h&b$qrmiPO+(@G#}J_WR8cG`#bG=%c!!n*JefG*$(`MLyb;!U zgKoQTlIXr7`S{1+RrT-yFvKEg#N=&3b*D@Q=)G-vHg$gK*9+Zjd4k`UyON`Fn5M#d z?o+m99jU^c##IM9iW^a+kS1qzG(+1$XNP;91NBlbIJqCRHFk^_E^=6!&8F?vW$k90 z(0$oIyILf}yL$MZcaV*_sX`%W!imehJQ%EM{cuH<3msIKzY?5d(L{Wz7XUdtAr>&{ zor$=v&i6;pNLrY%e|b@?A)8~Ns>tg(({wNVhB}1R*YR))=QPbM@T0p*iVX+(Bu}#$ zycFcwXZQvilf(gdsZ|NwHelv)HZkW8nojVRq<~Zf%Pvg6fY~SBsO+O*M47dy1RdJ$?n&;RTI9L}@u#eT1?c~d$t zmEkr)P}5xF_bmBw6uQhTelHetqk8?4j}3o6h-{k+P4PR&yeGvZ4|-`*a~;i9FDVjn z>nVpELf4TcKyi_~E{WSBv8Ob(VkTAQek@a*j#VSS^F%fxSM4qx?81(R2!DQZ;FCON zqq3^PWULtfXmlLa=m0VOFyN@R6aLvkG)taa3q(n>xI6a_$$Zd6{5!I9 zeO@-{cQ5en?fo`r5j3*#W*#d44bsq38dg2MLT5Q}@{F2dzAG+%kKj&BD2E?ou7gI! z6r%1a4#No${QF`B<}K?R+&;ZquR>8Z*2fj9HrA|9to)CpWO@_)~M=!0h21B5T3J#%^n>=moS%{F}cG&zuu)Li%SOd z;P`ZSEPB?Z0V{fqG>k|Y8)J=?wIde$IgK19C)6(NCZO3AhBY%pkpjiqz>&4jx`8SY z+ggC_+k>=G@ow>!)}F`rF?es*qLHK9RkqN^%d@P&OX3eLUUG^_{G1mqBL|3r=-(M` zu?o!>{)`7g;;jVv$^_TXr|COu=tc_lU{@hBCc>xcRC4Y3jZt=Nj2ct#+Z)5Xr;2#>`IP4!i|B=bDN0^c;^u`LLI^+j;5zee-Xl8A zdMZ?C$sDZn*uH%1w7u=tU9(l7$4HCJ*8p322toCV62pk~proed?;C`-=cw|;+$PPi zZUp=5ysB@BZLGk`+8Y%HFUw?}i#xi)^5(*YuoTZPxaTD;O&$WaC!M z9V)`AK#HUHc;==&=XkZZvJlwh%w_^?#b9?Eum|Ps5pl4r$<(Sa_|ZA(XSw#mCibK2 z=qG-jkv;zu8T;4C>cn{uhd6_DWz+fM0ZMF2;{{Rbe`CCwk0bJnO{hS3hO6$P?6Tk4 zGlntV;?i%8P3MNAJOBbkeSCEh!a(BuXtrRh6Lxqh?^iz5`3y5bkI(Le~QwZ-^ zR8&5$UN!kGiw9f{aa_`uDKhTs?PO(8FOw1mEPjLxnz5G>=_h zqqkNgC@T^=JxF*MHAGG^n3$_MDl-?I$;EXQQ(Wm}uU(8TiJ3=Mc#OKY*t-vLSvMyU z7rRQ5AEXN{J}$wZy=*YMkUS0a^!%D2yy$xIEeE@MVP5ofS+oc;>MtWb?NN|9F&~re z!rW^xn87kUx{2PEN_rw15ZV*@E=Ku!L4H%=v00QJ0(KWYDgK;W5hY>F*?U8yY|3&) z`_`i)-kPLu;);giKWysk@;aNNZg^lgeLlfyYpBu()@{%1f`AT1A`!2Xi^YK1DvOLq zex+DlPJxvBLwvK30jcSsJnO&X!P`WahMl+EY(BHMnht0jzjAbXYzsZXzj4?3B(re7 z&wJ_Nnf@~RN8?lMmn<*FRMSfO?RD86?=U<;J7#=(OVa;M>J24<7qOuRuZps>o`@yl zEmuR?C#wIJ1No^pmTf2PpZ{Z(FS_WRc>=kJ4!at!r~eLQ>%Mf~OpNv!Rf%oOsg;=;ba$o`Q|?*d;fG|Alt^ZT{U0q z@1o~{0tZfxd*`$9ddNWp8xP)B)ir1^`UOZ^$Eo3E@AfeRwQWqFvY6f`f$mk!#=zZ@a`7Q zH%#RVCKHidk9BrcErplmZ=lALpXU!mYDOD!?DoX%2x$znDWcX-Yuk&m15Tv)lvnM- zl=q}{F#?MQ-{UARp}LBhxjcQ9B#7U}R!=II5*`Q*wYqnWlRONmjl>Np9MjLK`k!!5 z^gjavnDlQZkI7YBhTBq;e?}-0>Z?oS5%Rt=&Qn@ikd6&=T=M^T+o#E7OuMdbhPZI0 zkSBo7#Qg^$swsB;a;K|wbG^-r5?jy(kWKTfh9V z#O4n-zCQ>v$UeWO+f`)6eh*A6y*j3Qm-Y~Mm>mBX>K-8-`eRuhbeTSHj!ps&js8}< zI{#}PEpLT-PG#g+r)v2bo0S>Z(8T+3mlqcyRxa zxcY;eZfFJpI-XsE?4Vn#?pgb163!OB(}fj+rl9M;eEpXl=7zRMcW0-+E6f&F(^M|# z^p1HBznnGEKEo0({$1JQS7|1~LP;UB=ai>4Ng@5%l@Gn-xX5+ti?0uH>@VQijDKOz zW8Pd-XHppU`tby+pw~y{t&h$$kn^QIou(yloi7uM3gI=&HSfZe6nu{^e*TicP1#yZ zQRKAA&F2rB%W!Ay!lCS>)n@<^t5}LqWx7J)B}5(FC+REOFW1{1!cRW&U3PrgP~z%R z`sqNFPiU!A9oC$++tA_rO?|9Q`w-xs6`TEa3Fv#CtVy^;wBx4ZM@jhlQn@5W_A=5* zb;WI`x+P7wge=)p4=VguL53 z>{{hzFU@^lm6<6-<{ke^alTi-pEVv~aP|I#{M!o=v}ZNpUb{NqBkPXitlp9;4X{xG?wskcFIsS2bTki8a%QgECK2BrBjh1`%E@Thr@`{Me+^YA-8)$Q;Z=bG-2XH^~syYBP5r)o3F z`yPL#$`P?VV0Td@Qhj3j{D>zR8Ha-%_h=I-?aYf^4@{|;Zgg}&@PQ-PyR>%mlJl6~ zv9U;8$;{zXWaLnWruuqu>`5boGo;piE}~4xlWU8cF#xVUjT5bJYwnZSenCU^;Zs=q ztA8{Hk=W1V z-wiA|R6s2I2MlZ9W;psc$358J@oTnf|NA#(Ik{kbryWQ*5t4-N$Mw7#w=}?e7D0L+HWMYsBwpv~TY7Y8{|`Pl|$&h^IR| zEyFesj4_>jb^q?y2Pd2R3VE>d*CNPI3%o^tjP|<&*LdJFTbk(1NLqY)B@XpZT*4j+ zOQ+*p6@uNk!DRh#lLlIFOCKQWn522|=>DUVlP$JW_5padn^@n>E?1lhEpc) z^;cxk!AWkS=4@_~uerbXzNt^h_e}S%i_4eTH1GcpfHcske(D!||Yp{@e%z)p2J$`y%bkYY@ zHnYjcX_!qv$Gi)b1^n{OPe1+i?YBRF3&jDvy?FB@)EWHvGi%>|%bx!Q3l7c``ft8{ zxea-lr!oo2hlEdG?;pNBFrCcP*RQ`kr8)(6ps>w)ymj}%-Me=m0ml!%BIL1$;399w zu1O-Foq|kpYeLu>qwui&5u7XvL1)U zuxRM^kb2e*?8c;>NyV57KF3fVHr&~K^ayExaQ`b7qEaFfL|!@hExvPNHU3)0GyYOE zJ{fptUh;~YcPHy`25GEi|0Ip|MAD;(Yn$WVjR$C9Ad9?-UFKItT=aJ9cptONOr`dp zzCAcOIT?bTVG2Lq2lEO06vqi=Hu>P>@Q^vyAAkB~A&`Fq8NZ$VJq0+*^!{rG>FHm$ zw;|pAEh_al-~1bE|BmfHq5V7i1^)C4Z_Lj8Or?#>kMdyI~Vu+kKS(b908`@jr}h_VUM)4_rEM{XCH^P z{b$U_j0yJr@!nk!_Xm$~lk?R3*JR~EG!X{EHe#>>E&{Eg|YBY|p_dMX&$*X7;%B z?^KcU?Aa+u>$5iixf%rJki*Sil9~hee}5`tRXAYza6O+j0IKMr#F%va4{SwRA@Gme zr>`0K5aB{qPqMZDOQMzkE0gjsk$FSpaqxnoq4ECPM~@zSeZaa<-kGv+>Fc|)LFV!9 z*IKq_(?$G)4E4e(j^1!JPKA%LH2S1_3U~L6bs44o-h9f=HUatdO~Lv;u@2kj!PjqL zNN?-y0{~t$0RF23_HxK3L#6B1;TZLOy!rMm6DjEUVOPHX>x*Az?(w0D5C`GEwQI%T zwupe$Qtw6&V{a7vF#Xj7&fNAFcime?VVFHNS6C zq5n&Qlm7?XN^C9v^Gk*NA!<8{`*?VGmu+W)9kd;iVGkbM)f(n&z{o>l5?|r)@fPp* zUjEt? zCf+KGkD1Tqiu$%3j{EeUeY&!kBoo8*V~eK4*xVxzbAxZHM+f5_rWttBG&7HE8$NiX zZR`82M__&D-4kqdvN3e^uNnB?&%!#nWM(N0YYa?%yZt>{2;fg7%n!f(_nC2j!PFb5 zWFB}`VaWQTlnMNm;XO)@6y`HvhDk_F~{7->1?QEH%chGYHYV8k&x=l?M5Lj zBVm>cj1h%Ex*%bzu|O}YA;fM7muy+s=76#B1uf0h)i*e}F`K6~VfDSfz--kAxZD_z zcx6VWWY@eQm;5Y0GJpBce~d9=1dZ}AdQH75v1jP<_l9+T6uA7ro$Ol73k31-CyILw z#BKg>Tv#rw$>8dWu01$6elF_;7VP1m3{zBOSrLyjSD1Hw5coeO67QU}#&Q2R?PN=Fev}85R(I8Tak?|HsZT5}gAdUp^83XuS79Rtl?njj?^uCwh#pG15{;|Nz-JKcm zqhfMwH}tHk8AB3T!A!0g^$Y+^5g=R}|YK4*DH@kPSK zbC*+a1^th(4rza+4Q#@?!(29 z!(a`>YM`VBbl7()jM+;Q_F!8t#>_yMceoh~9l{LAC<*`!axlQ#LI9EXqAfBphC^q#$zBSo95y_Ar*GI7R_Hs_ku8w;Ae6+DLDzx!g%=4m zoxGd4|L4x8eJ9JlpCarts+&d=<8kR1vQDcH#7Bb+MqxPU2uIMz!wPZ8Y%cJHtmD93 z-ePq0?T)SM`vwFZq2r>^U64qE=4A-U(-wGYX)#W}>8YjCWxOUX1YwVW_;`qTx6029gvwu>LaWse);J$ue7k~lz&Dv17%U0_AP>Zg z>1g|kXoty^a4|VMHkru<)Re|!iN_52A}aCG+W5>*ge7#&DI$hyZRfZvlt7tS(ghifuo3R@od7=?t` zWSQn&bVlE|y<>bXQz`s}m-{w^gSh!1}5*acvUdI@3887r@;{UJk z<@EH5zQX((F;ykn1?;e!-uJxmt;M||-ye=IB=wHKj0<;&Qcg~3v%l}Br^Ac))`EWe z^l(|u{xc}z>~hDL_|G_vb9+Ts=9btx!Ayi$UH8{Kv!aQQlp+ zrD^6rkA9UfGb=Vb;ASq_yUTCEcMhO_ zb^iGBA}e(4nQBb=C$bI)mSDsG?|*$y-W7AULueirl%Oa>8plB?08<0O8b2V|dHxC~ z$S1+VlLuD=78y`@p7X7PAeMaEB~tU@u%rz<^lMv#oiEPgwRWWCFIgT9iD7rgus876V+3U z4jPi(GI(xTe4F0hPCU;Up+STvA|5^cb}YssGqLzar%vm z67v1=uIsq?aNd{JYl+hS+^^hZxp~-+kYssD_`{ztr(-a;< zk-Opkj^JYw>{!A`u&Wrmx4^fuI_yY^3OH<3Pb%lB?AKcuD!_v4fBsXsn4NIH9p^`b z9@MIrTm6ei)W}z)T|WI9jhLT*XGaagny6~D4Rg~{Z|5UlAYnJXyYXdx4W@Xy{2sYy zm|u<9w({Nn`1~cw%e?+_k^lBp{@(aQTgHFxf8POleOPbv&0Iz}m_iY=tLn~5KHdmT z(u7K~J{p8MBR>MMc$IvbEj|*8|Je|Yf%`6rCEK#^o~v8+zQp2e`^UNDe#17@uw z#@WT~PfYo9SRn&5e2Qt&B@jZ=Bby1!w;FK+c_-@AJg>MHCj(hm_xx8w-eY}~yd^-ZGcj$c{sUIOL>yZDmtaruwlL@?ZQ34zm?y1%|o`eojib@i1l zv@3m;GV;S=`U(I;KtA2~7r87XnSgj)rP!kLKoeKM-KP`8p-BilMq-n~)L+54*AlK!|?~1;u zHe!rCEZpnm#}B*E&L%!5z=nE)UYUSzw|bg*U)h)zE%LBg$MiRxR9d8fCLU+4?=|s1 zTS;T$z9a1K3dZaiu!C<4sIoT`jG)$$TTk=CudE$*geUfcSR5|yplIR6v0PZNM~BJ! zIM1tf;8ia_eX-+twz|KXsE_;kvN^}R%D-pWa?G1EiC0eCyQh~c7-->F7sC|BjrpzK zr~6_B6OmV}qaQ*D6+@eNtH9^4R-_1?+jO(*mHW48xEt7y1@J)uq})g1VfncDE+ryf zn0dSdtFvSVCo!Jp<1(~NAPYj^7T|4}wPt?K)5LlIkKJ(psAmV*LB+XE%s>Yoa~x!; zNUw(_(pH>3N7Y7j?-U0XCavO@n$46Pusikru1l=<@Kt&E;)-2!%w4Lx_>z~i6%@jj zTjj3Q_Eo|hbDOLi>W+E&i&Ho5Anz-VR$h$hqwDma)xXr2qPQ@-g4w_& zg_Kq>|K-Vmb$9BCgMvq;x1Qc7iu-|iY!P@Li5D|hvhf(4^e9y06$TI)rYf7j&~>^J zW{VueAXQ+Jfp~YW^-sb5-~aO`qmND-^LZ~Ese(s<-HbYl!!WCu$!MsYHWVS`h%Z{f zfYaF7jGwCPn)my0nNaVMus^w09=)p23@SV{3b-KDnNu|`he>$1wkiEu;ErBqb(v&l zC^SRvUE;pwn|`}6aK{*ZzTYkLXNQ;c-BjMnxaHt8;x37gN_^6B9S^)*D1aBlhb3B- zU530WnHsP>A zd$B)DR}w)n(bcz6m{Y<&#eXO@3;M)l64aHq(r=-?k{KKu11|q zwIu4|d(upFhk@!20-tb`SY0S>*Xq7yU@s<`51gtAto-Eg!pLl04AnG4g^>XF0W*(c zkf`l8@SU7j@IxZL*rSC`oFBmo1FMis<^*La*|*AqLlH9dSDNvH-i)dxsXBBJmZtF+%kPH}Ij@J4=U;lT(-wd6}Shdywj5WVARhJq(=G z{3>xtsS$;InVf&OSqG-Hf_~3`e0;sUK;BO;-0F_hN<*_F?qj)GD_@DRYeCA>?AXb0w1D6(AH{5L zaBZH0q%A zj<{pA2Y-@5R!jv_}yNUb9A~H^8-}eS=W3E~_K^4C-gGCHex)&?O`)X(0Vdi`44sOB^JU!)K{e{-=458JYy# zcaF8Yr9BHtr6XKVO>>b9wQo4$RwQ9IV}~8F$tJ7x$6y#=wSry(bUEy5X1V~o z_$S0WuHM~KXjTKx{?hTA3yY5mKrz>q0>0PIUwyqzP?CeFg(u!g;uk$N(OMAjP$pc) zzGJwOHBuw&Q6;xfcsSh^0zR{seIM{2h|&DJ#Qh_#-5qJ)&nzncO-ZHpEWinBCOi1X zVfG`=EcsqGN_-CWUmi8-*kRcXc-MGH+L3CB`z7LTp-!J)!DsOap2vCPYDo&rbWz;t(T!gV;`bHO ze}Su3OluDToZ-0{k$ruATGKqI{O#&$G#cJ+y@QI8_j5wvnRr3CPdbIAkYwULn1Nw| zO^z$cJS#ZqWk}&G?TYMRlNyHK%ly2f`7amlQQG(4H$x4v5DdahqfoFbfDhALz)V}U zfc3{%PrqLX`24pkVFY`l{%yLh9I&JD3O*1onD?Q=0H&=_+#qhu1oSw&k6E#?mCK`>qigw`o^1)T4z_?rWlrbO5BNfNUVZmr8alJJdPp0KIGIrq+?ubFHT9` z-w(x_FEqW5|6U(^kOy z#a9RJ80g0@Sjk@;0`pc0g$X=(`24r_h}y3X9~?(HddMM0odc{&A>^x8Psj z5#o?T<1Rh9WIW$z6-Siu0qWhyfp4E0>dqhM&*7`6y3@B(^3Qh>>vobK@_ygq+s3{A z@B%kTz`i@`Iu*K}+~e={m*HCIGBwkIwEz!W=d1^}JN6#@g?jMP@vyTBAbJS|jJPfp3jeB#{GZs5&Vn+sA ztCYpGGS1=IvImBd$qsI}&rt91&f2RG?eMJzzQ0jEM!m-8aw|XXw>TrySC!}>^23;X zk1sDdFoT}Jw&$qQtm2y9z6PD%6u6&XTudetV0qZJzUB&_FXFi8@dl9Z_Vdc}Xy%FN z3%(AA>OwHGOxP@jyglLGf85r%b&~ImxJlY5EOxiz{^`@u&lL>dLE=jTR(KQmkizhz ziW!Hem6u#C2^Jo<6~Wj>jQ0=WzP}y!pOW_63>s;Gv>z=n9JA+nRu7GwT%;Z>W}`5h z(Xdwtb}s^Zm<{qfgk#peaEYbDpe5C*Tp5*0e$kS3^$ZraWt5t;dtY&(KolIVb-5r5 z44-YIpfi$4x_G%ly05xgy|4IRe>k4J$uYTv72MHb3$@=7EDBu%WSlFKdP8a|yY`mM$2f zoYO+bCc(mUN&VUTU!9XJm5LBvCPfnNf=%gVY7^S&vuosq!v8-ubn^OLOOhP%V)B$P!I z0)#k&qye(4(C*5YDCIo93F6*<{P^*Q7~++X_*D$}i}M)nT?QWS9?~S~Suq5AF0I(6 zx=1n7134}5_2TzlsQ_fYp9VZ^wlK+4lbz0{xCsiq+wBUUFGxd!#A6AWuToC~Ki~>s z3c3;M73}4av-^E!Lf)f-9nGH;m9&9Zxc}GA((c%L0~!p7DJrZnJ!)Ug0+9AStPbOC zXK9BM^UtGo966uXbhRBeCKUgvch8GAl6?CCLQjnp*NpgxNG zO1gKdH1C=M-^cd4IEOsNPqkr!$u6dEVs1mO#u#kOk3atP4;=sc<4t%P;C-kbjQa#$ z&f&4Lz5)J(E1uty&I9(B7wXZq!~K+HLgB}|(%39k>z{4uG~{NfHi`*Xb8xbHYgO_KID=apKN zF31EkT!Ve2c3KWGQEa!5owdlbm)XXI=E!>8#N&J*|8;$a9e5w$(!3rhd}|<1*rwR) zS;|h&`MA0h@DSqwT-rJS*w-R@+9i?g_6=2cb3UYh@B+BM{rHC*|N8MJxHb$80)L6> zeop@;s|f5}a~dEgusYUrYKwbbUJI8iA@CQM%7oEZtosu;@QnM9w{EZ8D;070Vf9WG znI`#~hXID*HSppkKshf<;3@IskDzJ>o9hLET_lWT-@lMe^P0ehJ7FSphV z-1fYnq=w&V={+%eC2`6&ogQbKOzf@MC>2xDQV3Zn(A5^cdr45iiwwOGe^*I*&Wg?2 zjq3jPhs6B{sJp;@C_bmey-%tx9zx&GFIJ9kDzWF^A>Ws+z4CQM;trz}`1wQ|soq(8fo}m{0N_hKS|}*QEWkOd7ZhYQyb+0qg-+pO z5JEjoCPM-b_j{+n|7@Do#{C1fT}!)wy0XyK%ejy@Kdq?LlE8l;Btse*o-EyE*y*IlqV}7w(#Rf_|vg{kxUYe zd>Z#3Z`F|Hy;v*+Qs9$4%|YMy{OAy8v`E0CRV7DbtmY2L(n3RRjMxl36nJmI9v>Wh zHk)GM_dYOXwQ&DHL?*NMIV)XzduA>_s=0H&*p>sYB*N>0i1I?;?3u zo?H)zszW!_Hws0LBeeGcccJU@A#fiW${$tuzKJ{jS}KbxdA1`xefxfu@2|zt7{&@J z%sw73y@D@!-~3%W_yaff2cIrWIX@=w5Qmqixo1WtRmura=R6GHo%IZXSHAeqoUod> ze<0Q_=BQysCYBbig(+I)A*7litHzUX@hAG6W437bgUo1aNZ`7tq`kQDI;%%<8hb5B zf}^~nc^4=swtLz2HfjHq50$hR{h;>(eRzL)eVf2C zQ{45m$0y5$yDmtfYAULh)wP8{Pn$GzoQylO&Jt~nZ}>8HvoGi$ejn-=#C;-OK-|yI zN!{gl?ZskUIY0~ui)Cm>urJ!@St%gHPSYy1S zr75U6D_eMo!n3HWID8vBnR5|UHnYJ0f&!m9V|DfCNE3LC`^Rj%H=;DEQ0~k=^m&Bl zuY2YSjvO~Y&T^4&F2{RY2_F;WuxogPcHhf&54PZb--E;w(_RSHGT4A;i<#eqJ_vj> zj{CZ6FOwkDA?42Hx%sY)!sL}}I6ohEt=TA>7lZU~4Eh+59s)=kfg-@Ki)q_1tZgL6*A#*DuCx@io$L@^$TNecu=c{=ij$4ZP?4 zl7sg`sH5!5~3w@Gzz+I{P*#+Mo=sQP&AFd#< z`P)B?NIvO%U+Mem0;>p!cbblL^;Fe96i=^?}e z90lPQB_rd6aY>HD6EYb{=CGm3WOBLxKXBhYk^0%IKs^}P_64n2%E5Na7?Z>}62%|k z0#f6drkPoAF1zxT2-)c3UVpxWPGx!1e$Mgg4DDY>j?)p~2FPivB-s)d( zjJpQjjziK!gy-KXFrx?F8{?a$y-bGUKG3vyZ{BVRAlwhcZP)2&3PCvFtdkOW&)EM) z<(#l0KFC;x=4zHr*Z18GjfML=CaDWm{piUROIXi5!(BOAD!25l#hE2=?RRny$^7i9j@r)=-I;!wk ztGOIN^jAdt>q?KyRcw4+5&9QrXOpvY_y?~p*bZsnS?cLBlXyn6{;a-D*7|Pdt?)aqBIWZy z{McUjDrKGC=tmDlqqu3j{5n~Uv031#T-`{_@yIocCh-O0{UEud;I0ss67*e6S&K3V zy)f1y7f90~RHHU({Wik-Dl+gDya3)?LbF}ncceWdeuoNHge|xrEX%(NE#b&1=KT!M zQOkIhwp)p=9fLCdwgT&6P|&`86Lw#d_oI6&_nJj@(j0SDUKb}<)|u*V0&u>g z>2x}q9<~+hmCNgVzSE2j1Nmm5xWg$bB^Y>c@G=J93(3#~ez|Ruj%%1JOcm>~M3aint#pkqW=^}Y+C~gM$~u^_j;d=>2SBG<&tsg! z!16D8L%s{2A>1blc%kupd3`ld$7d^0ql+#vNK=X43{@u7^0FuK0 z9+nO4VP$)Tepif|+Uu6GoDfboGKGSlYu-B+a4`Mwbl)^-FBF|++l+f&2$p^7H0w)B zG|6zqkn6@HxT{2_9bg|0$B`h66m_laEZv5nJBGXj5cfx9{gL$j+;l~X_@SJ)nqf)! z6`%X`1jKir1@g=~J$ED4eQjU&LfSjchN69)uQ%gvM#?+$-ix(T88sTO;%L*t%{-U!+0bk@P$J-LuEZ z`0@RISD(EqfiH2AJCVhoclRH^A6m_EH%L7 z65Lj>01~zySqx?)UaABJ3)89J%G9bomo;sB8ts0r=xo8M@0ph{P1Pk!#h0Wt^}qg@ z^l0XlZ)n;(&5jN>FMDfUWa7fzb}`bh8dx2UVz;3wjF9)d6_E^$1*}2nLwvF|Kx3QdFukJsz7v=U?Qs2?+(05f(qV>< zK7CaMJE^-|dumQCFBo@I-BsbPwCh^iO|R}&@Cf6Phy2VV!hXgM{(>#N_B3#PO{3BH z;dpM<2|tsi85@&e19$p^*TzJ3-2mF_;AP4r@A-1a9Ep?GLT`)jT$@XXoe>&o;9CP@ z)raI9Q%)7yMt6Xj8`O8u)Aq=Fr@rr`?hY%%F&X7#te*wYb7t&nAahGRNo}W3QUUku zzy)>V9WZspR*(UJ* zIK7MELn$bh(hW_ZZ~PJr9|e7cHSn?yrF=E>l%FC0p8bg)1v}#|+>4~W5@}q?%a&+) zYTz$;mjaJ&SnU=~Qk|?rNJh}^!94XKy1|n2@&})8{emg(g>G`U!>19)kj3e%Tc@wy z(`P%cDj%^!<2gfn5eYpGZDqHO4Ch9p{^iUGxQ%(_qmSff_{j+0mkwj;-L6c;8Xq6L5FXo;f1gTb10tEEb67mSBEC&G5Wzz|)aRm{bua zrQP?!G2wlX9F;L?_dChr{@Uo}dE&Je=G{7Xjh+lQqj{&srJRLiL*j@%+S)Eub}Bvl z>LTJ|?zBZeC%T<@$Ji%fpOC^w0+!0boBA$`CQ06(ja48P?iYQty{Z+MSvMGWj?0LV zUkgd-I7gKC!kV<`Ad)Ik;fAix2qtKJ=q*|{?;+_UwHm{vADDCUWsHw`znWz}SU!#dv!r8|3(BF!GV)lBB&HX4B%2Fg$;?EuC5@S>m2g7Wd&s;U2p=cY157 zZah~7^&6jGs5trgP_+}VN>uciI^!`>U1ykg8|P=r$sA8W-RXZzOQHPB$S}QHL*w4tRCSKfoOZYu} zXPDkys5@UahJ}A(fj4<4GczaPpNV&&?&pRX!Z_r!HB)8Wm(_Z;s;qmS)V&%ZoFIo| zS8Y^d^1fyCBl_-eG=ld$2jByla01RT<0KVSXPk(4sGnJ6KD40Ejk_zov>@6m|Ghvb z0~Nq6D)Nt15cMI0B@@Mm|D#%;1%w|%2aXG8-%(zR^n*YI|O&tJizlCJiygr$C|G`Y}-Ak zA8hk8zUE!}cbQtXxBQU#RnT0_uP*jJ5}tA5?h3evlsm0l4X`R~53aML%2Ao~shCg| zVlTG=mb26yXb*zvft6q~-{d!Xf46BbZt%ZyRd!LFB053Kb+;!@3f`XCyc?|3t((ld zn5*{H$|VyJvkkyJQVcc)J3*B(oIo{Uze{8N7+%Z=eT?2PaeqYI&DaeacvSeQonxIt zC~_`M%`+hXJk&P^47)#@=6$KWOqB!}hTsqL6@v>A}gRPt5AoSlV zw9Ho0-b(cC2JMc3d$dICq3GMVN0%LJ^eCztkhONB#;7i(zVSqrTQtgasKR|7o25?2 z7?a^5FsHD`7^hdq>TUaz$MUl_?)0th6!c2s+0RT3iJy<>MnF;!KR)B%3dXPtbu{?E zdl~%g_^+XGXCotM7uwM5#oQr}m)AMSih+CeK55HxRq>P$HlPC zeJ9Uu7!mhKn82J`b!3Gf0xxin^4{P$+?r5-M%>LE5&H$ggpPUWM{_kA7wI^T8>F|e_r#ozOGf(SW9(B zFH?U?3#7S4Y$sFW9#;OA>pCkzTa|4nYn`+uNlSCquj!a=mRE*NRW~3UO(V4Kn}(QDjv3 z{JLu6UPU{D58X-Hic~9UkB;fsEC#cQcVT`k#arWjD_-aoKjc@raYuzeH_}c|2>jH@ zH_fG?A%Pd_zEUPgygUnaXK@F8UlZ-x$_Ovh)m}y%pJsAGMV-4o_Bh*x31@8Ey&BAnz1yUvRxxiMxv#DJSS5 zxuEjM0onITJ9K56eirx4ezv8IdnTGpMeiabkwm-C$+E%LS*kE@4{4pl*#Y)_6ZT@d zu;ZxaIdP)Qd$q0wt+qzq^Lhn#MBUN0&xh<4B=R!3L?IbPl-rXZADd6dx6-{3^S5X6 ziND6i-SYW&>}oF1y+2v@{f7Mv2jNlQFO1p5>bVaO_U>feg_Sw1T3&{ukZU+b&0aF@ zU4?rGOR9_0w2f8dTJ2IK92sXmWZqk?5>Ho0-%QT2cBUm>V~gNycEr^)WmpH2dk61v z++7j(8D~>lxjos*+S*>s96>HDbE?eq5@vGGFV`QJ+V39wItNU>z z4RyvfV^2@21m2vmg1V1+wrb|Orrqaf(0B3tOt>$>&oru1-YE=;#0xJYKG10-=BrpfBWbPXBs<=&<5|HH)H zY1|hw21!;X6R315CsZxob20=OIH#!vgZ4rWGtr-JpSI+f3UY?Ji?T!5xR+mjU#%v9 z#!#HxY6SPj67+oycX?SMt`Q#dlBMC$fE{9x$orElHgLt*WuWEQc)2BUzde?(Zzc8& zKaFH{*T93Hc|!X><;m(4^qnN0;*kP)GmJUL%UKZrj1d}|sfu}O0|p+7rOq<+$m%^N z$@}X~gw zd$Lr9t;}B7I>L17f)lD#JEQVT^1kE@$`nl6eUIymdc*X6Bs+fM4Al*LZ~aZS41IeW zu6w;kH7@UH-a-4GF;uO*$(Xb9bM0lOGUEOO=_RC{0x~Y!ZcITr5_8MXO5kr5>(azq z>aK1LChtW1xm0&dHyI&#^6x{!{ajWs44>)tB~XVK{HukPY4E7^)_M=j6&|O0H8C{v zI*lCeVq;607+ntcO$e-Q;l0?l!ZU$iDujA5pPg~a<=D=&Mp>7eFltsImNhJw1)*+t+x(uqoH=o(L5A4?&+xm^}6uwy>k9)f~}DL z@sI!KUw^!P@2_LL!#!Q#{>-ygt?h_Ag*xUk&FJ5o9cjP82e6LBqk%W?2*YO?n8DBtPE?l$?A_ImKYsgN9I4;` z_~UJu7sn|T_ecR*vHsvR?DCD<0_`O?g-*iT{7lroD<>Sp^Q+kq`gBn7OzvIL84LHg zlY#Y1WM$f9W%jUi24}{cPX+MXBbi?!@8{=F7i?yjc;a1!X66)jSJe#YW1dx}iL4CMekk1B>P>Y7{QbwOFL2ew!lXgmNx^-LpuqpSI*xRZ@hd8A(cYNdGp{m0~6K8kyzdI+;s z4n#ipS7&;C-AY**Wc`LhelS(l=AD9&&h+W=v1#9JZP%03+sI{b|M+-ss{657VPL5H z`I9p5Q&xAtosA5nnx^#xPMC9Gn_*=ubo6JYNyVQ5n!87d_PaKFG-%JhKQQpNb&A9W8 ziqsurk(^Uq)(kI`7rg)Y*YCgo4u`3aqEJtX%nT#t!OiA8{mfNEf6B%0C6~UJ((DWw zWaP*%EhyyW4ydd00 zyT=KpW)N1lbYa`1n)YZ-3;{3BWq0^}^7NyF;4DfdkO1M~4`|9+ROV zdB36ZFjV&^Gs_eecVTDb1T~rYxW|d(F5Qe3m_gc~Fwr!f-U!@pZmilF@q0f%8Q0)c zc^MpVLpy9}-VcSq=ljrtc-WOkseYKeZl>GhW2|r=re_GNzR#(sDwlzz;2v@`GT)Q% z09=FKh*z!R5DM#OMOOhi0UCk68xHT7&=qAOJ~3K~(qSL}fp=;xiG@T~k$^qtfy&e&Ev+O;nY27rz?^ zBBgtu56xd|{47VGy^NTr*6_i^ivg9swVFIm^|Y*NQ;7=mK2P!P2Y`D~%vRy8xylqK z10Sm5nV^8;KDcVpQh(V$l1hc;(xx))&bL5$-xYX?yK_5iE)A>L`P4{mDMw+*AQx0r zIyEJ?ByU}0?}}j&aJO5PP~R|_RJ}2ykW4zSI_MDASo;gcblqKcA~E)=8+NcW%e9Qt z4RyDGvok6`naeEG4TomH%S;9BPb}`SGB5>u8uUry7YlbC$uz9Y69i`9_JURKAnpYG z4FHiqZokf{f%Ul=n4vf%ni&d1cG1ezZ~*Dn!QjJFt*6z@G^=$R_#1b7B^h3;`c0pM z&5goV+?Aav7kDjSxn-^8qrvmU?5L&W-O0OK-qUbr=YAx`U3Wh9Vx1uMJhc*fTWK!@ zV={F?sZ=nQ`6fnYOdHee2u@+u!Oiq(@(3#rUU+wv*Vo5-XD8al**+xPp8<+}4d zJ>w*)D*Kn$S~JSIL)h`Gi`nY)kbyVWnVw;Sk_ckj8FmnN!0qDcLYtXmRnD&b`n#na za6fqb#V|8EYOm$}3F9(PQ#Ed;lK8o@GjlVXqnr$kp|I{XdlYR&NZ3AnO&!=Nw{OoonnngP-_YQ ze^8mpD=egaz76Z1Q$a{?EAD>KrkN5gdo&7U z8dVqSH6`zd-65;r%IF-R)SbhSAnrFe2pJ^rp8z_d{XDWNPkZ-wfKIPoz{VVCbw4(N z$H2@JW>hV4A5(PZW_}}qpHGcTa0Rdr)pT`zQgf)gMSHa|NyeS;n+EQ^^lHd4y3hi} z-XF{=?qZ_6=SebsnytFhO{$c@lkz^u$(3)!fL# zIDzOEHg|yezqLBsbcu}nb6SMq)2AikUi8Vh4(;{E33f)g_s}myx}-+y&9h;PQ%#FZ zF5SKFg8SaUny6y4-@#xu8&O7;)E&efaL+AdC8W2N_EN~JI(h;2^et@Z!1mB7MtfRy zCfnuRE$cS$OAJk8;9ZT2XA0_}zzd@QOeuALB7Fz@{$%)f)4HFz1$?`Af1yeO^+7#H zr7P@0W|*XVm+C&(v6&~M_+V~|`)~=$4g)nlhC7KtL){g{MM0t6=Q%Vsd3~{}s4*~8 ze@K_92FDd-0Et!P5A&MTPCYl1lhv$yvYLGd?!wDd zVB^#ZPgG%}4%Iy=z?3Tdd_Nc9ZpVCCj=a?Dl8=4vgC3VU(*4cfT&FMJ>un-skM&|o zHbk5l=j=49?5J~Hwzp<+%8*Xt5MEKYYOcRSl+h>-~VS4?kc0&3iezz zIQ#}pnmwMV%H@WMxZ__I(6WwUf%hk{w}Xf`EU}l-aL6}hky$-~b{lv+`AfdrpGR>= z+Ha)1-$=tu#Dl!Ug!ReR_bvG)+pXKLl#|hB2AEYw28stX?Kd|HcU1Seax-Qb<+EvK zPNcYNiLce1p_)h_p4g6O@9NF&L26^AuIx+0tDd^Hn{n%V*vwOAsT3gYe(Oplm~?8j zh5d{uuL;YV7VpJ96SwYM=-wJ-GYR=rU41XTOk|?!7I(jZ*8M>BurBltqWR}YXSEjP}G~UzHoxUI=d&>;=qKmO(xEo$3NDsKf-zE3vRE-}? zGV*?qQ2D;zL<_#ccQqvcn=5cW~e<&P;9rQvV*S~k$qq2XdslmmlI+$QQk9&xbJ%{ zS^B$YICr&$Dk^;V>knQx^;T!Rkk|mnpSkahZbK$(S=$ zU-xU@(z0Y(tVfD{(>kJneNQnm>MYX|Ve>ywY%8v2RDDMor;bi8|H>&pF_*e#J=JTcaGf(glVZG*z(==*sfw#rI zm)>*Zpt0$weq+-F+#T`vLWz_!-wXivLTGKrM_cmg;3QR?SG1ei7Mw{mGq!c#TYOU) zRoX@br_2kC(gd=Az+8E?4flgpN#EQG{b*PGNIn`C(nRXoo6jk{FY5`OU7cY=;MU** z^tgGRtJ&%t<#Vj9va&Nsyo}LAiV9NPyE8;{cC4+;zeo)V+3?T3Fz;@O2RPgOrmtEvmiyikoM)q{Ur$=h%!e?|v-T6iKe;20T}t=`Cc^ zV(%H(RF$l|EDsxGxaDt|ddXK*RuzgdbM%u5ceCwTq2P|nfSIA*u|s2vf%d znnEhtS5FabzcI{=Mf?1Ds^aw&hZLV(pCIigPJKUAwyw6-(O3rF68D4n2Im+&Zbm{g zn_{!M6?bXgN3d5@ly^hw1D(o8^S%xDOe*f#5myj!dDsm0Pvu5tpzkf2QpKOmE3$XQ zJx}ew%^f-X;ek~yeGr-NKXjUgyjPL;W-Z0O3*Kc>NF>-EWgQt<>q^4osWLOfJ52}U z`i?oyCmn>RT{n);t^OOw@5cQYNY_RNrJaK^H&Y`3c{9JUf-->nlM3n_pQDfI0_i6P z=MLl@F?i>E)$s52`ZPW}HIct-8tsC)o8)tGC)}HP%rt>{N8IhD*>a$J&n{Y2CDsZv zAH|(M=T#~u?%Ba;hBM;QluV7*en1Mbfz@D%LB_zVZU<#hFFY8Vcr6!Jp4cucNHO5y%Yb$2J2H5lzFlOkcPM`;-3L``91NkSTgKH{7JH@ap}8j%E}7gT&M43z?nfC_puB2 zSae32_hR59?^t#sKD8(<4jT>$@NxpotFGu}?he#4g}^M0-ug`5l1j?#W;vF?Cg z9T!Itjnln1>W%vp+z-gP8@Tu0fxGXIw0Re}2ZNTmq={#cS0zd`m0R2lU|ZyU3+|j# zZB@KXHgV8)sTy}ZQ%#}06y)Q$C-1~859@8GiP~$k(_I=%b9wU}d ztnNdF`&^TLV<()ZJYij#8vmsC%2unSI8n;A0n%~E-088>c2;+-?NbwWD*#CWcV_)r z#v$dxs`-*sU8?)ZiPOm(@>0H9+`%{E0?+E+nQzsmP8|2?4!D(%-`Mx?Zf&;`LNVDe;p8dXwr_JpZXFHg_wYg#udeR% z(;1TU{A_@9W4Ia)jaY^z;^NOK9M45H=SDa9GbQ-)Gx((f_hS_IY*U~RCAVU zc^S#N_=U+QozKO!Yr!sG#Y69nH7dgt4p8+*-i@4`Joy9&FvN0I-ejXW*SCfq6PJ_xL0nSz^kiTl_uS(_AW zIuB`!V-61Pd(Bw$>V~232>N8+U7t`PYb5G^s4Hcxs0=Z1f-TTV;+I|I=y`4uKc8!f zk6Cy&@l&Pk=cdx1Q&l6E8>owbYJ17=b5Q0HxSyIv=E;n;GwyS#?Q>h(p83x5v|tO`~;GE*$3$vZ6NEES|z@F_G?;A$FI za`)Sypxra}3ULNp&9tTkB;Icd{*arH#D@%~m_}P;FM7yrV!( zZs24!RIR%+!IY@)C&q5OCnw8wH)0e>+~<~uzp=__o*d(x!!`UQybXnJ)W@EvPT*Xk z{>ZpbjkO$+JSxYEtSKs9nBs%PI<^cui4GNz)CylaG1m>e@|_XqxHUKLg7*5&r>#LW zW7`8e?w(3JZ6{yow5W{0CyHE6QK<~qPprvD&vG(s8W?a=T4^9co~n&$shx3wfX4t66jds zvYs2;%}`v@h)LQKzhb{_QwrbeHmP zc(!qu;(ns;XDsdOmsj`1M+p7A>sI$p_aJ=}gF8r(*qd$-)gsJdG1bga;9bV~h@zy# zs$8E98}XsK=XSvT-w^kIcj1174V5xc+;wIZJKSJWRpK7(f;)HGxUWWc7%LW^T+OJ= z)HH-=;+-{g zRT6bpcSG54BGOJj-(p?-g4jjoWQl#PpUuBPA%A#cCYes)NLWRsFOIlY+_&4)R6IZT z_L;h`7NdL2H?L*Q%nrDh827xw-MMNtu-XwQ+|zcBcj2DVX68r$&+5Ks7mBK)%5b{Mf;#akEp68k&ZCsa~XlKqpikfyfgM&8!J`Bd9^h+kD-a zz)z*SF_W!NRz*!DM){=0UF!dngdK`%tlF5VnN(8IM@!Y8VT&>RWgVBSmUp{yrdC^m zw7($eFB0|_`OfRhNxk6+Ljvvh{9>INBpu!{jC<4Ev+RHxsHF35;I7r(>1Aa14VuSR zcEBC_S+kjOt9$wAs1?EeNKTL`i%Jz@JL0b8y?YNwrW@ZsvQWh%C_a6_hY}Csy^@em z!%ipW->a12jxEHFuV1RU3J6r5X)RG9+?NLOxL3O6A)*=|4aYypl1UmDvbe^&1TJJ* zj9kX_7{%QT#mwWRYt$v~ymi6Jq2<~Sbr_Oe`_DCYWJ&IDxlKmzgO=arX;0?qQ+0fG>oks=4gR!hIKYN4QhW3@lZZYnh@`)xc;; zY)n;m!#(KXVOrVCTkz2M_$fY)&N1)A{kyC2fTKRFChPy=W(M+1*kf)Ei}n@gfc%n? zXXY6~joytJk)Os=P~>rR=2eOQO23*usU8L5| zqN6gp2vkVBl5%){A@1?%^|jlm)|}eTC*eSzjZb{8uq10e)({twKz7BT$hU zTCPf~wN;9VR&)$_fk$g+Gn0n<{z9m`7_AYfnKF?`q{=#(X{Nvq%_P={b@1ju=Tx<4XybG9D6Wph0GMNl*ik1p{xi)`(Bc;~_URsao zG!~?k6Hj7%#q_V_o71Ue9rpiFk$q)g)K9@53sH4Vy1XFacbiUltEI`x6nzzLC08SS z%#)anO4?tHxA2|U7bw4Ql*`oDmhgOv>(bcj2qewS7(ci6w*=jzxC2C?#GQ$6K@(Ce z)b(@)Fnn=tml81t?t3=wM_zhX70vsi8D*Vgq>%3NV*!D)f z-i-^8@xFMTc1&&WsKre9d12kRSGyay_Zau0kyR~IeLJL4a|(Af7TMi!|4%pWdtnQv zs<4$!VvHZ08M>#q=rL`HZws%G#242?t+?Iele$hAJAZdY^Li1XfX_Q=z%;mll9 z)WZYq!^w|-{Z8B4{OiYLX!5?)4;-kbOOyIYXnbn=8)L;^(hy&DruQ&7H{$!G=771y zx$%4O90O+5!?!==pYXf<6I6PMffukpzi4Iuy5ynCZE(=b6)}=HFN)y!r!1ef$~!-?@po{*fl=JiFj5!T9YD z{tN!`uQ$T|(5?&Ky;1KhAGV#4 zaVH*=G2$|-VsSTd4~u2pSSd`~bQ0P`Qj#B8{1JY+a~OCPqlwq8)|TCglCr0@OW{eJ zQCFn}kYPL*g z9-`+(JolT;x{LN=lfx3}J;aQzs50zc2x7tSXtoK%?nh;FhM7)#CJA>4&5XdjQ^7lV zdHU96wM4s3&H7}tKi2I!IXV;YHScd?@{a!s)mu82%sd}tb-dwejh#5Q>bv;J;qv*> zI?XSS-IIo4;%kwtlbLQ+Yk^#Z8BaflyOR6)+WDPo>8KOk#@mscX^ zg*v<#XN6vi=e6$A+_W}{!yEO({cX|qGRb?as=!PTMp^(nlB(is1*5cEe7cvhaQ{!o z)*a;Ck18Q;4qv%aU9M$Er_pG@c8YH*t;P1e3<&tJNZ>~0UHh5NWmHD!z#7;O8(31{ z^zgKAhxlaUa6No`v*UE&?FHEO zDvsK6^121~r*+)N$RoIZc(~Vk^AJBRLV1eKn67hq*fq_y3OhL&sQ4XO<+VW(8ysP0 zrGiXtDjPqmfC59;ylid<+LLjox$5X>BwGQ)F$rK5R4^uG#{-6kdJASSxX2)fs5=mmdSZ z%X`X*v5eh71nIRj+7FFekaGq0$?|!U2K!{~nB-Gzx6_zESOZVN{k=Rj@b9*#v^|Qu z-^2d|1q8d{9+ud;7a8|ayP`yvRCYF)4MLi!rUqu-g*)s+2JXF0=H2?wu?DGGyaSC| zqrh`*4PS7{`z;dnZuF0O>(@wtUYwAT@G^Op(}6+R4UGysss1EB-~YAwQ}Uy z4X<6PCWySlZ`Ja>AlQX>zZ8`5pxudSYYcZ>^&$*><1VV{5tWewUw3MJV>ynW+~`T4 zbcuLlMScqPhvwS;ZP+8D^iMt;u|)G~pjyUfyOvSE;ZXNOQ`fENy1RK&P29!!PWMRv z9<{Q^@=B!a)lO~v;2y>)={AdQWycgbpX5z)CRMOt>_Ey%Ch29o1#cv5tg{fZN;@Q> z$c{!(>Ei0hzBBH)sj5e2=EzJmB^MLGZDoW-kwM@R_?Uwa3)grkpzU>>cV6$&89ryTUl^Gr+KbIihrU7bzD!XpLZ9kw zm6yRCJ178NF6-`fSxzzu*hhl?%$7R$y)C%ISIjCv`WFXR4RI`sq>8vZ_`ATI9- z)$hT84p_%!XBhZRahD^WuS(!!5?`;^))PegkrB6GSH$1I0#`)-Fv-gw+G~M~xol$S zMj)zKhv)y-n0*rL{D~8ddw1#hHt>yVIuBqj)39e3?w)vNJ8KS7;nN&puQ}R4f>iXb zchH(@;v^O1iqy*7mMMADY~Fj1y-a8XW&+u#OZHS6VDD*&xr_Bpg&O^DmoaHnmE&5)bH^?YIAz`YRLkgSgf<1#GZK}Znz>JA6}ZrLfi z6&`?ZPt38;sKE6z> zf8s+EdOcz4g^xdEjW^0BYl(g4jK(b|hlhsMVDOpen&R4a;0ktJT+(It9=T?4r4WbE^XI#?y@n0>Z`!f z2i1-SW^=;J9J#$rCbI?ieKDc}KWjmvX;e{(Ro-Kg7d9Q?&zjM`*;&6;hN88WpJUp$ zE4;^cW}tX?0lz6UNZ{28xHaBZA0PLc2JklW^^Wi~s~2V9A6eTUEnkoCP3CCi8`c`A zpl{wOcPGA=0DWG$CD6LGYCT&Mk z?^M@!k)x|#>vwP0%}vv(?6{1hx$$Y9J1lI{6H7AS4r@8=iK-iaG|1xBbcD&)BOMe9*}jX5V+50CL*5-8-sW9KXM$29@DPzi2M-7ORt%!u zeDM4IMzfh@X&_jM5)W8Ez8H^*e19T|e_1_4=LxG{M_Sb8ME|o~wIY@6h@xFy3i2Zm zhm;F5-X^#l?@*hT=v*|Zm#MxFC6aE~^lG&4qY3-9Jf!B4j=UN-XpZUuJyeyX)pmA7J+C$`%snXjG1Dsh&=u}^;dzpLAD zCIr+mroNu9Yn(4jRdr_%JhN|my;)seN005T+KavSuyk!`y~ z9p8ujd?6U^-1x)V#A_?`<~9OIyRzUXc4=C7`1Zel=kdSa#-Q)pT#H0qTr6`;rVURT zjl=CbM@Cq;H=z;A4zN3qt#!!z^-a@lV_4gpg(jV^a#(WAP)l)T$89Asnk~g0Higm6 zjWC^x^r4-|;Y1bZmXV2SCK+~H-DC2eJp$Ur1@t$R_Y8h7or$twH{5$x?V#ff!5hGr zJUA+1ls%jGIPisLK231c7+Szbv4?kh-4#qyA1B5Wz0egP{6wSPsHKj>U4XaXCl_C{ zTo0j-#rA(l+ zdqg+fL}}l+VF$iB+`)yl9z^?iB~w}L8Pjfu85DN_Q;bMjD4q5++=b$UyrWsCSR}_G zb-Kw)IYI1QjLJxM26kHbh`xIRI)uHgyl?z^Kk3$Ly*2E0EaIyX;yZ%)^=e|98p*r( z@c2*%qib8nJE%WFad&)TNsFoe`0fAvpWkR<#`f2j zFjT#vj!LIt!TykBXYO!{>X@DyxceJ2pJU(O=3^A?1+U0@NsHp3^=KtllsJNI$BZcC zQRO}2ZsQ&$em{Fu`7-(f{%GIqhpHE^@=88gY+t79&5-xNT~q+XBlCqEd%QuE_qdDq zH@&aBsL$=HSC31)*%ux(UikP4X*)gW=?xe3#Fs-g(txk&Kz+&uaFPTut<8X62U%Y( zPm;IRz?%VnDO{wJ3H{>yG8yVCwbp3tx+5@!uDUxZ`(3`{koHJR4c{kWx-1onJIqk2 zolFpnNZg@a5rR{q$oEXkJFHU;vMBB&cJ9WuzxL`S7wze|@9qDsJsN#sc{h2t>c!Mr zDk<+lE-(Z>aK~s^;|pGyj$|O5!{Pns4b18eTzNo9It%nl;963jsL?2VN zn|Ek%B8_XJ;mSiJQ2$P=bEqq5A{Rx?27S1iDAZZjjo0FX>v%t;NZD5-&U&-n8}4*i zZ~IkQqHWGhBONvTLY_`SF)XH~P$lglm&afQOt~Ulj2(FlWKL6{e>BJ{amVyeklC5` z{jIoX1nZ+OUnn>OXlK~D3&_PUfxpA-XhyutORhD@nSRE_yJ2Y*@1XDgyMe!>e~}mQ zBs@(qP2vUd9W?SpJdC&TVZEBfN-eV1yK#6D{m`Lmb#SPjWyMO$6=20Wqq9uneEp1y zPICUps!mTY#%p+5R;wwn$A!HqT+FpPmUrs4##eFXY_x*i0@1KQx7qovlY6tuH?F8h+_-q6rn-({@q3BR1 zY=NCoi~6iAL1HCMkSpWyB;L14{HD+>U*p-JhYNN-SJ&$*wE3w=wq&jAB_Xieyb$?5 zld`T7?bSr$DS8bmU#(3htMM~MQEJXDi>1%e%rnj^8>DtcI*hfVuW`_ZIe(+y@KHJ# z`Sy!?hi*{hXyUC*t4`R(pI`6w8Sy)QwxBm)ANGoy80zufF-qH;!S>jr(Y2kd0R|xx zQ%gB2(#p!1yKo(ul$F>~-1p;-MPW|gw4bVs4tGKc=f7gIg* z7Tnb)AE8&iySqc)v3LDui-iZ^?-+ObkFgheeRtPK7a!Mnt@A)UIQgOQF`fD@E4>lx zYHjs4QDZ!OmZm#CPmHyytSR=Ba-fILL$)ni(=AEYuOeRoSH_!Mtr6`T8#ghH_3DlW z9Zanw(IX157j02@(q8bp`28%}6O`Q`!6SE4uJ~kSJl1jN$b_WrU+kFs&*Q$g|JOD^ z{bk0p)xANRr^rTb^{6s~eOzO9#sWSJ67#HqH=@Ja^FoKd$AI5#n!RiD+!$x*F7hGa z;yaN4O9sA5p__(Ld0>Ps5@@fE-zJW6u>$gC-;9&w9Osr1`RB{4t3yy`;!VmO5eDn}fh ziQAcEM-%3Hq%k8eD8;w8LENBIxQ$(cb<6niTVH@wjo+)=PiE6l2zFO@& zX?Kp*YBin?heL58JP*4&(cY*j%pZ6DIpQ}Ocb7G3)f&}=Fbw>yO))#|Uh^?C{~4%j z{`(EX#uW8aeEhxi75~SjcuQ``QF60husUk6OwNdyTrdJ#Oi4{~F?fVCZ%DJZ0Lc{= zyAtm0MEm~U9!J^<_kY`u4&zI|9L>b{p0#Ik&9?kC0uO!)wH>1dtTNdpesQjpj3A#7 zq!GLi@ZjI&!@#+rQ%vYLg<@}br^oGG+8Fkbco_A1Jx%EyT|AW7YudZJ({9iRPqjt@ z;L7vBtLpN--+t9!_Zm9-l!!XGH^F-T`fkT@ov&`(Gt_wNn7=nK@&A0^1j#NY>SHj( zPF7|V(q><|0aUU}?;!K3et`SyWde55mBHQ)bpsOh-EiOg{MWyH5fjsy48HH>WPHYz zbjnHleiS-+2Tv0?dFLZF^gX$ntK_mZCh(i;ma}%NFN13!o*L9TSWia2YDpy)5?1T$ z_tP$2zMSqFFRnRpb@&d_yHLehP5lEb*4L+|M%=pfg5JMecP!Y8NvMkxv-!K!tisqb>>4kop!fWC;{-#sDyxUo)1o4<85yW@mz*pt#w1JJE zmy-{Vu?q0i%s`L*s5LO~v&**w(yP__uBbP~qJJK>%{3Qn- zA%$wuUXuAqrageb-$+?znNMA00JA;1HfBeLm3b%b|8svo&Cbk@koU?=wtvrN+^hM3 z_Y6;0D+66n6YS#Qy|7JG4swC-?`CPx#1HS@K|Ib}F@sV?{M<~Pw(x|#J!f70Uf6(`e9=? zNyo21*6WR4|2lqX93P_bwP(1PVlf?dVPt|PIi$;`XEzs!mx4uT4_O{(ynCby!DM-v zC?=4xLN$!~I^P(=3{MP1KX1 zk1$oQb|-d7{9L}sR~Pu|Vj^E%sLulKRd*iC_%JoOtRF`89J>1U$fR#0-S`7K7;;>H zy_Qg`BXVsVqR62GVK;XUYo@}EMuxtBAC~GQvL1(B%uShgC_Rbim2z2Cse;Bm1Cv-m z`_WNuFMSoZ1NJSrOWyZC|LrfJ?z1lyw(r^CuZzXs24Lt_$_d<51|586@gd%YqstcB zgk~=Y;s-6!*KGWPaPeQYMw#dCPGhb=b9a537f!y}w6<5Nrw+rx_j<5f#(4Dsbw`-1 zu?Iu0-;opI6?P=<9V*W2J5kQ0H#=fx+P}QEu)dS8)N6HQXo>^E&ZPm(Vv>{OC!l0DMx|{YH7h1uxAkWzj5_O)m9F05rdNA(WL+u~J9h0jxUHy{Tr+(Pfbm<5} z^4JL*8Zfn)_bi1YXQRp@lS>9ZbP(@(Jv!`pKNtEt5U)LrUu>YMxi&Qmp04RhKdX!4 z`x+;&rp#{z-h8J~L+<;-RTB7@@|j);cLVdtD>Lp{Z3xPHxZ!<$2SJa}4p(wVIG8TT z`nCR}P4Mkkr1f9d)gr7z^^T;dFm! z!v7WxzDI)MjUDiP59JDVFzemZ>*(KZzJF&N8hYyzP0Th26FKxjp-kT|?+1>!V>0Z4 zqFsnJ7u7C~fFm)D^W+{eoK;2I#jFsdbygX~Y2QKHx8kmV|LlE1H#7Uo|HA3&zTo`} z$@^^ZH%vLfPn7K=1@CYjqP{zJb4ue~T;_cETE6ELc*cEGiWquvBK(5iMB?wvGka(9 ze`hk!?|jXpmyaU9je8R}`r3|^eZ(II?`n`==kwiex4+&RFHE}vFl1EcSM{pvcR~Xr zZVbY}7)%>_F6q9rJ`JpQG3;36FidkN)`he;zq33AVQGgzjL}a+(q1leQZnm9MG7VC z2bjpr8FlBdx()<(b~K}U^mNwu95gfTp9SupQw9F>Uj^?#yqK<1c6A1v|JBn)!A5kF zd7lCA*=#!Sv9yzy)kiQWxD#`wQi74+6oifM$&+o1S47?HaoJz9nRh_HlcTq1h;`;a z664=Z*PWo(>-@?+s4J-u_5ASi`n^NUWCZJ*;+8N>Y-LjDOKC58wvkEp>$-lF3ubVt+y_Hgi336lwWD(y139!T2R$%wN~ z6GCF1jq*|Z2$yhVGJ^`}C!{;~wima%X#X5l_Y{2x-qEgqVSQJ74rgL@Y4oP#ec;gd zE#+fDZt;!IgqX31e$q%po`}z%UVmU*e$SUd=Zi(RyFu`GfZxbjS>>0;!(dv&Tu<;R z)dcI(MECMR($UC4E1wiyclHuMA5(0x?JSvh;j~DMKHa%sX46jVmKFPo%H?E{&v`w9 z^{be&#`Z)oCa#IZV>mt!>T?M%$ik(3@A_K3rQg5Syj-3_$yJ@1cS66L;wJ|4V^~+! zwNc&STgbi_ooY|Gm&kQ}>3Y7De?5NyKJ>k8#9?+;bu4uBgMvCkTG|U~tXs5)D&C&8 zmT!PI%47~gPffj$b_fDi!u{>GeJ>%@NVxxx&&EjB_x-;~egEq|^a#$_IVb!rA>;Ig zdEX00pzp$Rc}cu`ftOG}7G!3or9uEox%e=5(m@xT{Fd;CGnf5ke( zPV@h3?`&GzNY=M+)3`Bbl=0CCnzrbEWY1ziqY?a>#6chji(bSe4re0_UJTZO$w0C= z3qhi>w*wL}2Q8&9FnfQRe4(fA`>yw{>K93NoXnIHzep{qyXse0U3J$>|C$f|s@SiR z#Liu?DCPZADe2da3;Z9yNO?`-8~(ibZ?T1OiV5EmYr;EN@B0lt@hiV`+B0ZBxWe%w zSSexOafv4T;z&K?iPJtNZNGXw4~t=UYr9nUa<~KUFKpfk^dXEnU5QZ5>(_kSzMwI~ zc;%~EKWTXvr}#oO?e_d5D;kzw9yEG#3xlK5zJ>;%j+m`^bA!rujg(8quLTv_cl9`L z3s^e;!0gR`e$m(8`>=oa%jVgC$KyWYlYas0!W3Oxjy!$!?SJAzd8O8_h>rdJ<$s`S z>KFE7pRRM*pS`6weeLH>w_O8ENIf~3xkh_y71~4eE*acIC-H%; z@2A9j5Dd|5okAj~!>B)f^>)s!Jj`5112)g$z2^zWGk-TZ$KpJH-)}Q}*w5kJhy3v^ zGx7(|Chy;#D;BP=HIX-nHy>9(U0+|^0QK)-A<(b#o;vT!q+d!IANw%-wvF%J;b`vD z59b%x8sz`ePh7tgRRzQa^WSc$XL|drqJ!bAvmR>i*-JWu5AS&F%sJK3M|+#mj(ySB zbK<-udz!fv|)@s^qo)lm(Q5J$js9wVO%3TRrh6 z;hkjMXh(kGnBQDnXU^M_ckQA7=?}}N&tXt47j;M8>9jN08wXchgeHB2JwN7X!_H{O zi7(6q%=z}wjmZqhmbi^+@nKXEZ`WxrVPrhw?lCjI06ap^`l~N^f0cL-TNsTO`aYR6 z)7`=_r2u~ZnhedPk+duD&WUfd4qj3*-%J_|c)8&3$QzMA&|=4#~Ejk|M&Ovi%p$xKI*(Nv`OcKdU6}v-obm>;=(ZC zQT{Z6tdYS^DnuDYNG9pca9e3UwA5~yfo;}H<+PvbzP(BhRbpKYcbFC&&reT?_c1L3 zOlAoBVmu$V6SWVGs+>JC@UOwZw_SS|t8S~q#AS!2bLH@cj+Ex3%~++XtYbSR96Z`Sj_B-*3(@HhF^A7ng6| zzvE`Tymt{X7;VpH1^d+jnD$)GZCR%oz9fHFucdA0dPs5hD;!zsH55KA!Uqj><#8p0 zb}#OJ;2G~j&ikq0eLNmEv;}?oZe!fQzeWQOh9+-A18QGVz3 zz;9~~ZlAq-|MFuQnZMxwE5Xl%|K|4(A3pr|>C->|{PX3@m+vzPb~69-&!3n?8P1XtX|&9t)DKESgrLAvNP1=I*>WN;x$}@`__HAfg0%Cya608 zE-qn1dD$Z>0Nx1BYZGj4IrAX%=g8*;eOKvP`+03YkU2{HMn}V!aU4|`@sOw!#?u$_ zRo9NQah+VjF<9%EsQ>%dXHL?O^GVN6Y(&`UZ2|UvMPcUyr!$iFtGTxJ2i69`_z^_) zczXS6PMg*>W}LNIBV0k+EvPx}X`HfT;qD%E0^VCE;v8CW=8mi?5Z{}R8=tUits9!8 z-7X|PBl4*5sDKwY2)tvL)q{hBqx=C_L-23W%pdQ@)H&v- zLY?+N3^~om3wU}q40xL~KBdm}xSi0H&LZILiDa$z{3Qqe>Y&|l?HzxRtMV>?bBp7( zjQRI(F3&H%j&%OezQsDsYcfAy>Wndkb6=pU}1>iNxE=F^dM9d$=cQTzS&_V_q2vtSj@M7FE| zdnwejYm(+#$f6-vap*BennT|1&08>^JxInp#0|Z~q&n(0?y0~%N>eZK?l%iZ*kN73 zsl-y#hx0M30w*(>PEXHfZ8GpddrVc}bl&E-{-{bk%d`IE@*L9}@HEbyC(Ai{5wpCd zNE>JV_8AlUmv8Aa03!HDKltzB0r9Z@xcNLCq#c}jb@t&4=dZ?j7@s2kWG0mUnulQ2PWQyMd+E*Pp;m4yg7gP>E`2`tI0bBdO;Fbds~<TTAK~RQ7t;V2L!Wka+^}Kq_4B>DA?>`} z=dhswtcIXRXb8S1_Z!gec0E5u^MJO!!sw|F_td~0Q=Y=}SvCgm;rIm3hzt!or#PH5 zBXdGSPA#l^R(LW9delOl&gLz9AF^`P!%#)5)t`Kn63>b6^>X53Dtd$e3%D2Yd7K3T zt{$;}d-(vkzqz@5`{oLK%QNa`TcqDg$5NVe$-0^ga0DASDq&|XrrqX|baQ5-pK%TL z#+-!uYJzb&nBzNFGf!wRoqy4DPwSJ7hivLxXyLvOq%< zhK&Uib#~%%nvEVSC4ryM(A%F*dfB@@m6Lj0xZ9h*k`mu*w;Me%uu(*ONsog8dwmi& zSe#!c$UW104Se^n<|8-eH#f=jER~M}?z)X%FHrhVw;@oVPeD5N$^toei^h$g5&u4B7?myOGU% zDcr+2O%}*I1AfH1uNa!K_RLOr%frzAL^FmPV=_TA=4kAWisHRU=2?@-BpwmDxupJ2 z(cKeV*dHBKNTRA7bMS$DCiw(E{k)OsoW7moFXGvA{Rnk9KbHTKPh5U{`|65Aetc{7 zHgv%0H$HrJa9iPG9Mg7T_;Y>**ThcY?c@l3q%X=?Ks&e=R?-k$9QX7)Z9x2G%pRq% z#)4#i+`?th!JI>Nx@d)~44!&uPg4tbi~0=enI%tYI1;=sk~E}PWajjO7KCgTLlXNS z7((TROT>tiE0vOYXeO@+x0{c%1C98;+`@WO@EpnGAiH7B-no@Gd=X zKYqNtbkVGXer|y-E5PODA0OZ1{eIZ{y%UIw#z^Z>bB9t|!Hr8g(&XF`WNEZ}$Fq<8 zgsw=~t4g|`htR!Cu1S-3FHFSkzwKmzJ#4`CoDr>aa!I&q^4bB|5dNn zOLLzOy?fIjjwLM}{1s{dr1$UT#?3Ef!oAEPy?;+f(R50R3)+@T7#42E52__KdGzSO zC+E7ZL)ek$=c_q$>1OH_VzLSKQI5n(U}}D!!C02s9{M*ql~7DaZ(61_9xt@%o{xH($ZG$>zz8r$&gFC zg2|Bf&`*0l>%g*1KHLlYt-7I!2SVUyO5oWgjHsnr5bN;Uc-#_(hFSO-g)PU8GQj&~ z9@f4{;xFG!n5%J#yz-y@Qpo`fO5{N`zi;p5pN;*kn~v((jHcWJ@vsZaqmWTC-JFr@o66LO5kU+CG};4A%6s8Fo1e!&L+dk zEP$W4i-EU^x0dr_>nY2OHK0=CbCD;}FAII&&-{^L_>U@Svwi%LqfyAQL=|*gU@ogW zBegf58A{P^lm)$^gRa32J=DbnU>^$8&Kq;Yfgw*Lkow#JrjSzF$+d^YDOcCi49^1h zx=7V5jl@2V!sYkkWCs|;NrNTT=Fu<-vbV4lt=D3v0q@w4tblvd#sl%M{HG)1S&n{ar!9WN9E5_+$G44udw_(nq09A!}MxG8P=;t zdaKnoJD`oZ=$G|Hm30qn&w_AKiR?n2xF_*{t>GM~oD z`2W=TV$>4WIWeZ=%-t)o4^C@c69N1JJUl194D}lCO6gk|-I}Qagc0giJ7;ej5A%I7 ze%P;`WM@?q-lOuVZyFPPp!!MhMyuzYmkWkvj^c31#i5bODX&R4-HQ=kY|Izj#`N*t zq++9tR%3{LIfeX!Ng*GW2@@{u%n7t;1gARf2I@}Sw*~GBcsKGz8V_9Y<>DZS<~w)o-|vUDO~BS7BWr zO^O_-BiI6WOgX&kQzp|K;78x%g)r;~VVc>xg9j(alp_EIrHlB-?4YN@Z?NYH;*@H@d;eOj-2BGmiLt&7ZgJt-mU`It-CRR?w0q6l1O z%dZ5>Uk8Bsm@%&bGn{<2x~@kq)Ftf}?zy~c%=;BSO_TBWaN^^|_Y|Ws_i+jaqXpID z@p#O-sY_{YhH%9Q{4mKbdo88&n%E=ppFreanaG!Du6yey74zs<2>p1)+76?xo+RpT zM5Zva*YL}LX%0DSOeL@E*Vc8dAtj3qhjJQ&4)#QL*K=v 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 literal 0 HcmV?d00001 diff --git a/VUE-WEB/lions-web/src/assets/back_1.png b/VUE-WEB/lions-web/src/assets/back_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c403755b1891a43b342ab783e51b6ab90f82e4 GIT binary patch literal 113041 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�u^UUWNH61 zr2P-ye-~s6d|y0z+HskeH0K1ibMGEKd<=O1+rxKHKR^yAQj0v>+)2RFGa4xg_*RR4bl6_Z0XkE-(%7$E-2&#_zU^{ zp|dGrm|$^xuvCJ(px@|>T`#7TS%@2|*`1QU8s=aapH3KmW|LSj&E96SSo|%PcArLR zA_$Ny8H)w^W9pU0)x%u+FgWYsGy?d~$t*ZW2xOaJSvw+nF3mc0Dtky1t zP!#r?EbV{#?uXw9)nA`yzHH&UB#B4;gU1iwZFDR@f|X}h!|=w_$B*A_nDa7|SY?;n z%9iz*%_SGF)FGU5yjQ;c=*iMgm$1jefxk|=7EJ_%*~ea|D!&cv9yO{|0k46bELggB zP|3x#lwP1KbHXMqjT9Qhk+VzLffF?_GkU&T6ekkAC(;v@;x+%^IZlYsp4ukZJGde) z*e9F>SxSWceqw6dU#ds9g|??IEb(UuHVmIUi;-lhfgx=$Fl7v#o!Rh)GkmOHk!jm) z&CRyvkRO(VDNT;Mp}Ti2a8gHTb!lQ^BJL-qS5uQ=v0U338;+hB+9Qq-zoc3+eC$7u zcMVL-An(41SHR3Xh2yoPTCLS!>io3})=v-8d#O}<_atNdRY}NNk0D?0%L}_6;3(Lc zODYvh`@cilfA{_Ozxz$LzW3?lnW8VHWyH>X?!nU+!=R@YEkAzr`0)nH$uGZn{`}p> z@<5RUccs!`6^fL<3U|4L_DYYT42?y>-%2`waCaIT3&9SnjCT(jRh?87hkN3rkz>iI z=Gon2X)o=i42aPxFMISXFAihVDqegi6Z|7ealAM?%?h0xS}H_RKR(Xi&h-ZPYY2r< zDS&@yyaFh+p_Evda2Be5$!1?zH^Y!yTP%)bh1QAuOJUsEY*>>m6l%7$x3wvi&CTtA zeg{J+r?)o$=YKXgr>7?KOT(CO1U)-J__;CDRFV{1>*^()I5BI zOlznButVypbxN+)v`QRK=5#lmN~QL84?g^=;(>B=MFI6aFNv<}vARo&fRo{9|0D42 zzx(04A4Irg1ItezZ&Y5Kmf_u#vt#2ioWaWVlt*)O+>+W(>+pkj@18$>(9tV)P)awC zyIXnrR_1*D@la%KdTG&EN)-jacxNwN?v$37vAIlmsbv3PU8SbDJnqio^<&-#ttSQA4TK?=QfO6*c~e3@o61WZR@jK}px+j53ES>3 zgq@6y3~!wglA4!Nel4WzdNCw|o}3)IPZBz(vy=VD(BMRFCPru`lGHkg`-6jvvHOct z$*FiezB;ls@jn3fi78v|*V$?(aYjoL9Pf74t%oHuxSNCpQ^jLQUK|!&Vyz6Y?@VHz zpS`WXT1_&I0bj>!DWLUuqr6&cV%PG;4-Qz|kM@5}Wmt))kdQZ?U&*T){dtx?7?Gx=4(-jYi{N}AbxIu zcWDZppzh|b5`E_-aaXN<92R}8WiDg(nv*sHrI)*Cc_&wUzz)u;vIhWEsr37&hn-X< zi&Xi^Azv4cBb}G0Pu5xNIoeD0BHT;W^X$E)l_^{hUA!vKcC=_k*Y0nJ@?p0*oYe#r zcfvWbX5d6Tqc9xlbUH~ta0uW*%*4=CGNjcxx$<7oCs0C#KfeYNhwIKT9PaFlrPQ=TnnRDQ z=I#?rfM-5!2~^&cnP+fmZ(tNMSw*!LXuT0&-zcw88;XEyPw(xe4^A`kUz2bzc$CRX z>jhze-evvA4o~~&#gs+ok`I%{NmxGcgto`QfPQ)0IPiZ zROIVTCGH0=o4D)kOhQ%tT_sFx?w6vkDvdd!(l!^L#oqkDyKLR5!jUz`W)}! zY_^Hv{_$Cb*pdL#O)zLz;u{P*ONr9Zv+?oSsfESTQbz@e?6|JenTxyDN0Q`Vm?SHh ziox-pe}1zx=&R7fLJQD87@vTFG5Z?*S|ac72}7%~37`kzWDGcXSmgTu9$Lta_!sqzf)s z;~J>^LJppOzb0gB(6E(9pDj9&Q~DB`3gqwEg)u7@{KV;6B{%coV2z(ZrK)OFt)J`~ zQI0ar+36D~sV^MuVmct1Hc6`zF$Worrj zZEe9q-KpuRu+nBzHia3bHv8cdbmM8WSxcrtsMawm=4J<8jAr zjAC+xY0AkxIz)Cx0rm(Ktc|e~>{hL$0SnK2B_#t)er3D@Ghk~c2M6GHz0v!%)nOXX zc}bL7_j%FgKhfaQfBoYxfBgfX{f8fZ`2PDVSAO`v|Czt#xhrDdo7;H&uZJ`F^}_EE z=)<226v59ezgv0q{=sm0g@{S}rnT8}sQdL5VkilV}5aaG_ z5hun=E!&G()?55GpAe8%_-%d=qHe;qFn%7t8yZ{$Ef%|fKL*;=#MJE6;?yGeotjwM zif;j`XTdFt@u8t#e)->Dei?_$44@VVc*l}4zf#EnuP(ydMoK?PyUp&4t$s>6l(5>1 z1g<15*b+NQ2mz^`4^^9dq+?`ShUZShj;#9l;z?K;so@5u9K4cy=hxRok1^qe=5b@% z-Tn2wwT##3_0)b{YDPx8&a?YEYsp2l|NhT^{=;AX^4C9o{~c&Q0Nnqte_sA&hadmz z^Sil1sm{mjZ10WFIXvp%U^#m z<*0ovhkvJBO&uPV6gWh^QaUFVrFb%@du%RaZ`YvWVp&}R-UtP@#4GR2;x5Ol;Nb=s zB;o7xfco_`#ZCqVCpz4allYFz6%F=4J6cchqF}0uWjFHv2?ckRRmi4 zWpuA#ATwloA6%vcyYLr0|Cnu7X0F|oA;0H2L5j-xdvm-2WTfts{l9=lc-eg2rgXr)I<_M1(~ zu!RE%c7*$tKmR|MeO2oNXxIzix55?7ynCn>+jkcY!cvy|j*S_J{4gyooK)(|8@r&f z>8;EadFO}y+$ka+ZYr#^(VWR-Jk@2A5hWxlpUU~A^H;sRh-2y+dEwgAj>cJ z%0=`VfUnWY8C;IEyJ|k73Il&H+)a|XxlZ3*tzf(1>E<(MsorJ*y3S}&SX@@d-l1)A zbaq-8)h1ln>py>vh5Sq>csjzSYq@*(uAlMQ7}9UEft&RjlxdW8l78@+l!efm8*jE^ z{GQB75*CY%v}ZplCvfQ5L#DEF0^~Gy9Jg?XKle}Dn{04Z$fN=uT@rWX6b6taJHVP8 z0o&p>oRknBUbSOBlE6u=^ie+cFdq0kiAS<_9VZL1>_K&5CN)K=TXjHEDlScXqep*H ziDV)9RZ7zBe`0a}?)&e*|7*{{KuJk;QOQ7cwZU}mR9VIF)6ehDuQTA(9V>Yx6pB@& zSxw?3X8Ga9i|5Z@EW0JVqw2BVF004m8VEQ=;p^es+&}17k?3{I<4{LXAuU(~u^akHmqI&k{eK(hzvwkyahRvBMc3cc!T2s-n{9t8eWoE<8Rv3tsyRz5i zcDv~=K72iVop)eABgLHq*gam_LeNm}5cAqks}@#So)b=WL^3rbwxZCCn~vr93XQrWh+v=nO+{wIK> z1rV>1*}`zR)}C`TY-KDSbMVUmY(SI02w|9QbrQ2d)wPYR=1t6&35zC0R&gNX5Nmr= z8_5$d^F@v$vI3>#3@(GSI4b5Nn0H+v+*qjSeC;%60v|lKYNhGdCfr3T>M|9Wxg^&1 zD_6c3%*^j~I(;Bea!;=-DY-Y$)73@OZfO|Y@c`=BfE`B;hXirK2mxRj%D~MtaT=Uui4hPj#z!at_e$KEgS)P|T{OqM zOym1;d$7IWA;ca2rZWBFv!VO`_RXK~lM_oe($>!Sw7P;@mlYWp3p+zq>$k_J*#D1A zE-l>`{admo#zvrC;kQY(y=ijfQ;aK1Wr-e1g5XjH*F8;r${jZn4r5?SO^X&2Gr>Av z(uesNMw3`A6n=sj0H$Po0C$G30WK=Iz@9h1#JyFkrl~KkfKgdE;Vw!STJ`75<>1oo z0QVn|wgcM#^xM2r9!#_xs@}Zu^x?x7bD#s1Tog?|78WKOc=*EY&SgEfcunu_c<|!+ z`GZ<8WcnRWD~=$~0tkcASTug3{ii5eU_^H@8^E zCz=ZLYqOPwhRzn-+M3%o7h1F}3lplc^Ba6S?RO!^7F&4mQ%tMzY2YVin_Aimi{p2v zuK@0f@bstLrDUc6$Tqu-v^1F}R})PV?rc1u@aVzfRo*d^22LZvn=nm&B`|s=?>f*{ zLpp&~c)0-8M-<4S$Pac42{}BV@WsFzXyccHT6*9@+ONR&!*}1KL}Whh;@9HFlOX5= z7p~30se4h6+qL|8!;~K^=anX#O3cfzR^HFd%$f5_f}Kj&``6|!+E}UQ<5y>`$L#UY z)t!~ba;MtEHLB>6xN9k=QoXyow>zJnpPx?~l+Gd(L!ohQ;9i{03P64&lSx4?Y|8)u zAOJ~3K~(Ie66y3_dOn>>rzcY*v$L}!^Ef-_q_dMDbI0#BEu8C?`2g$9?V9#yKiUf( zK3rqdES^n-fZJ)YjSsc>%0g$0qG^jtWljJBs~i!>7LD)zr$N$UBP=ANHEAqUL-9dT zc3o*hr8qW|fV(CfUy6rwlOwSa1!e=GFr1#}k57y13G94DZ|mfUPlCJ24hPA63{ILN z#|76tCD*~eKnrk(>3H^*LaSeAP6{s)+^Vak#fP5E%QJeuNIN#rr8s9Uhd}!kG{gk{ zF2LPne(~t(hLv0A_rk@=SamO|bh%yS*z%(SdHbG1rJCjCbHLYpe6`$hFK5lMS8p4Y zhFWNB%H?_|V7`_E+}H>Ny_(0J))uDQnQgjCb!CNGzD~)Vasd1E^mKYYWvEbBQ0wdK zkqBUXJ(5bKcIRPB1J+X+FK*Bos+l5udL%w_oM0jBRB1@DB{wv-x3vO`urp>Mkfb6D z(tZUh`<0vuF=>P_JTvnkJD$|jW%`1;8+xqP9{A>pUOc{+KL_gEgZPyXzkdJz)rUEn zD-5RRI^1tR8lhKL>M9%Ifs|b3p~_)!?@RoXU+9Wi(Ro z6#aq|k5{f$r_@cK7bxmb);>Y;rUM)-_08f1I_nNo)7Hoao)z3FJ347R%jdn=J$b4*+@p!aY)( zzX^N_V9?s? zqAyWRrW2X>!rFf2hwpzt(0})*!nn_EJbm?>~A(DVxARBkd8ITrMxEl$#G>0~8+~dKwYX6wM8X zLb%oHDs@SfT3%IE!O^Sr7^yYjQIY`n>G_kBgWYr@v$mFrL@1>JWvqdCOK2mt_;Es8 z%`sc1)G}F{UM6b}-G$B80R_%{H;iU|5uQheB<(W*gvrd+?(0 z+QRv9%fgf-U^h9H+QImzc*yDWIec~*P-ou95Xq(0$-+7ba0kBH(wa@Bk8p-YIN&>$ zOmpQkjLAXfB_6}a>poZqDaKh#7%&aaz=JaZ>M1R(4$FV>$m!u1X5}@~RDQOxwe~W! zV+vZxBueITWN8Puv*+LaC0Ot&{`L7qhct_Lfw=4MxgX99+{^Ycvvis^6!$Mp*DA6O zzkc=c{oCb_AKwG?a}Pi75^x8BD(y070Ph}SRc#dj-cwsrRbFk-DRp`f=qihH!q-Z5 zttYd#dvbbkAmF|iiLiq*+3`uOm&q|iWO}|rJZf1jS}UaeF4tP_HaoK0+?{na+Y9LQ z<~B>a-2(0&-1PY@nr4eeIeTU~A9sh}&f^{{@SKBNpQim9#$vIw`7I{2yl+$N)2C#? z@q1Z2;fPPcRZp{Dqi>o!d&#Hr_r5v;*Gfa=zRu0rzTWwO;3;AlMw1M*95Y{~hk_9vmGV z931TK?`5F6r;;gPW)k^YO5wQ$nvs)raj;7kWvdgE76EsMC{JSA3~5^ONBCpUwrAPS z)!Ym$$kd`z2_9x?aVR&3n$COYCSKf?g9{J@Q0ZZs?P_iVcTcOq>U#Qn+-f9SZxYN#fw>pa$Jv)SEa z!g6rOp04O6@5go75#!gu)VxQ|W_V7Z7*pzDUIvA#$hyoTTB^WmgxQm~tdEBOH$$4gF z`{v©zvo57PbO~ioSH!GDk!28hbdAR%h{0mMk`83(gi+GdR)~6&eBC+Y11sh!Y z6rc3jn1i8Z8(H{Rd;GyxK@4kS zOT}2aee;uGuYnsdt(VBx#r4z3<-Yq$3V3*t!MXILCpO6~9$fmJSlb10zw*N$`!BK9 z^}UY5;(X6)w)Vig6pwS<%YekrTvFUo(16ta{p;5d`d6>_hu7w6VG5IVGiH=|*U{xU zwKPU=mCykyJ?ohd`v<3|K-AZ~1}A?y6c7esqVYyOBLW{4T%#vM>m#G*A_}yj7$V+H4e{WuzJYCLZ^8vD<#Oh-6!w6d!*! zYf(0}gGbwulTj)c&+fu)q3O|De2d%C^b975J0CdPXG3g8$0>%LZ?>sVL*wJ)L-7zh z+;4Ak*xGG2R6^E-MxZQB?BJnnHDULWVS)i@+qgd&nLJK7d=5J#3$6&sdl`G-ZznP@ z9)fCe5bK0irhvmtS^_P8LwNHX|JupdOieWyJw|;6h|lPfOVf@yt+k@TB}tGfWFdLn zi`-v0pcB@WC+-S8tlS+CQt5f>j$sd02C|*+D-M=meg5$^KYg&(P}%76%zb$M>eZ7c zuZ~{7UNd|2I=xZHSJeQ^!(FB_naqc`N2f=Cb8n-%B7e9wbGmCZRWwqRdUsbV#obBa zd0rurc9K~|XL1w#yu3Gy%=i6gA!WNb_-vYeHV$Z(*+8i2<7ih-Er1}EQ*W8AZSgE5 zQEV3ZBAcM*_h(U{s<9FF0=Q#}_|W(-<3m%TTNE-`ldqjyV8Cx<5Zbn;=~NrZ_(Q<9 zFb-f{>@tN3NPX-$DZ}jH$p{I@O?@oxj`QR$S3IcEDq0pVm-Zh7FLUL}pTB(2J$;V2qXW0^6F-c)0fV2$BAJKjV=Xo-Cq@oU)Ju zR4NYkB$1d2uFWhdCR8f%^tzJ4`RA(06Ms`%OUvDs=BD-*n?T|08;8;+!aX$p>_<5K z1D6G`x7fJ-!{&G!>>|Dvcv|FZ-#lx{hq#Flx)F?Q+3p{qovVMuu>@WN-fGhN7$TkW zLEI_uOXW}sUfr>3bN{*8e&vVnvX_64)c4+n;%*kZ9UWr5ODFk6DqrLe zq*@<7;KjZ2@^8H4ZO${bs%iEgZ*4VIR?~CCuipZ9^Xl#E{ntS7kDfgFaCG!`|HIm0 zZMBiA)F}%c!rSBoPG;XLbR+6uPcqjGE(4c?dn%z(>Iu%!JDCD~$OJ-7I~?R`Y2$Vc z&o-6HtmST>-5$5FHr%0XYT@T(XvQbn5Vq`=CXH=rs69`$v*K=B65Kt5c+dUB1{a3L zhdvETSqIL%-G(YI{f<@+@97x(%+jO{j`>ns6PxhZG*do|ahOc9!jqBMmYDZRDk52X zzL#c%3}$UkR;KoAamUyZbl2r4fGCUIFMoR;?P4#3a4&EO;T~~XB`f~A5|`P`j-BQd zO%`zH+*CexKKEtY@M~%I$!YY|O8#$CmAcwY6LbOxg?dpmudUbDI{7KU753|GxA;U?Gs>Oj-F6rQY$EmEjZ%E zQmLt^^~$~bV3*2J+1;b}L|BAY!!2hh2Fa9&06hmC0ij_>Nl0#uS26A!uNq4;j75Lk zZdVpHvl;T{iR}qav%yWk$q0|KEW~{5HkNh{Y0JW^mfBi{eU8uHmalp3 z@mPEIp*|a|f@j#gIBAo$33w-A{TF7kh;#EY3%D&c!5%eubCumzMqIE`03j+BGjT(x ztqES;{S2lSeazV2{8ukJ;H-ruuO6d|zT^ZyI8SfvAAkPyIkbN-!kw!SQ&`PXr)02l z3wY?N`E|o|12pjKg$>ni?N3%;rae||t)0IJFt^y6pDkhlcLxA`{O_|4 zA*tAYx24^b&G6rU=4)qhFKQ7)`Tm*2d$(J%CVptKNwTJw#ggMRnx@foYm?pAZX+xX znYcSZZd)y!TW8oRNIQ`oSykBJo-MhB4jcSGn^Rdse}41L3-WH~7ublTwSL0uW%Kn~ zAxM%ReC0y!rV`qd4N)~f;J^3~F5Ui@zvd35UdfjJ=HZU%J0!BYfnlzW9-X^muA`&F z1sr>a)pbFU*vv{{qqXtbrL%s;A`8PC;)R)9o~pbkh7y1GnUAjv)#AvJ!0W0gFJ1vZ z`OH4MY?WO4U^KtRS7>^{dWzdn2Ks`6^kD^YZx`W?DVrAm9s<@07@U@8T zZZ#6g-pIWYstzMpH<5RbuTGk{J)RxAC|c!#^f5v{9yc%~$rVuY(Q517yy}$=3h&NRsRSS}|iKR=7SjYGzm9LTG1J3J;qWy?^{Q zNA;_IJtwy9p1i(o@JRL|`lI#2jq5ZPAxqM_dDbEl_pCz4 zmV7oT!wMVBC1z)i#;0X)RH@Bp&tJ=kCEM=zaj`1eqAiO%Hzj*AzBxO)8Bb1*jIjTC z!6_QTrz;#Jo5NenOwNn@hlZ1t^^^6lp}mswSaW@V{Y-0 zKjt2O-oOlVJndf^CYpJCPL)8(!*^ft56`{IS}Lu_mG_(`S~|VgxPOi{lzB6Ue8iMF z5I%J2@q${{PSzcTSWYAqf;oj*XzVh$H;r$CTkP$N6EX3=pzVH(Br=dqOklSEpS!n@ zY3oe${?Ea|Bmo9Y@Q{|Kb!R)BS>xjw+vA>dY~$m{M}|RO+bciaN!!qrXR9jh%0g6V zD$C_pVWwFbEMS2+Q3S1_2!#L&@bEHPH9=KKswjbEQg!koCDka;AFEC>(x@~4wHp2I z`#$f-=h(DOXPdqA3I^NQpZhxB>$@;2!j8j z_;`|LVH&WOxum?jLPs|b_8=J}?H}C9Kji50^71seN>HQIqi_q7#c;>Ej&ZMJEqd{c zE%uh~V+y0(*utrvuOnqlmQa(1XJ~CyMdoy9f92+TnzSpljJzSL!7cYGI~Hb_0wKY= zmr7036EiTGU~=a^`No0>pE+bHyvs6GhwqcuG<})c>Z&Spm8%g+$P1S*$il?9Dk!XV z;@2e(ufS10tlnGCdgLE@R&to1O>V9x1n_SNN z3vl;SsH~5{XomF;jq8UE{laiD&RQq9NgPH|ypw#Kr=_pkadZG~4Lm+NJ?I1iuIL*z z%6Y5RPCsUhKzragrZ6OC6fHRQVawNn-K7)2YY6D&6DVpq-u%rEwAOn{+;_=OPZg)D zt?P3O0bb8^d{gV*9-CaV?O3_r5T8JUrK)gG*M?Mn>9uPb-cIelu*Kwu-P~XV_@ul7 zzE(9;!gQi=d^wOZ;?=+`Ym8gCC=qu$wYZpBWidLrvYMh5J0hxTGR2y9 z|CGwCj6`W4D+2HJu!L%__*PRuyNi!N$plg2RyIPB7~_$l79FR^LfrY591IZf@w>?) zxC;SI;FH2V)R*Ev;O>!TxYsi=-6dD+^uSP`#@qviFOO2i?677V{jiP`%FAwD*lOCj zl&NiWl@)ajo3%nT6}y#ndJ3?$wT!C&Z>P+!Ge4yoyK4q6YGbwRl{nJ}YSoLeGFOz6e?fMf!V>Z>0{)R@j49+9N9LV{Y3n^br2d5$mvG0t4jRky zjoQ8FnnLnz2}b)Oes!8mWORC{tH^t0ztW94PK#HB?i1=S=-#Q6F@tw#2dAg?A?5M9 zath7M1-eB`%lzO6$CbDn-F(qqt1X7uZXa8k_=`CV}9WoQ$;;;_%aUWaJHgIy^*>$B0)|nPK>_b-uoyCIhcw7`b z{*!9ljUOJ{nTy)EgGOR}7_Ln=1)*YBVJ*k|@0HLpDF0WviTGN+b^)zm`Q+RdzXuM6 zY_?E&y{4EkXc~7e*3&Vyy@Ma;+FCUil4&c~-rj|uzARXGlPm11Qg6jmXOM0;*~8M? zCLM4`gjA-MPh{_vdGx5An>xhZ=EU{0r3Bnb5%-Lr^b5BUo+$W3sJ|(j!7z^ucif|B zaFow8enRqJy}b!7>rNB2k$YaLJi!#hUA|K&$~naEjTQ>0BNSH<(l;suDi!8Ef_3%v z9o5Z^j9(eBN@`_5eV#P%Y4;8?Ug{d#LOV~WstJk+RBG1gy;n-ha0!u0gRBt91|YuO zOAlsv`s>==K-3fp>-8xu6WC$nZE5VmLg^o78|4c(6lBQ=o7+|Rxy!tDFLO1OsZ#-r zC(rO+s=q2M8g+4)bFE9<1FlbbtV zNi7ubDlPM70q$6!RasQs34ZjMuV!0CcQ6J;jX`bQHE_2|WgY1UW2JtU3sW#pxX~8V zc3aGC8n52QHDn?zO&Xr9NIU2H^K+DI`FsxCE>rO+eFlevLBl5$fq2?cTNHPmk|=al z0qvjludI%6$pC&f8uj^L1&Gq)i}YSqhGV3Z7T!0#l?B%ZAIq7>WS*2Cf{MpX0wioc zoXT;nR0s8Pq;QMf#=%`mBYwMVu{|@z@DW7k8LF(C8`}&9m+chxdKm zbjgNLutvKHq^5XRYZavR+9*>qRblz}0N$Z%+Jc`_mN{w67}CNWOQO)s z^@KM$vbma>VBql*qTLr&#od`q6q6k@AuS}+_c(#4Zsp+TIHl18ZM|BYlhP$4k&jSC z#7u-z66fGj9wTv-z8D7*h92s(nl$r$`NomIfy2j~Nm+5_lBSl?!rkDOwNT=5#|-H?`8>Y*PFTHHXOOIWp-r|1 zWMv(u?d{^t2!g;-tq`3di82~dRLcM+MGzDHx9?p~0c%ULiILUK{$zskc{tt)OwKmZPb!a1 zF-0;0;{kgI@=g=To6Jx6#bjV9m?Q0=Y>$y3i#$V>muux(j5&q5!6Y_t#ewM@qX}8S z@zK6P`C*(_nBg%h6*ehPRh=K9q?$&%o_aSnxWbJ%_Kj9eF!+XERjOLesLj1*L)3cN zWNfQ=@)X#bos^wI8Q|D=cZY%78S7hxX0X8~_bo$fGsPX%?V6glklvOs3GS-_b%%7p zud`ZRXU^4`w0vaa$xpA8;XxdGSB^XGL_-d=zge70Ks$!|jtZ|t#7=pwyxNg^U^|Y3T_$|HgMceH6&<6RJm*X|H`&?Yu>ZP>n0UlBQc|)A>eig z8sJwB7qV;&1dYl=q}C!og<<_sh*62w#nlJ4aK^1jsK>PluJEu^DIpid5#hFRu~)tHrr1L zxYI*JbPJ`|eb*^kjM{;|6W#E>=oVo(CG4UU7B7a*W8E4dcQG!Y^ujEzCNuU87fO@4 zbN~Jw&B`Se-)iHo*Z;R2Yvsj*K|c8=F!f+YS)|ttMNOxbP_qC4AOJ~3K~!h6b$GJy z8lj$hq&iOlNi;zSgF4arade8!8jy->J#Jxc!- z=heI5wKBauIQp(^o?!@H#!Df0>1E0;N5~?Fs+d!KGMebK#vLrdYj?JLx(nA&ZI{m- zBM171PDgO3bdN@RH8$9X7vdf{cFI~1_Lby9mCItnzB%necKc0L>m**yyjL9e{n}nL z*4i4ha?x&uzL=bySA|%t4FOwc>wID0B^FdU<~6fL?~%CdgXKZ~fK=yoqg0P$j8DfM z-2@FIGmbbF=^N5b2!b0+aT7f_eL|jCP-{11wZeSimSa-i;S*B!fH{m87#vIWH-;Un z6eok4lma8R^q^!cv)-(;V({@!sMn?oF{u(iS(pz%lg_F!YG~ zSU=4&ER_N_eseL!?;CHnm!XKlL>ijooDfsT61S4Dt=)2xK>n^2%{0nSWPNvi7*hmy zT7IaC;out61+=;sJPK^d;lPs9ggrqqdgk4$7%4^@yGEx+C65%f`t9b=PT{l~QOd~N z{U*E0HoD5bIqcY>N?8E%=5O9Bkr7rHmwcsCA9oa2i4_cKot&F0Fy-k7=?)mFk?SFM zp|zfw)9K$-H#}A3aLv@#fcfic%9~uWHt$gVRcYXEI90^9V|8|D+#S%k%iqe{@X66* zeM2XXDe~W)#go3J6ftg1+{<}T(@3aikm4}nkVRqw+W08=Y_5NEGlfHCPmrYIdkGeN zLT>bPdia^ttdoww~!$-r?-MRQ~d_Jb-R zQi(h2O`y>Ltabh?l`5%7&$%(!fhNZPG*&~i*0c`8wkFkedoRouJ9V`La7zd_V{kP! zN<*2TG(3~mP%^r<-CAuA3(`F-m92(h^Y>4V!6_b}oG{6?Oo_{`(n#aEdm~w#P9^ASGzfzin7ZLl&a&b$lvM=MeWma|x4 z4w@$JMi#J6`(Z&7#JG!rO$&O4Xp}bNrMUbX-B2XoF&o|w1fG@|gYGNnAN;Iv=5+KE zg^{RoVg3f8H+J}&yQnJMQApQyy8o0;hNme1$KRR(TeD=iAV<$%CYSrtoma^{h+(p*6nPJdC4~&fp z`kEE!WPoMA4d(}6UrB&nKw^F`5c3Q#BqD?_>WfBYmYeG5Cc|fZa@_rt++85XQy5No zi=8szoZCP-8It?Pfj)TW-4Rp7Idp}JwD|cia4;G_EXk`G+$miEOas&C@8!{xEf_y0eWzLmSa+G~HG0_o z)hJXmtnB!SmBJ{-450nL0Pp=?D(Xo^fip`+S$M!oG2R5h`dC($aFB$wL*6;{?%^kh zDT3_TJd5G1vA8cyds%{@Na3rxu22~1aM~Tt?z@9DBS370=DSeC+ewag`49xmd2|{M zv9xp7J|}7#35PSGE8>Y0%IgGfZ-cLPRb$w0vSJSpcfk9bZ=(6YDySvgHMIS4Oc!^z z88bB30SWJRyJO|e&59>$n4DYckn4Hz#MQ7jW&^O>Y}#WI7G}lkg0a55(PW6Z8?mw3 zF_ld(D+gEyEKQBo^_Gz8w(`a*{>pLTno1j8yP=_E4CX4k%U;D5hvAKl;G=51>U8(n zk3Kwm@-#Zhwx2y!aG9;OmkJ>$;)#BOn7B8AhI-_pEJM?B9~8yqA?^PKdEd-zZuYKj z_V)H>GQIuz4ERrPKC{^0pBY*Br_YqalZT*!+)dIgAh^HI(} zJ$g)81!Zj#v}1z-`}RwQ`^!A>Y6CCYbggO+ecbt|c_3)0>xjAG5cyb5y=-1;>(=Z{ zha_g?ytYHy!3qW%+f5D4R)f_lexp%zO6#EFakquaFvIXR-`>PfUsF>CXYGXoRSnI! z)eq}a3*^4& z$?RTVbafGq<4gEh$^#a~vW(Zq`uV4uy#D(?BiwH%Cy-B@%;mDl>|!>RoX9SYEan#h z_x=4N{rSawetA{EeS`u!hoVUUykA+@M2zR4B+`3!Mw*T%l&r&V8uCU692ocH-9aEx zB+xBDm^fY0Sja-qwU+4-@xSP*WKW zc_r^6H3{wfDNNBqlh9QK>)yqWj4Dzy)ndVruT%?q}5 zciRH7j`Dhhplx_=p@xsBiwOb^0b3ANbHfOx)nKTpX%BS90^mCV_@UU|1~_E6zS&rA zM20HgmWYVc>nCP+nXbVFuNCzCMa2#Fk?>-s`Jpa>|P>Hc~OT*HSW^`G!XChp=n1~ z!cmy;iGVkPr-d3#((%)b&Na?thlvH~bsRWmiXiv(=rMKMp9aCYTOJPXyAbYhy(%#O zGOEgcpOf;ERo5tODn22e!(FAE>pMfxVh1~GAckYJoPke2;CDrRyUo^VtqIy%RcY%+ ztiHayJr)F}etj(z3&nzf^fvIz7P3tZ?+vyE8nk?_+O{HH4E*v^RkND*Iyk7KNoH+K zCqMl3Qy|x?WN%ru_2ehV!rE_V$&5XDiWpj+dpTc9l^+0|OPYoTeq!bN_1|B=p7D61 zFmudHM;LCZ3`4Sjf0#TedkLbM+qZA8F6PGjy;8`X@etyq0ct#{gFDHvtk;jpCP>O8 z7o4t&I|uF#L=s&Nr^Y@9z&lN_zmAjkQjWNeCkzv6Oh@~;@_-Wq12Cv%S4$aqtje#l zhiBanABW9;<;1`8^3C_&dy^CMf|}7X?mNI;D?(`Q3Z@p+mPXYPT{3O*25O*HLkUsJp18? zr%r}d%E)!%)3cfx9RAW;rVw{5bJdejS+J|P{0q=*E$Rp-& z!lrqEcxdY1)Hd!r!Chw*fuW`y*ym8dyzpQ)ot}EIl&%gfwKr514~=B6 zW{3KYISLh_%js%s3)@ZD!^8bWo_Hnluim_P@#R-IDG&WutsYA{36Z6&yWkrFbrPyc z&p-GbSPv%ClVixHSCo9#Fm74H8~5OaHQjU>Yba3cZt6FLMg-00CEDv6VVO3c24Cm8 zaQ355KmF+JsW$k5YBQev^g|a`rCD@STUyItevdi|m|4W=D6P5#ki2p4=g3~2V4|w3 zK3b?vrKHeHwwFIfh57Fjz~qXlVKn7|&6n~pb6!@*>W9uLU|sgSsRC9L%l-X}{Ud!z z(&3Cduoj0l@7(O{xCz#9Yriv6wq*CQzM-pE|KG&bo@46WU+Z$=n5m`AMe0oecWyWefu-0pT`MP+5>mnEO}@LCAtUUj$JJr*__@_VpsXrgba17j|zr~?h971xneYDhYtiZF8RAG1D z$ON4IF*L2}EMs-KaO|Nj0M{;#cscSS^BnK5ymu35c_A?W1Dy_$+G_{nt~+Oc_lH0H z;dgVx>9h?zn_asqFk=Z;nx~fP4FOv#Z~y{R*L0>?BhW&`COOXX{we(1m(M3u-e^xA+$lqFX#!BvQ<1{ndTMQ+%tP7%@36fR0}~Rw zn!JN;;E2be6)o7x|QPbCKT3Z0}e{WN# zH9e&_%f=cD6+d<^<8U|eN(L{pgt`1uyuotv+~v#H6ut4Q6sE>>^wSR;WfD^b2E8M- zsl=TGntJmprZ(?fo?~KF9M3Vbk|MZFGJZeE9WfcESy7dkl6&V z?uwoT)~ZGv`!3cYj(APvU%zwl;w!ISyvUjPS7fKJkar;=k~7A2sw3nTk})HGwHEVC=d%YwgkZ9y27^HW zIK9TJr0rq7*h^WcL`qTl8HjuJxf`eI>J8O^br^Q6YYbnwc6sA6kTA;jr^&)a=yK z%w*a&=I-dI0S^!acNz$|gMmP2V~x3?uGz|WCTN}2Y(V3$H&=&B4dg6``Czrz&YWrr zg*!&<@X<%7{VFjkzw-L+J1MzQw8X$!7$8iouxj&; zauzAcxZ{xtAbG^@VFjTa)Rki-&pWuBScw3+lN%qAJzO#ggb$Z3$&z}WAPN@J5ij8& z2C_YU(|tVx?gO%|L^=w67g<{|txP#_1ewu!^u)0fLw!9%J$+Y>$}EPz+G)hT;{}C{ z(#j*^?_WfVk59t&9=~q7gP~wB5DLZu?pS@Zx!%BAVR4toIy7Si zmUV^0_Uhf~g{}DqOX-7^m9N=sFFgP5{h3L)v+mqKeE81AJJ0VDB9SpS+!a%6vrFp> z>9N)zZ>_C$H8p$7o6~E<>s#Bi3pH>D1VXV`V|7hKLs>(8GY&ig8=NBx-eapDvw~+> zZw9wjS2t9b)s&Z)SzuyK=-j0<8|SW_1Ge2#)zsK_60m;mf}YnalQL}|eyUjk0z6j1 zJXN>s#5Bo!1PGal{r$>eGf19b#7a*3&<8$*G&4~2FusCNAnC($z5LyA#ov6Rj!2Iv z;8Fh$D(Z{JqZ+syaicfhl^g8IPfsro4Q7)B$>K(sd6Vb|!1wnLPQwNqV#f`fQki0T z)t^;khBlhahda7QM}^6h-O8HR7H2K?cUw@)S4zm=zt{?X-M{nt9q{{A*-_NX$4lK) zc~Ft;UK2_W&(F@yu1~gtJ@spw?LS|90ldRIb`F;gvTs_fCXll1ww7$7yJ$WxGejc z_FVw5Z(QEkxK`iLcJkD<%V*Ah%6=-euF zVHH(HnHkON2$0NaaY_g(>o$?NMrIreA#hs6eK-DLD$&h@xcZMiVF_F zJeeKp=~=#;?@6W{V*V(+$dE0`<%z{iPXg=en~r0QSQ3b<62Y8u{58&(t+>_EJv4pn zs80N<%vFc|T^F?SmAsb!_xmtq>&}Zpz(z_qD48MFX_Ij8NDogvn44c;7;A=i{DQ6Z zKDu%oPS3+OH^*PUc=PqwkKbu+*E(kcPhfHeNcy!Uz`bmPY(yZ`cL?V~HdpDoYFZT>36A6bRWX=*; zgdV(`#8P*m7t9RZ?Z%|^FWf1YEVLq8qoHP;1EbSdhV%v=_^ZMu?C-x030D5K0CXdj zK}yK{t0k>_yEGtvVg9SR^_lcRVAjzVx_JNai{NiS`pn3`G8mJrHxDH!Me1uv2p3z zg{q=Ig-JYM!gYjQxAyviZy6Dk=LWh|&aiW|~TAdYS!s ze)ph4R37k?gK0{-;0sC)Sd|dv>^UvS6y;~5M|A&&e zqi~^dY+-9^X(k;M0{lQ90p}F>!1wPQK7QvfpL17>n-^bs_4wfzUu%sOz0cT~Ej=@{ zHV7=Q1@37dfJHD$!+@bQuv zVrE;wJ-H6l`qBafzmmIy!}npAJ{XFDd*b?PFaHMN{(Oh6^ieD}HpN-@rTMAh z;qBq=sf}%bJb-;;15m%QaULLl{`|)IjqOVt=dVoy>;d|a`E%EQS$cD>As^~Ek%x;jrRW*B~xJKD=TBRH&j8&;wdwA!PbSPS*X_2ty~zJYvOc= zhy5m(XaAeOaYtA$zxkV&5$=@@wopkmU|15w%$UL2S#FLs#+vFdLjz_iH+Ob6L6;W1 zY~}UlriPjtq-W~uv8wX=8sJPc!+aTlKBWCj8d&e5=3R`+gwGu<-T0vz((VXHc8)u( zXa)d>(MXA5$O5k}O2`*2g6vMrKY-@gQZfSB%HoUrW*Yn7zA3lEb;>A~afA^1nd6_%BdhsWL zZg+`UYR0iO&Q)Do*E+u}FIn3-1|`kqjWd@l+Jil$cb(r1#*-hN+Cjj@jEwuv-ZSKN z(#lRRi4|nZWlgLnR$0-Tlq#SmHa!SrRc|JEg0$-6TuYeqYc1#_lR&ul<~)Sgj|-)$ zI8|8ZL5t_1ej*-8@&hT^X%TlLi+A-6$-d8vWQ(^TD-3?x+A=WIH`>LA8U4C1wjIa5 zH><l0VDF8L)0#f|2&dkiVFeLC>V>?5C$nJD`3OS6%7ciLdJS z01wqqDJv|P&8wVw7cgQsM=&W6?-l4~HW&FwjjHRNzrUZeu?$AB1;PTuv*Wh`?u&v` zDWY2-XQWdwri%i)oqL+ZbV@n^BQbl=bXNtp_Uzdcv6t=H<7nYOQE><@VAZRg1EYO? zgWdcc>gLaxzJsi=Z^gSiW))9gcRgRJ`-O9}Gq59Ahr&uXciL?Cj~{;pX5ff*Q}6%f zk6cQ^58nUH%dZ34_aLnjEW&$pdTnj8u5o>BYJJkJsdPdmCl9ADoxBEISF|n4!ul^V zpDPpo=<>Aw$Tm*U~q%J~s^SzI7^uX-7cJZKXn4wi__lrdmK+ zw|lVB(gYr&78P=oSVmKo%MRYLTGLJ}l%I_zqEUHfqu{Hqklf*tUr_F{u)LT=NmFd5 zmmfA9l?!kGVlOWTm}n}YN~j?xdb3fC8lQ;fv%FU+UDp_8u9=8Cop2_l(c1B8DU}#p zJpj~Q(?d=UcCc#gT~6?ignLWZKp${VcE)I-@&&vZ}4bsa(w& zd6vAXvAJkers~5pXG?~H&34$_t!$@LK1o=WraMLe03ZNKL_t(t3YJHGgYRCF6C+;U zxD&EQrh*IWr#zTX$Sh#wVM}IwLXhK$Tr{p|Lz&BuPf$2U_9n2zc#cEbD35U}t`oeI zOUJtg?hZytvhPaYQAe%ykm8ln)aQ|K z)%T8eIH172^AlbX_i{IED^{`V#ryZUS(dN}7FqSrKNm`)Ub%VkuuLBrW33tm+V0`G zVeZp4+qy-nu}~@DzR|2OD|*(w0Uj`&zWnKhQntFtGp;sbjw?%g`JT~#XUX>$N4+}U;nNCgr9`dC!=5+-C_~$ ziih^dhtoum?5C;tpk&)&v^_4^x{8RS8HpGmXa*qTyLa!|1I3(Z-hp8s>;fj#Jpj8Y>Bybp2UXa$8=)O(AH2;4J79lQD$Wyuuw%+hvQloUfO|pLx~r==r%|BI zPH}-652KLoTs9=LDkP2(Vt9t><(*KR1-N@WJ|Ap*N0Atjy#n zg0zHNuMkw)LP9GY4DU9Y_cTTmSP#0e7Jy>My?$jQgv1F21WQk7{pKw!Mxm zJy;NnUt8DQdKaL!&f-BxRh!>By@myrFjoEHnN!81iv9+Bm~*~x`;Ol-KOx}mV^m?G z)V&nXF!(Ez;W78iq&v;0$}DDtLPIe;lR!~Ol7T(IatS~?74sJwx_3f|MR@~#7ux+4r4ihHU}H!dk-^?sd7kcKuOWG)vMGRA7L zg{0M4we#1|E6`4OJcOdaf?OTpT~IIZTNAuF=W0s%DIL6|A#Mp#67h6(q#yRjgL#fL zn@jk7oHmaF(eA2~k%J{*3Nt5hxj&~!41_j5Rw9>X?6{#zX zh_a)4RI{2kn6Q=5CY$hC~gAJ3qnckdCM7ulny!94Nj51u{b|v4gRi zy7n=cN@?RpWFK_fV$Hkd;}a0(f~WfCE3Y3veE&ZS)R2@gW}RFbmcb7^RlNeay+u7$ z^Q8^7C9!CR>1!KZr_Pj!$e0An4i8eQzD5{LP&1UDW&rUlDVbTJ3Y#FXOh4ZYl8d}E zNLx!Msf)eB|M+BLYCK001WVF5j2}iRl-(QcAMa0~Q3igLM%S}U(@cc6j@*hfi8$0c zU@@$hCjC~-hS7tEsPJymGj55IW7 zP@e2{^E%u#w%#h|+q|tinamP078ULV_PR-P9=Yj4DIw#J>~org$EtRIt)MZDct=TD zMw*2--piLqqhJg)>1<+Ei2896MUFjuv5}L6y3Cb8@Fg81$ zPmyp#2!3b}x_bCAe0kYRQMA_^@dB$)5wOh+<)jh`$}5bL%&KX}2Bv8~C7Gjf#_ZBC2;skYz+BxT^Xn(I)XEENJQS<2z9(N;VXa|A@ z!f;3&eI^VH`O6;#<$nCd=VLajMx;LgqbRZAVViP8P3d~7fk2Tbe&I%88>Vut#;Fab z&Ri~<|7fjlw3}rGdtdX21ZSwI7zx2~l7*@U67R|I>FRiIzhLtt&>1CR<|Hi-7bZ9P z5BxX*M;eSz7{&Y=0zw|0=pCOx6J_nzH*svQmJwhE5-h#lb$ep}Uj^sIJ=3H#o! za$CEu4dn$$pp|RoTkdWZ2Jn4ZDGj8D;Tc}Kzxnd3@IX~w4I*LZZpZ2tX4h4gKd3ua zxH(uvLx;A{7Y5nuHJTRe`|!-UVp<$G+vT|ec-1$U8>9?$8@+IPs@F(mcu6iR>%d{5 zA2jZMN}eQxqq-$O9I@d`C9vGM6j<~p5*VETq8&{ZW<8=uO!tcSnz%cm)h5R4fwWW3 z!Mj5R5%T1;B;6~j9g=O|z3V8%eR&9duxC%Ty;^48YwdiD=8##HA69F(KLWHv3UIs&coid7l!0C--yzln@{rCHl0Xc$|c9ah`lw63RWYSSOX=f8AG!}MF* z3LdxZQn7iHz_Po-GSiOXE#D-vpep0Q{C=S0S%l*sKgS!OY9dh2CPTst$!jQF&?^9A(v1N7#w6EV{r@Z<=2=?mjP~6J5VdZ%L z{PXuk<^FtyA*6+S{lWu{iK;W(dPkwpruzn~U^W#3z8)rw3Ba2j zI1=xNq%b6u^7QvEO-6s!yF;4Ux2+AbFKG>^1qy6TDe(T6&)*c4dnINKXy9&JdN3U9 zC}4X__e`}ZsH?KlI{j0dEPfU3=k-fhYs*~fp0thM%tVnsP1vs9ORyf++rNp)Gk@7s ziXjzAFh-JPQ!7a^j5#tc%X%TQi&+|N6P!>yOfoN%P~Lo2V>de;6ai_E7xE4#O^O+i z&Gu%_wjCEny+@ ze)DgC1P&{w+;>%gZ!PqHXCA-_@*#ERLbh)4ri9q}Wa;FP+k*9S5*C zsgl52zG3CO->2D8lwC<+UM6wxD(&%za@v>3rF=d~xZ^N>Nw5*Ic_hY+XQlb3Y@X|L zZG;mK6woF|r2bF5!vtT83m{7Xmf{8;{)*4F1F|N=WD>v*UtfVRNdH1rzdU zO9ao3t9nvWai+(S^xDr?L;80TmkGsiX zLLnL`Y9R23bo%Xmzj+U+d9N2El%2MKUa~<2KQ`p^zuklfY>F4M z)hK0&o((s-bv#w;wKcueu{s&)`K*>rtZ}npq`=Sdb4G8UvvY{qN!f@PGRp1|(m3oipyRahTj0Xq|tsARVf@s)oC^s_m=_7UYN^n3O9aZ{ps~+J&-4J@A_xAH{ngV zk7YdsYF?Vkp}y_}14q=zzD?--o`T&8U}v&K|M()opv!=t@p&0#UQBA4k>gHb%-s#BOpUDeCP+SshJ|WLshB2u-eS_?Y3Ac2r70xpI*NM1Msg3#vN;D6+$!C$*I`|Rh*{N z78BkotFEVNj0Lo>LK~O#^ElII&^lFq?aZ}COiTRNmRU5rbeinnstviPaD)@yfA5Pw z|M|~fTt`K#M(`Cln%P`jym~d4n7EqEC38ODpc1S)n+hMf4##Pu@$nfT+F=ts zUkXhtUDATv(>3hZMWrB=b=`9+&M9BjpfO4mQ{aS?6$v!AA##{i&x$ z`H|^7d9kw(4miZnUxO?vL*8TR?tBaY;=E`dC>gvkM>S`v_KQc0Lbt0J} zeA4uG;xMDl5-52>S<+2Y49Smh9qi$4 zJCfzQ>K*lf_5%C&@V#4K*Yi|6J2f7U?f5h-V$e+B{71blqH3v zg9dwsV2u?5?mX{L*{k;-cxvx-_mLwU>Q4&DKlcnW@4KLg2kW2guG$^}z~o2!t3 z=W~N4>>nZG%Uih>5Wgw-hxPu)6GoN)bzqE1YATiZF55E{x0%<%Y7^`~aMlL#um_ zVJ)x|9_}R|?t3b@40q_I+U?IA80g!#@3F@od+xC(p>-EU5Ja+$AY#{O|kD;m_>H;%U!ZoljZAQEtGO|n}dy$!yP&|HZ>W) zmT+%AdFIB(g;QrXE?>TU=1iN(C5oOJXxWQsvg&Zvw}0Je%_K24l}d_*OaNAvNJKp> z@Knjd;WRlp?)?P8g)I3cw!ITIQ?6IBfAMGnPW(e=e>2lNzKqHMom9ck4JXr7V3D4o zh?$Sd09n5Oz&`sk;l6O$8;?EtWY?UT|DXs_4H65ia3sAhhD zJ%`h*FCl0dpLk}Ai{^bIuk=(?LJTG`{@G`rW%4LgPidS6I2f#=qIM`->#&|&Uas<#0aDN2m6g7E^!~>C%vQ>R=0XQ1jRCod>|6go?&1E z1DH9<&5`$s2e7R0Fj*PyG;lw~?KX%y1LxsstbCG~6tawy6%}O9V1>!)u$z%>2eSQu zYjE_9e|-V6j!1v}@n@e!xC=h(b04GM&+)iJMRTAu?tGKU?{VmzH}3pF|9qN9tnOgQ z7VOl@CveXx1$F)8?A$_qdFKvdI_cp+NE_k3!GZ|PHJyli;MAoX8)Jg~Gs85QMlKK7 zYHG4H6h9QkT@R@&LCaU=HUi&b2KIW)!Kv_3f@XlA@#PYP$LC>5lB99mXvElzaLjaj za{>qZ0ri)GVRym{M+9?Z^G8j1Pmg#Z^b$nG$O;Z|4&t6!M&oTLji0T;>xfiD`jQnD zzl6Xa0k{L+j~pHS*CVbY5Ov5pTnKm3z{7Rqjn`h=XW^`SIJ|F{8utPjU-7-i-Pqwq zftd~)s-)hUTUy|QG)8mG=8l;QY~|#f;`lSL{$Lm&90-=i$T~cXb=owW{Kg6jPR4F% zT?y)Kr#5a}N=tjDHiY|YPaDumAq~_3N9d#P|pagnyLlKM7}dMEH2QpYN(l_w%PrMv@@BR&k0vY=pg; z$@Jd!z+)xN{_7P^M>E77NcUfw?T(iE{ZAcvd7MJB;_ccM@!Ji{g-R#-(@yELMz2f_iJFw%Ofk1}=YjC^EVMnEzx!HwQ z-qbd?yKTV^m5QI4l96dxcrc%aU(n$$t=-#U7_!r?l`IfY2WHx~&lm2W#tY|foH^Gf zyTP!pE#zuz0{^M8gk04nbc(^{dRTqPai3T3mQ}u4WR5fLQDM3;qwbMSLs0uCfL(JUKExIMSO>qD~uHbKPO;fYaHsJb*&( zyLKJ4yQ+>fbqx&ygx}@t`m^Ht?Qh=&kpJ4{`nBuVzy9?L@1mgm5ew{m?|MV>UUei* z#Up{cgdCUI5?h#^T}q3k9wDIOKa^ap^`<`etY<#l@sG0R_~_dJ%lJRk>ISg=+vq!x}&QJ zp{O;|3y+a#A45yi%~&|7gC9;n_2zid&LhnYEn}DA_{c;G$5P`X@)l2W+A9oB$8xt2 zgM4bQ%VilHJq--@Yn+Pt?YqBy_uY5@9dHgA|Mjn510NlcMEr9f?*rfQt}<}0!G+F&c4ZZkPs&Yf%pN_wgbYeChQ z0KxFlJiv$g)YQTDn7x72nhicq+%ZQh;{^;;7$(FJ82eXp`LCqb(R?%%8 zn-k7XTj#%$h0)!mb18?H1ov3Y`(9P;?3lVsaM`&V+vf_JC7IfURked~%f5#?_fywb z#jyTGbh{T0K1j%$xO)}RcYm)u>x-FK$>OZaJ_F!=QTVy&IEArs>1H_7220&qhI_%w z&6y;Zm3am--1j*1-S)7Z!~MWBuAzZ&_%v894)TBh_kRZl{^_Tmm9HnCd-mD4;DWrv z50&BgJzUk3WZ@q{+!e&F&&|zT!~N-JCF%j{@Yi$5+C%FuxA1&Y{BAAYu}5*aXCBP1i$t4a z@bJlqEpdlTV^d$vD5_4|-K8RtF)3jN@UGxn+1R~ddrhv4%<1iobYZJ@YeTg~#JzM{ zz(YAqm2>FP^#jP232w5UktB_zeDHxn0%bR4h98wD_4aBgBsP`sM3Q;ZD}R0c5hi%dX zLCXKn#T~^#U3*7=Blv z{m1AxSZ|@fo_&kgF>fLJ{;UjlbkNG<{;`~QCGC$Y@ipnK*`-PG2*}Wph6*OM_0>#= zI>@Ipl1W0A(^w`o?P$QPuQR1FvrWD&FAn~s7 zRNXgt&0}agwQ*zPlm(&ew;Gz8O^ud-#nM<+Q`gLCp}Nq{qw>y^<%>2HP9iaa}A zF=EfpN8fR-1A%adE<->LC_c|_k&dI0XJ9uj9g1Yc@RC&x#)Q&n8*Za|4y1$T!c z7|pPRgP@$w7E^O`rFlAeu(9kQipq?J(cuze{fCh7pZ-`_Z-ZY*&;aOVw7>oK+fSqL zB$PHNQp0Bm?^5FaKZp3bh56a7u`z)9AO7&W-_6&UgSLY9k1=-%Pjz0ET4oFg9ccK* z?!n=;?X~SG7~%;`3P(x?Q)eJ#YYW6I<#o7vk5z?gt=76yC_lu*RJob<=*Q$)DK8QU zZMmG`8@+pO$-*cs>KI0&7z^9mEA17MC5U*O$oAmqL>19ZkBlc#eFxY`Ug;vh{nwA< z(fo3Pq$q~Qo2?aabaYKuz8jTdA2@Jiup6Zf{P1xRcMaKqO_=yqS-FQ7V22n003ZNKL_t)mh<(&?2U>eot+~w>9qMM9B3GTS1lx zyz53H86O>8k#7cNx-d6nbz)T(SLBMYy(}kJ7FW3lrICaOt4790EcYNQ9)XFF%reyX zUg$bVQU(^U`f<_=jJhYn_Mna&yrWuK__114W>;BeryndJQ&Or}b#_y@9l=J=wGY_Q9AJF<8cU)w42g_x8 zz205i%BE)vlV#e0k6PamLuq5?;kBuyt*x!4smX=y;S0v*n9UXpg#tyQ<>hTVnd)u{ zeLUx zszjVeWS5J?tzKDNpXp5)3AACzo-BhAKECXU#%V80!BIKBE>an2P2BBqLe$Jo)9&5& zX$R__bb9p3Cq>#h9rMIbpZJF-{^1|~K}Gx9AG`&AL)?Gy^LHTbZ%ed)ECy(HNedBQ zxmyeOM^?@7+WkQq>kOtR7iQLHw&v%*nwy&f#=dnj-C9(=Yq!hmY<0WG(&>e%wKWd+ zt)-%^WfaEURr-s{!)4gt6?dHD61$pFI<^WqLq_GkEZ_W8N)W~wuP-laXzc_4r{l0* zDVv0|o`fPlg76TqFp9(@>ZoW1v7GM$w%uv2gt&)cXT0#JMGVS3&5L$u*CFj{+>wC? zf4%ebpF=e-XdAe=cqD4T^s&?^TOj^_4DRWe2bvB{a?`PsSI*}1vd zshNebKoILFG^p-Lm`Q1nnV_21F3VHitsX@RK$Lq&ZsnvfJGd`z9H%C--1S4KX=O+nhZQ4! zrr@bmM27Ar0qu}M$8;6I{f*JnVhr->AB(ta825MH{y_NeFaGftD%_t#M^0P|CV8i9 zUECi@-mNnahJ%x{zk4vhpg2DLvZC@!W6YLLPXg?>W~XN7=cnekwiYJG0s(8Y0jsGm zFRw43oS&PUPw(xl34|I$K&y`}3@-u7mzK8IXJ%#=(m}TYn*`#02`KmBoyAeC0ZYlR zF@KAu*5AxmC50>jW_3jS1`gmADO&*dMEGbV7igz=&7K?=^iVPnzakRt$&#GoD_D2o zha(FL#Q|l_19!94yE)wL`wu*J^ym=@cO=}OfKrBAkZ}%mxZeH%EcC%Y{^L6^Oas-; zTOWLYj5}CD%P}7J{gQ%*Y4w$Rgjto3Ebq3hxdj7O-m0Vx$AlOOxu2Syot*+kduCx~GHn~12OrLE*(PUZhPS7tfO6ShSeR@LxNYEj+(EG1b(mph zZ4KTM*x55`DD8rpTutBMP!)ChIwxgB1h1|rcY`8#W+Wpu{9^bq9Z(zr*gaxzq}(`{ z0fT4JoK|0N55w;dUd;%P?^k!AM3CW;f$1S&-OceNwC)3=7A^)UN|`61h(WOb=tlzR z0Co5a;r;=j{bw(|!`XZAskcPjpX8hD@onLS&hQfR%44TTPsq&j*}jHZNrFSxckOzf z!yU#~Y_0Cj&W<|FSYL0p1%bI=0$OEhb{@h%4+YQE)DpDjX`4+LsuZxFu@c$sN+Z1LIy7e(0$KO7YHW2po}VVr4>kn@2iqqBoPckUZlT?uKCfUI@E%JtBJZ z9*oJ2Wct0BKY6QPXtu#bqo{;iP%t!w7vgTRJNG#ImhIik`Aj}*4-bW5iwz-9hKoP) ztiy#s=l*=~&If3{^Ulxz`DgDy+}}a0^Sr;sm9##`shI=&4+zYQCLY-LN*V8u8tml@ zU#$yqm#KARi@vPnS%3aTfV-iA8$H|_RPj|~z(Rra0ziKL53_TVLBO(7ssz9$0krcu zVg_65P64e6l^U$n{GA-8$_03Vb*JU$NsFtrDjqN1m{|3Q$5f&w@)4{@){-6Vp2d7J z1Dn8)5ZUn&+{l&g;VdU*#JhJ=el_j}ufvH~RF-A){r!uJ{h6Mj?#G^d{C`2?&Icg* zkc^1?kKU0MPy0JR`xV0d9fbP_Tx=5IF0>p&U4tR@3Ppo}NBxE$Me81#|4KUlAD*qp z4pl(dpNH#3uqx_8t!~uOz}BGW6yDe1yb)S>pQtB#TaD~2G+A*R4 zcUE4F>ba-NZj_3dMtX6edpJn>Rx(B=mtYH>fsxhQpZ)c(pWVKVQYBFghbBBE?Iq>O z@??Q>uXT9gWSZU8{r!IeYcW4`L`WV$xc?O44tW0&#Qi5fc}KB0+<*R$|NPJY`15y= zaYwKV#vS#f5xNE+fKeLNa3{q3BkHTB=VXcM*w|cWB~WQ1>xU1&c+ef{uwsUgEv7?z z$M76nlLa}rdu=gmeZXDb{I#EysjY-@w_3vAG3{7Ek{In%Xz2b;RgSQ5*o32MR@}#W zS&Ey~fwM$3rPY`$32BGCU*#?ZM$AvEGmni9KWvMN!-LoeOVA`+>vU99#1rwZu7S*- z(8>()0r#hQDf5Kjq(alKp#491IrGj-|NN_ee(C2D{}A`LIo$akOpkFLRiD|96pa%1 z%107+>%vz{<+!Kdu;wedUAL;tr2vG5~)2L!~VZH z+J7#>{u0OgOF#S7zy0bZi2F+d?r*`6M-{X%zF18)xhusMN>MlO~F3S}AzT&NV zVy$xzc%#hurogH%Y>BKNzjN{8#hZuu)~Grez+-b$+LpMTZ#dKG{`!SRmXKbAu^Lr; zxI$&${cD9Q1Mg%(U^20(k~_Tp-yGqjPn7Qoi5iBn9*rXc|AZiBCTP~<^`sKfRNM!) z6-i?ZiLne#c`+#Cp^^~~m?HcXCfHeK8S$REJ0Q?5+V&@qi~5saAlx~wU;2-C5bR(9 z1#T^Hs0*b>kB>j?H& zj=#v`9&l^ZzNI~5Ol+^z>3)dDy`C>#b@~4eua+`Nj3}Hfyct!WLcv0957&Z#5xTik zvQsAYO0C{Tv}Yj95tssrtHYmO<>R(ETExKxyLavCzMIMPXL^Tz%i;dxr+GJ(^HHIc z`Nc1QZ3kS#B^Y=3@2~#tpZ*2W{?Z2u+=c3G)RT$l9Y$xK+OG^oLi_$GMc&KTzZyQs zhu0;!e*bS5j~^Fde?^A7mMEE=8`g}v7(3lU6V=AAFJ_u_jl0;KpyBWE0x5=Pdo>PO zGmGjS00qwoIyJ()Vt;EA7NTm*zrom%-rh|Zh}=w}hztYU8>qwmiZCQjIU-hWbOArP zU?6|DcY5#*-cjYeR6)rgDf5e8{QT#f6@P~(9>NZd`>+1b{{f%-m;d~_^UU0 z*o)(CSeVmE322mtx_*7@Uf;G?PhW`52`qnyS4i%w!YucKm0MAN((hsE{v75v(h*ij zY(#15WI;YLo?0AVPI{xgtE;eO9_itaut?=VY@=d8A4Qld#HnN4G|8^+F3WF)unbT8 zkNEYI|NRTFc+>upXyF0w|ME}&-@pBz|NDRc<)xp!gm6dRE3)pemiuXl`ws;@^BA!2 zj~#%xOT1Tdxde|)-h0RJR!}%flKG~`U;X@#uLIa`z6@D^`DGDzW2_*oZXSNHP_L(C zL{i$nwsp6(=^aKHMBH6}hnL7J>qbCnCX8(^7Mw(}sYL=%=^^06j{l#%w~wvrJk!1R z2Ww+5@13mYV@J4Wun7SN+u(y^(SYlKGmO(1YD|IJC@7KRN(^(9D5N@- z+A7KjaYEi6iK3%+Q2LUpar_U8sw#>!8coF?ofo2)p#ol#j*>~Egh@_2dGGsvzL&Sb zfQ@a=T7{H=ZHW2p%hz)~_Xk<`b)gNLAAb1zPi)w0omUC>IwtRAXtWsx%LI4lM?Y&TG9yRwFyDRV!w-K?us@B@ zv(J3@+eM7DPPc0r|3_R}Rxp~>7IypWJ3Xq#AD?|@%wI`$zYpeJJF9Le+}rem>t@v# zdd&ZW|Go*-e8W25V~=2$#-pqt?3+(Ky6KTeQReAlb@NaDMO>YOxHSuaqR*RgrtOs2xDs2L{}<@7}!=Xb0YRZ#g)2u>ah-=XS3Vxc?aM zSsCvFcgcHYd&b0l#j?VE<;tx;`kBf4w~6)de)l`S|Ln7;CG5`v?p)pDoi528`o+&@ z*(A1otA2XT-l>_%ch5f2C~-f%yIP(ddUSKam)E*q{gY;7uPyFCbeZbN;<>X)XevfENm~fmD`!j6*#s;4llP5MxmR05IP~D}r zH!9l>u)A>IiM%85J9ix&>pw^0z7t`mZ-2{iui#_$O4V@{4LqDztID+Fs;C22$S+aW zONw6o#gB9g!&(2%cfRw??|=W{XHRq1AA0DaXQi1*x0!dNZL`JgzUHll^&Y=NGt)7v zbH_@W`zY>Msm_0!O|xw`_@}ox={WQSw|9K=CvR#krfR*x23hS6rv3lM=G67#Lt=Bb z`Qf$W>U!})fJ5p!*^bQ*s<@~l!@Z0aL2@hO_U*_vz>duCI5>v5Kev1579P|9@Dle5 zHiikro$=mr(aA|MiQ`*|dGw^gMT{?%Bs@i)B_P9{;OU76)J_R^OM;)+TP)*KeF{Guh_1 zUZ4_zjT_OZfHmLr%4_R47I1GHWJJI5zyFWF`@V0}!{ltp*gUbx{o-Bs4Nw%5$^cx*fw^tZ`%)lxM$}U>1BS* z%7dAEuWzg;eJ?F%%WeqwOeR;AGtOcPTPxZ4YXZ>k_{nWE)VLtrup@$Uie_bp@I;7uE{d#-B z-yk&9;=XmdLv_#27RzKG&&Tfbr_0Yw#w_R5&^I@2-t_%HyuLwOtFZwGp{{>o#=t!` zQVBf!zx>?`Dv|Vq1^V9izO{Mth8guVY!Z_gr?mMS{0o2xWw^K_?yL~9T1DM547(l+~p(Wy`lmq({TR|9~yYC?Bcj{-c=d!l0K_G`Q%GK{nuaq zb_VOuJbemae}k#|M+$ea?oY0qfqUp5{`~9YY?;gq<9%mG)p$=~aZmL;Zm+)IpDs4b zYyHd-9FO_eZN`m~;ML86Vvo|uq#4yUzHed)!NUOi>#mQrc{88&xcQrYV;RE3n|z_w zt2dy932pku2A^~?Y+Eqmo-50>XDX$Ysn=;=yB2Y80&z#)8SOi_5bs-d9sT%XKd`@L z+b)!Q6Zaaxy+YBB0^ikD$=rLcj#m??I>8KcU@I=uqen-*)TX!X%Nb+Qs!pdTaw6 zO2LL~Snm({UVBCVRrE4!(u~WTY<}#uSAO-%3ohCBv(0-UhWsOsZ2G2O+4s$xzwt1( zbw9R&Z#0m&BW$Scb?upqcAeVDtV|8Vy_IkW+NH8@*~0$Of9~QL;C<(|{w+HTse5fL zse7rxI~`V;yz6C=#Y=gL-f#aC?@S5y?+9Ig`i)a4?8?Br_}Pmyt-C6S9Q@I2aeJt< zrGTNgx8K1ZaCJd(kN;Iqc=aNDxbchCv5rp{n{l>% zuCu zBa#`t>U{}jGrz!s7){nOZ$#K1(w{dz{7C#zrtYdBa`=}&pJj4JXsFP>vS9O_v@#W% zwy`?<_+O~GHMJEqRZ{WZRoPVlchdLbrHuQB+`@2O=gR(&>yhRiQ+Mf8SioZa<7~9A z-d;%CeI1?7orwF)IeD?3#}kVo?Ql$FyY&$F^_$rC_f6~leix$O|AV?QdhJ*1#J!Z3 z&TM?;Uw$xiZHNDnM+?TAAvgj*@(4}_2G-%bymBJiSC$mBgKDmtbK<39MKU$o4k?LCEeQ6}5&0C#7`v<;BwlwsJRkc0*lRyQWq)|XjMvh`>u>#H+sM^@lMcJ)+&S)4KA=_oa@@JL z?_iIjeNR6Z_lwW%0p7v5voIcMN8B44YH&PFqwd}*dq+D%eID4tSEQX)mv9!TvHs9( zus`(BDUQ3UAP~6!>_@ZEzPfX^J;TYixqEk~%@x1cize+DuL#SyGGlhEE@gF>m0!=k@#2fK(f-gwA4=Sx z{NFn6KmGOiEFZXY>uef+CuXLnC*;aCn>!ZoleJlj`)$6yye{TNzWIv2mF$tt-~YR} zX#2Z+Z6z3)4Yy5&9$`n-4La?j?iVMZwpa2wN^CwJuY(j-kcPPL*oC<7B5`N5|K$vb z`yQ6m5bwK%x>GV!(a7apUaf+YspLtd*5t9oaetau!@TigLDTNSUAOL`o?+ile>sb9 z_Z2>+-l>^!T8uYco$qlL^OLnsdiUF%Y5730^}jL(i@o-%w_bUHsrm-v6|-UEqwD98 zf+FwV*ksUNTwFxFmvM0?+|3$ytdnth8DgD1+xkA9L@PsHW)BZ*1n%&zYa43#Syj0i zrtV!-HiOqpDDW#pFtenG0Y5tz*dG#Q1iE$i4Q>C~&u1xt^o_U7Zdm57?xCJe1EOrc zV{t!QT;3nOZN2_aSlRpc-`c2-ny-Vhzb+ux`?4R~{KRJeoIW4x9#N-b>D(z6L2>8z zsinLQQWX8RvSX?t?eanAK7zO(>f6I{-?>G@y>)Gk!o5*tGgKCd$qe;0s}>7v*NjaPOOOQq0ENEAhHt zJ;A(;c+*WUyzs$PpT7A+zoYaZQ!^!HtOLF;oilI!~l0G?o8j8th&z$c5$z&RS@7nntz*ZE_?cx zGx6rG?wy)*e=OW%Kep(fuE*AG*t~fTzQgweTDByPteal=ySHBX-g-<|LOkS=erUs^ zb1^dRN77!*t$RDWVUo?*yn#t1kQ(m0blm&LMn*=*Cf+@CPT{V3_tv!yjCZc?GK&^ZA@T6@EE=Pi0X?l19kdaKue18?{} zHq?FH>%aQdPuQ0Pv64^X?%%v|^WCiXUTJz6!kvtJwK%8pKI~T4F?E-s9iP65smXKa zemFLI?z#RwTXfzf?hTr}bMMZo2$;BM>Z)WCx#V$w@zg_edg!dGS@*X8_48L}DbWgU zAHU^qIahTLb;?q*)%N2(Y2R{sHvi`J*EhaN#bTR(@S8WE2+2b!x%3dne*GL0nOkZ* z!=3I^IqtYYl6No-7`LfzZN~@1eQNaFx#yni>+2_R-y_XC^?$4t>dvFc>Ux1Y#_mWw zRYa=U8zoD7%KO}4f9Q>mK6`^wcmCh->c9Q6JJm4@?YCZ0HfP+GxFH?rqxm@H*eU;9kOdI?7moDn{U5n#a)Fz`^%nG<}CZ z)$jX%B{YmmlAS0a>rmntMUm{iI%My0G7e5iLN>{EsO%jM4(A+u6WJUuJ7k>KG2+mn ze&_x9J-+|Iea?Mf*Xx?k=XL#?3-X5n1NYwB#mL{g?R}|v2d6HC}Eciz| z`&SQiLg9iu^SmB#5pnvhl%51*FFor}g8X7pXdg=vYCYW`?Idyj+gT6c%61>MMUaUc z8*3ks*(L)%ztQ$#1969>e@i;lG=+-LQ91>gs|N4+gtU_^5>|9inU$*h5M*?1u$$$5 zgDH>Yc$z(q;#`%Exo?tBkqe#2N!26Cg4)@SeHUugN+=)-I;Fd<_;^oDER&;bM)zEB zMYP~Vsc?{}S@joCBuxZ-HJ`gWiC=LH`FpkdZnzh-Zv#;8?h}t$H#5S`9s0L6Z0E@Q zdyD=@Y550MWK6!<&r5K7vm8au20UIO#L)&O^qic=##8e{%DsWU+7(~c?wGON{RAt* zhy0fR09{n{`$}q5xJDLbAkR6?H8#-@>sSf+(%!i(Oxj45VcmET`^w)LPTUb$&8<$& zkxyz2@4ItYqaX;_qD?O=POK6XNBN@RXW~0MJ15HD#>$3`_Q9qNr#Bf?m1V{tu1`M??Jg zGmD$7#)}mM3VheYTY&!YYak;{K4>n?@2oT(@~tH|hO*H&!cT>u*CCBEhe9z`tZEbH zdeR1>l}4e5hfQ*mnH8lMco+bkpu>?6itWH~2wzP5;GXE$AdjK2i+k1VmLSE28d_3y|Q4 zEq~Wo!h&fi-r?O)> z8c<6WWO69X0T}kQ55N><;0}ntOB%RAma#lx@cQS7zgIr{xjql+q1|1~n9fM1u8wox1y9Xx`iK1qcn}6vjhs%)+WZv)Zki`}Dl|%gF0UEx{au^c| zTv>4uDG?Cz+tTLwgGaG3P_v9ZBcG0^LwMCg@y0l0iz?;U_-fKf6u)g=UZyWSfN)Pv zD>da)eI`{`v&?;fip8d%eQ9q_o}XV0qi_~!qXKuY-%xL+lCpS%elJDt#3|$kb$k7* zi=g=NC#(NiJ4(NTU_ai1Kr z&2`AysxUM6@Yntvz9~|!d?<%#3{b}-BvD?>RI8b2rlc%qzeq`Be0TVu#_v_u6$CBi z{_;@te8aYBtv7*w=XaTpnw1M31i2Ol`Xszgi+$W3Zx*)PIW!BsqCfmfT_=Deil6_x@+ za{O<9=9_+H9bu$>4**x<}`7rf|sq0R`?vLZxM_KBrxM#kUZ z&)j$hoKy+)4eAWsvo&ev=76CFAmVH$ufBH5d zRersevElJ_)tI00#1LFuYu`2N$}60Y93yVTPw;djy0JjQchv#I)GC{0v51I`ZWwF- zx1+0W3~c1FTcFxEn?kF8Xf0&0(H0Umqc9J7aBG*fCaokp;pwW1%u9^8yYD{=DY)ml ze{iFKz2$x45k(MIZSDA>-vUfL{GqEcFj;{rA-apssW|IQl7!QiGN6+YDP`C7P1#LG z#90tL_59#t%Fop@einXHUOM^-MRiKO0@m*$u%TTSrCrMSnogoB;wJ_>j&DG0to(If zJcUXHOraPd|IiO#hbgSgZA|Q@)7^&dXlk|AoIyaIWTNJo&!5xkaK&xN1*FHKYESx^b=>xD?2p`FS&oXxf9PS z)hL&Su-fYzY-rJPbphg45f5(~{QVo|nKe1*JWCi25=2+ULl2LRB#bYd0cREbNO!!~ zWi*LzwoLIe<4a#r&Pb&`ImNs@$4X1?46cmq^hdX|p=7Be9;(uNFT{ywPM$r)z|QMX%dL5S&+ZyJN87f2~>AZH};9uua|E6U`1@ zZUP-e z6$bt)q!sc++x7@R&G5d1PJu-hP)yE8SlLwkf9h4Eehfc%s{#3XUWb>-wK326=A93 z>oqj4ceGoWza)Ic+Z|$>nftVxQb9X!N?6+Zkf1?m@blnRZ9ePeul!{;{Fm_nh91N} z1sM>=ifoMWyz{eU zE?KffcRF4fge_8|0hk0oph-sExsS3KC|DhVOHYmv%w(n zD~W$`Qt)n(*h@JD-(&goOucx@MY;05W|N(ayvTRVWVAh9HlQ~r?gBk5n*3nHJ~PU9 zS5Oj2@_WpklT>RWrioI7hGTMXdauL>%>cvF52|~)z1f=|a5|gBFhJhC%;ECGYYq;& z)BfFHpTx&OGE@16F$?Qq!c~+M!cZ4JA_iN^Fk9Fbyv!AN*w-iJI24=R?6a}GQCn1` zx;WkMWrFsc?eZ{Mf);{Yh;hVZGE9pwL^o*n`gNPYIv!)U+Q0f0q}EB2vsWH#*QyxW|nDu>Vl8k1$!N14hKV!7myE2A5= zT!{SB&L~M4a3_e-vSjoFyD@LK11#+l5Mc7KifIMSY3#5%`tQ@J4%)e@zb{79Lkb&af$6kWn({|cFKMYT4q>M^j+$wji4kY45RX- z%DJ9l$d5KHm2KUjzp*R`)}k@YPw*U#4hOnJU_?6){R@;_s_&=7gB*%5tGFB|gnl|{o;58RVI zpG)a2OJx`E?NZ(#HKma&%z5<1Ny+Eej|~kIF&uKK-MKS}T4t!0G&?h>+UyC%xX&`F zLJx^rG(=XnA?~CQ&`0j!nEavmOFQjH{Hyd5ff0` z#EGsFW?i-%=m#vmd%Gy*o#uN%9%HYN$4r&qVq#+MJ`AJt4$S8surD+dN#+vgr~C2( z*y=Cs|E)lGr)wbbQ2A<{$DC-bJ|0=Qr#Qc?71!tpXu++F;1zCf{xXn z-|aJ09z8o(@$cO(NlWPtOI~{BLvMnGSshe7qWnh}itWnyDjKEv0ZH2H{66E@)Wmzo_h4a&rmYX$D26Jd$s^;|1Tu!6DjMI6z z(rvNK^IJjBp(0GKE}1!NVRIt>X{C>fYuZ|TWfeJU@>_3&*&oh4ptURjOKymwTl3pJ{Tn!P zXtMPx#MSf*bW6`DNK<+CA{oMn$YyMOX)PEkK6>8L_)6!jgW>x)Pt-t{OV-p7oV3Y= zsg2lc@t79! z>i04e&zDVaIN-eOZ9icX?RoX2>#LAYjr%i+{Y_Oi?waguM5)5aikCULc6>YX5nSTw za(-x_azJi+lzT4`ueRP?lb=4E>g>o;`2?6~wK7xu789QMl%igKn1ZGO zfsst18N6)*`VSBIh`+(7(8&Smo0zgfg%aY4YMq^#H1YeY(A`B@uy!u`@Hepbr?|E& zYb==5jepP9G(}yYYi<(x1lxKluq5WB^zScas`+GZ^B_w`tVM(G`xhw&go_m|A>g=` zsg(Eey2nq*0o4iUFIGaxA3xI5BH(?||1P%G54C$HH)}1$PAoIdU>xT+lvBb%_Q^>; zSH6IyDyPlF5(W;kIvwT9{$naXzquKH(EYtEZFo#)7kSrhf{xIzJ7oM7#i|nRTS{>8 zR}|85FBZz2K{pI4O+3?4jAA|CHe@E#1N=EBv}$xZq;{!q{padyUw>19_4!_o8vD9f zoDOkiIevo3pM6N4r-8TloeprOEhr_Z{{6uoT+vU58yh-uUyi@n3A+y%G-{Tt0cB`+ zWVb|t{l6KyQ1SK`898RIXPU5{yWp34kE%_CrT+6Zdx(6h5cMK%&2`3#KZ-2aONdjC zfvS+>)dTWEPi(};=dGxb_%dS(^VejvF#-SeAmn|YG)&t5pR-gC82wVAl)1eKd;YIT zgy%?uw11gy5Y|LkirF}V?E7jhXNfb6I(Z~CGjx)D+2bbSJ$EO!9{uvdm{;!6(Mp1# zYR{jB>Nd{l@wNb7)7e{H_^%`P()+$yzp(GlbZeu~>nfJjRx1nMw zm%LBTgeNkdC{Ebh1L(_edO-X#K`_d%zO*FQ!D9#hqGBzslwk8VO>;UC#ezxutegHX^td~N)qS^NW>~$XYpvs`y{R2*2)}Veb{fd-_?>rO1&N|W~ z!298v+H6eB%sV$@(GD5O-IuDJ5bR5|H{6jBe7ZIzBOVmD984r2A5*@l6zS+_#pl?P zOWf8XKI2P#&9#76=mGePVq(o6qR~wPQ`@uANOYDml!(!+59kiEggnRT({?8M>51mS zBp*awo-nHztSeiztprZacb*asTuHe~3Fxtk&0o`|x$Ur@kcw*vo`GMO7-jO;j1K!Z z%xA#9Mzoa$?cs$;0s(h6VE-MI^BDWJ9A*!$xn#2Q350piZ!y2NLy+ik;3c+mvL^{qy0cxw|dzWxI*^ zuOr$Mq#A3oAA01Oh^GadaU$hpJw*(8NrhQXklrj>YOXvi4*pyjzf_s(dx0?Z9In*X z8T2&Apsn2M9PfTtQEo`^YWo3aI@VS?OkJSrpRXBt@~oM-f!>$E8c84VqCE+B1ub#; zJ0iTd=CKV!6`61V)z)c&Gi%wmb{G#APP_{tt0pP$g_V}Rzkdr%t9M*I5)_f;b$32>5WUA8Fyfc-b)xeI*E7uT84A-l(dxo-|8*m8pdS4Vxlq~1bJ zGh)~R#90Cmcsb4dL{^BmRhOsX>@zWg!oq=K&Ix-R3b#=yqQ2z3AehoW$P0e0;GY_D z;~fQ^XRWYn3jDR%VR85Te-E>%TQ zUjK9Ju^@nU#kTqf?o}SHyYVIaC7`rMiFQ@E9cF(pC`P_0$EOQ2*#GA5vB|&Pz9K6C zr;KI+%L&}Cl>Bwe?MA&!Rw4I&#Kltvdai?a?mWYH;h7mggdAs~*27nxi&wpD8uUU$K{fc)=SmXPnbNIIN)MK!OX6S5)rl2;q^BnjL0ec> z??84RdOn_)9}&|>5W3z^q9&9}eRqI??W@a*=Ffppzt+<&9dQ`uM6ri^{mX4?snim~ zK0#;`9Q;Q6z=cUT$KaTb#!ResuMJ~E2xc3(WCa_WTc$ccUU0OL3U+va03X!IF`y_p z3LbDJflh8JBBtffNphBn7|efImt36}q(-?(Dvfv?jpQe7ncgAOIYPjT=b8Jt$6zTS z-G+lRAd-?HNQgQ1<1kk+?s*Yn^h>M)O6|wYlU4G#Eutxc&!LNdyNXQ2Uan$zIb@{* zey(`i+Nv$_%_E`!yb;Rq`;4{Qa>Qi5ODAL?%g=G^5bIy1ix@uoHc>NY>zl(=DxBH} zhgYT5B`&{U9V&U}w`9-6Ud_;P%F=o|I^lYad@&R&EoJ^7zZGwZwlmS6%JBj@K<4wr z4J;=k%XV{2#qPY62>x)bLu0)!@h#VDSXGt8 zE6kR=W*4*SaqA|C#R+WMAy<&NpA>@&K{>x<{{-T za?0>NKaRmHLkefPmMvfKVqwTn;~EG_u@;ET;~~2{hT#Suy79nDdsR zp15avx2JI6TM+m4rdr8j(?8hArTAs-Mg~rD3^(%nfES>Ie30v1NX$oE#&z7>y%AdLe#_`CaB5*$(nN-f}9EOqL|2i7QPT$~|z%u7~xo=#WWZohMm`vw^t7=Ks_=PVyW5mTf)gUlR22kSwUd+%jA71W%&sJp_f zsEao=1SU^U*&+vjEgdju6C(s}w*J#~Of&c}T5?*?10Zrz~Z_UFI@1>Y{| zOUv_-#t~j@6V|R4U9qluT-{S+-})CI`^vrnm0J>E@~C$uz(^~48(-o5h}Ehhe_jgQ z_tRxX-f3%e6drg$)hdf;V*FlgUntIN_LWwAK+7L4FB#@iySW4&dEp6^1;S68mFB`U z>zJ@2TMf4}VuJa;hDaV8CVy@E6^EwWY+I|_f+Cj{QT8DGHF#(9bLP^DJ^I|a_MkLs znxF|}G===_W6S*zwiyslx#wH*8ZcU`#Kmgz%>=pJ$rUp&?#f1bj_fHE)fX3H?Pj^0 z5{e=l5DjRbBIPFuziE4dXam@I22mVZvlcrf<;_)j=_#I}9EJX1i}e`}5!f zRu?OJWgB)u0W7ON2Y)+VW7(-@UL+27p-|PzsH7T3>~{ z1cbun1CJ!kGHit-+)}uyUikr5j}>E3r#bUF!Tt@wa{S8-fA1^cT-E%TEa)pV#|y+1 zr1h;z1IH;YjJbtq0~UlCg(B8-O6Py5)BN}MSe8lU%SIpAkD*SO9Z3I-sl{>FBWg72gfhd$xJU5r2CFt@V!&pePLAAhi3}@!`%2Y{UOe2*vq%n+ zC+Eg4BN<0FEiue$?opV&+8`JD+gflVJT4|2T9wvUx6&GCR8~3>%+WD$3l#LF8rG`0 zqd!|&GHvxCfg9};TT_*m&4cUA5^$wngXc?tnV8h)*BRaV;n0N(;%NyP#tw~3JS3p0 zt{}XK^krhVZI>_DVv{l8#U-+cp2MQ*c^65V5#dFJo`1SFLFsfO28@Rsns^2z9 z&$joPUx9g7g=T=S(2!46YoUT31sj25sPZwv$#dhvp!l64iP(Y46J_N{OC-HW;HS@cTGr(G}29Q zQK7Nw5%6N0gq2ce%4CubIj1}U%;7vTP25Ux>lz}b(U$hCQc(@GkZ?(^_+e?kmE~;rhaO#qXfym`K zlZtC>rQ=`BjRll@?Uk-Wq+`ExSVnG)s`JJ44eIh5sFq6$RV*6F-BohY;V6 z-;dpU4|BQ@pnRIpSCPU)2JycYMUzYqFQmjVTjVwP72mqnb$ab{@Y$B!JJamM29HuKvEU3{iGDA%C*%d>hC}y`{ zML~8SM=Dpe!&_YaNFHCkg-sBd^?LZ|m3Yn?BYV@RNG$pO8DdwgpM3G?`Ew89c{yu; zn<}vP{CMr>xFfZ5pE1*nYA;+x02&Wv`}EnnDUuVl4GuE<5IewCIab=An9W%&4%L~n)(ze1nn+s>XwJ@%Xdo| z%bd!87_e_nd#_k7n;}SM7q%=_5t?r(=@{E5Sw47AnDE!&)F`MF4A&t9{Yi2-~bb*}Wnt23R$3Qlg z6eG#Xa(`UXrbax_(V;koMa9BS*r*sTmJckLXm8X2E}OEGNd3sQ;Q?J=QzLG1UvWXe zHJ~llRJ^gP0%T#~Hz0itKRY^n$(1}jQURhNeJ+2<4S%EN$yJ2@wy z05$C6s8uT4+;L`5^I5pGlq-zZ<{Fh&@Og9R^nQ?%LKphm$kWnggTM$`A?WnbvwhNYVzac&YzX9*pT$|Isx}v1`8GKLf zIxE?X2J4Ov89bk_HfdAt)t9uO!w(J`c6ZDn*N#7%x0BL0pQgD8v0gFU=~jRjl}3E| z*u(-xUO5;$Vl1OCy!0bDT@8FWTYxcruy#@MHOJKI<{FQB}I8p7}01y3@r{E#${#Lu&WrW0|Tp1 zj5>mPw2f5WV#0jY#Jz7s<$kr@9RKnIms?v`v3A5 z2fH9?U+x->%(UI5W?mI^pxc+ti`H{GG@!xr)9W9gHDdWNX-W6lZWOf{Pt#o!uV4MN z4qu7a_O%@_@3l$rBV|~@#f3j2!;V`SgRZ;KEbsvDRb&7RZ~ND?N8Qf3x zz+XdmVFB?|d#v0`Ox15Ms_eA+!ZB03p`5kLL!7lUszwo%@r|)p3u=W!IfYwyJZ2w= zcx!s}&bxnN9={}5TWWYC(ixMM9>hJrkU}2342}*Mo(0+Cu`e5ndO$jAe2qz1+`Zm{ zD%iU7g}9mig0rTezN{CYDsI!h7ix48T{8HReqjqH88CdV80)703|{rg9VzeYxyVWG zTxJp?+4|_Ct}Vy=Lh{7i*)UQB#6HhmzYaqk1x=fJ%|Zo}BGAC>m*sLwBXStGG9>6> zs3+D@#y2t`z5FD_0ALjT~~v?ZvXmg2cdj2+p5C;je#BO0DIXrd#6YFT;b*hd4U;6 zz4BC$j$dvjhb+y)BGrRg8IFpnWVjr@ zdR|&veJ#N-1>uAJKFMUJJK!yivrv4+)xS-aw)D(by-H8^qwKVakLIU9Inq=`TA=YTx}SRA?t~*Hm%e-#53erCW;PJdpskkc6aElH!tTifN`N&tA|@9np7WnOAwc_@u2xs`KPkY69cANg~$+556m+2H}|CW`9`yycOv-}(2aUw<4b z3W2jXiO?iJBayuFL1D@3H40N6p9aos<8!>pIkfGlrbCIejZI;3Hq8F_otuNNAY-K~ z&FhW9RD-bB`}1e#&l#cM#_=h{@6Y3hFf0bXAf#b$*OB8iW2>N<-mfc~@3Osfo9Y;D zi5m>EQH#b;fM;z~`&a{BBXe_+|Nd=GPUcrr6%X5w(PBV!ve5|fYSM3xQ6HT;zeb1DL`c9;D3HQ z<>sFj|CWqB6qQe5znN%U_%$aovFycwNOg&dEJAS@-!MhBlsCEuKJBod_vsohNcDRz zrLx*02X-PCqWF`kpdZzuA?@40GV47JA`M?dZikhxt^_}sU26EO{2UD-zBW<2+JSFq znA(TT*S^B+*DEMm(GBoPM*bYaN0eb7m7ODDuOP0INBWXk9G?I>x3+>#gHEqe89SHI zV_vQueZ>{FK!0zY?fp+12N6^?Y5y^F`NDH5=y-;pXWb2+Lo5cd^_=$p>P$-JzenXN zDJh&Ii&~(sAsVf#^njx1!}0zX8JK;%?YzJplG!65<|%_vMAH_=RW|=onav{_963Sj zEk=j>B0+!bLacIIgE*0X&S@oYuF5au5bn_pTp(-_R%yp#d*}Z18A)Uty(hZH&%7&F zQ-m)&2-}G#ccOlB&momQP^ObcSoqTfqkK?Q=^kmaXMgT=5`?d7tAg)}F5l%ivbgK` z`7lsMbH28f-snAdObE8W?%?C=S3J2_geJHLZZ{mnX~)L#$hLLjt>oK#x2Kg^TeRH3 z*0&D>9;fv0G+D*oDl`4r{0^t-86`-ZuT7lf9a{v;lD546n_)Xt%Yhk&x$6rM>8+Ey?tUNBBGPB`p(&$xbtba}Ms*1gwD z;3;>&u=3(ikB}swaS>rX$4WH+&4lsf#6BX($VDvAFZ=^|{-^7%Z!rd91_evh!bvyQV;;f9iS_@z*!Y)vfM~Q|4UxeYEx9db#Hdtpg&^isHF#yq z$R%FCs^Q55@&+B*#(J*g-Dho|l0CljnYiIcWjqUTf4A+$kvw`qF&z&U3@Km3@S5Kx zJ11VoZ=lDN2rFi6Tmm-R*TjaTIwGp=uX`Ghk3ERNVnq?Od(xpB_AB>w?^evmtw4ME|URMH25t-Z+D>qzrTmSv#tgbYnxYso%FB zy#`}q21 z?1{nI_J%ecbOB~w`9OxQpq?8%@-E*R>Y30?A5N;N(Ib^ewLH`xT;>C`^?mZMq*|ot zLmNKOs7A;FD0wZDw<5Ob@ECY9!%WSsc29b+exMUURL>DpRlsR#ZTF+0tdHg;AkxK{ z91UpvJ~U)TkTM(zut~i30H4`$RVC;a(nF~GIiJ9-5O_3gP1OLOT!BZ9qu@J~cFCK7 z(&xZ&kW2SO`_DNEsu*;Jj&m_(*GBpV)#?4rk&HtoC1H>lb#0myr*bUDzO;(10$C$#;UMLu zs}RWGr4;ygP%_}5eN%iTK9rMPPq2fjgg|SMCJmw0XV)R%9iN0zNi`)%6Co+78mdRG zymT=$p4VYHc=u#v<=t*ZFkSz#Pu=*;9YY?f8oaV2&iy5 z4r|F%2rF&!V(UYWRd?J2dzf<@{oMkaQVj9Fk8M%2H>(p=hjeWm3d_m{e)!?7hglG$ zMsZ9s29YxSGpI0YX*rmyE6BW7g2w!?c%?FuN+ysJ_^(;!_X5UONUdDtlL0kfM@-sq zA|j0JtO7hUi@iX&L#%tSQ^|_f`1nA)q!%{oVai_BKZgW)L0>uWSFIVS&AIGLQDmey zx(hnS^YAWWyq96Bg_9|dqf4zMAiloR&(uj9JI31q!|z75+hRQ&`U{#gfViLBp}F1q z?0g`^=Tk!Yg|dp`;);8Zk+R2rmKRF27{^Ek3iDI}b>iP2NJ@$)>sdy~NJV`KxI_+J z>0#o94t36HVZ9_TkyYJ$>9DVqSK?Xrp2|FQeFbT%{x1=-?u6A7oh1d>5aC#^bD9{^ zqgV{DlHcyKBx~1A4CiR&1D_v~DMb*YKM@LPaPli^q~Z-e+g7a`(ww`9m@jv+qxKee zxSp+7zE(SAJ`3g13kX2s%e~fJ7xiY#UK4(WUh`(bsZnK_opN>SaPws~v=VX!V=|7x z4Z^RHojFqTX%qBkUF-VKnz0p@$67)cD^qs;sXwy^c~+WKat0h6{9tzefAxW)N$BEtT#3ROGLm0%YXB2L zF7Rqc2b`ldoW5TGH04#T;0~vbZpeBs6mGX1e6%rM=KVDy!8cx%vc6_Xiw%_x}QqTm*YlNAgM|!w<_+ z3xuUKzn2Nw;k)`FF$c|bh5=z*KGqarW?d6e%3xrA{FF)Yj)RcyuKzUIsONX11a8Eb4`##DQ#vRE|1^B&& zS6{|l{uN(B{+Ax+B7db`RB&mx;T|UKCZ_faXGZ0ynO9YnAe`69DV+}PDY4mV2ZLt% z-61Li4}gK#946q#Nk}wCjX&y5vux7$LWRFKXb`LRSIBae;Ogq1Uio%>=GMax6gU@M zz{#(rl?SYKaR+hT6(8?$NQkF>@@6Z5lyX`C#fnF0wXqrb)|}y4y@cjxaFFoCH~cpQ zQ&@=mj4G-0aC;Q|G8#Ht^V4tpeA9e5u@K*%&mD&(g=r%t;+t}q!`zvVMn?TlM03*k zsJu{^p^C2Mt-z|v%ExfeV&^mP+{y{&A~AqbkpJ3qZLFkop6+pL*g+K2vF%k(-QijF z5Xj>BtHC0qvlt8}&%3H@1y>8q^*SVyH@i8mlQRh$wrU9zhUwp?rq~McWg0HfI-g%- z!39YHkKxSS2Jv&6R(ocpS7ak*01u4L0V~3bx~4)`|7~IedwtJYD~xzCx<4Y69v2r&ssjk}XYKshRUbkuccwIfS{o3O9FmK4a<= zu@E3^SK8kPdhLP%6OH4DuH53QR-V__u7>pTCiGOi;Tf(>W$jy2(D43eR@Ajqqm?qw z4Huj?3yZw?MuCM)aE`U#3|Nn#d=NGx>BFY|UsRNRyqun2Pd+?UywI%>WoBE;{lRqU z>1}Izn+pNc(Z_jxKIfGH8ygORskE-`(X2YyP3$x=!kbhx`*ZNGJ@sku;QLDKC657YVWp14Xgz_7lc0UXqS-L{9yBp zfHzLkBHPF@8cD-Kj_Celu{eLni;bXN4|@-(F)U=WWglx0=LA$n(o?>*Hgx8V*xkCy zQ4V?yZ)`h^`#`JeEgp;WB>t}xJ;tHHw|3?uny@Nfj(edTwM<{Z-aAy}I|)=&2YT@s0ZTONxI?dhq(ZLbsip_=UH-Kle% zNs$hls(f^G;x|1UeDgPLhnaXZ?jNQs^o8k_zDu2un&;)?7}E;-WyQDEgXQ09v+k@C zju{Xec4&szjlZ{+X!Rdm86w=8x4zsOpJ>IbcE+ttHtDO1(~pb!M^~jC=-(~B?xgk;_zfzwos>dow(C;3sYCm%S~~aJ zxuvJ=+VBjf!gJc!M&ecPN1kRY*%Z8Azc>vEh`MtQ@;cU4>F`<2yreHR==(a2S`l+j z!_)CS(V9#=pU zRc`+vEc9a0SsP7@MFEbBPm4cK)$ngz=h3guQ6T1zK0L_|d(e{Pb7p>&s(B)BJ+p_^ z^f#n&7nZ;Ho6^X09J+Me5KSBDULD~t$3{TejxskkGXMPPcJ=}%wpBNX4FisLkd(@3 zt2H}@>D9abX`WV%(;suz*6sk=b#8AJB7RWaj{nIQ-N71~-788dg~!~^x-&Pe#-o1> ze{Jgd_D3egZ^!AbjCQ4B19rV((SAAz8EFYQw8bvI?+)PW-!u z)ldxf6RhlFUi;Y%JK!6+DJGaL`QX+=-m4pCBCqVT+y%qwe^AE^5-)e1yCFkT7s*~T zui)0*HCKnF6{due!^^$K*JO_T^%kF=IwCEdP7=7}XQG`W^Q zmvXY4=XXmyAFt0pA37!Ou@5s4QfksNzLAG)>_MsZHmCbGk^c{vKxe-}(rs`s&Dn&N ziUn*dk#Dvlj+1E4HfQY!UVsK1ur|#g$?)Tdl?dmXoiseDcr>6*0*e90K9xRdRWW+} z=u2i(+MmH2ysw-~^mlJe>e1lkx{KXtWb#(lK7~#RCZo{v{NocDry2r5PSHC0H7O zmK^U>9rz-^)!f$9T)$<)ct(32glrG@`-*$9F)y#IO7JdK&umZt03ZNKL_t)}s+22o zo=MzG>uZl6pKdI5JJ6r0ND18FLc0rF#Z-ck8_Dxuvb zfrr=74<vv|0dl`(bat2-!}>FN^UJJt_?xKp`1I`6}`i^tPebJmFlLlm5cQdU4X zk)RWfDA>c=oR}DIx(0g`jfe9Vw?OHbKWHWVn$R13#}nSQ>Z0LJ1H{UVYo<)4hI@H6 zc$voPY7+Oi%S%mLPs2`S_*hq`tt)W1b1*A|u-_LegQr4aT$&SEN=3o}aOutYY&eik zCSxfJ52>jbCge_YK9R5-F4S212rq(EEbb3Q)9O&_i`sTfb1V8N-w6Fn5QpM9Y4k}E zCzbTmdnSzzrkIyT-e=m2IqtldNm`jYY27*Q;Al!48>VaOSuay{7cY+CroCLN2a~wF z#9gDEmHn<<;1DwCPdebLt!5PSuoI8RLEj@Omi;B2NGj@%7k#0$6;ReX7EU4_Pyu6;9e|-5a_t$ zWIJ8lnSqCcDmeF26nD(r+0U|Sf%2}5@#J!KT6w$cl*$*uFPw1?!8z0kgq!gY3R)co zg|*;d8B5uDAT}0FrqUMtR17;Ug2_Nw0`7Ng$FEs-DLGzUv6yrsgg9LXeCG z=~SxSkD7suUlj^~!B4|i5FAASFBkeE5cVSX#o)c9#26u_T{7wBy$e%FuiInC@R2lmwYym zN~N6u341agkNTr2+ZI>*z5co-^o*TkLUUg@G;9a76& zzP(oz58OTOA)qUUR)nf^f$%^o9!o`R_S8miSfB7#iYZrAbv%$LFtphq%ms1#ePav zx<^wUj`vgDON!(~r7}Ka2HZERcF}MLS)Z;ct*i#;UQ^noE1jZ|(g`b#_ny%dh&Hzr!B~W~V33ivFn$5`PR5gge6t<4 zuwVt`J8pOtAX-B|6tQD)nkAneh&YM72B%RI@rVXhV{g z71d)F?HVZF+#DhI!J-v&QcT+D!wXrFXq>;TAG1kgsEifXmEMbI?yGfIxC5Rb%ow>N z?rg$4D+~bVUf(cKTUuUPL$M6DD~ah~9C!9^swcH-X4)=F+~S~KZ<$U+G!|2IZyE}MkAe?sW%UR>Xc=eJ7=M+7DEAN8`LyY4^#4r1w?_DWs=KKD zdAf;gm=co|Hp?Z#I8Zw6L~P(6kE6*X972-;D=m=2dw+>{+y?WVPSbp8CziDJ za4;3twA>fZf&p<@)k{1Wx3sQ1yhPRBG8E3IQz+hPDzuZ&>M%+8OQVXSj;FDoNzX`c))6Qh#e^2P=b zcbceFZ{DEt8>O5f?NtS7=an+WD|zuiumgmA&^qP7pwum()Cm-6@m9?w$rIp68$y6uHBMG1DLXd!@#0|fDP6@ zs>;(N2|aU3g5imRzp+8U<7PE4o-}p5Q~0O09C0pHRtVUs9-|lJqw1r zaZ=TA$EPYM;1yMo7{8a+g1A?f)_}NImsiffoh_hI!!-(udoL>;C??7sYkY6>USNE$ z{JLZXST5QJlibyPpk#BNEGL2x+w(J~U2hsiWf!2{7%{>OAK(QqId#}9+!+tKdpzZeS0 zGb(ORg;$0XR4;~*ZM-u0zXoIQ@{YjS!m+(8)%z^&I_`{iwuY=uR7Dc*rL{GU zFJ+a!vhpz_dzQ38VUqTa{rmS14j$OIcj)=;+qWa)d&#yW;MAE+4%&Oiowz?33i(rE zv@#ecMgW>-tkR8P=RfFcM3e8NWhl=BDt=3}O9$gv-ml~F1dMq|=b49ybb}Od68WeRs~9OuC=rRnDLcTkBEOlo>#ZD7_+ZU> zFMYosCsm_@K#l&DxC_1J)*Zgr*MM`!UZ&~Ba^sMi%j9(LPP7Bz2M+Ap_taBQ4YB9> z&d#BIAnXnZ`_Q-p&){Gnv3Kv@d~*Uj=HfUnT1F|+NZ3xZs#_Y?;SUn4n*?s z6(t}-7O>ta)2GubBbti9A0-)bol4{8guGC~N?Y0i#CztZ?kn$F+|^N4(Jso}b6TBP zhMYTIG2y*xSAl|o93lP^B94#)-<_S?k#qnZo~MQnID@Id@u9uWUztf(9m`S z{i%HikpF%A4h(jnd*44e4uAQBc;(_ad-I9CxR@*60pueW>`Q+r7>wbhE;~S1oY9~^ z9niE7TR|gu{&Z6D5N_ku)Y~60Dp>-oX%wu9pPf*Rxp77@yT zj>MyuVMd~=xEH=uM8eH^{R4;06Ra;{#nLG9{I#1l2V1LQ1aS}d`-HpnGU}jOCTqkr zc`t9QsV(g)ZycDedFkz!UV8auKpgmf2c;ZAfBva``(8S50Aw9F-?tCHGZ*s|SQvN? zJT>lgP^(^XFW7b4LE9dHLo0G0PVpMpP%J>{I`&XdO*%IG^8;i&K+C4_N;BNvc>nnf_g48P%AV$BioR`NI< zH}|8mtJ4rzba3+i8Lb?#thcJ>e#bHlcULZ>Y9cx9Ak#0^e(>_kFTeA_?|=WnJN#jS z{ya%LFpfUv`Jtx{?57VjxDVAGK5WPS14HO$_70OQCzDpfii_X9!wK6dtP=pKb<*ju zHm}78$J12QFB&0|wlS(AkVxVEj*Yb|DA(rYr%}lg$S1&TizYqrCWd{svgtG)P+2)b z$TADJB7rE~aB+b)3wYr}Maib~E3la9dZH?P_rsTxNW!cXaI#(idDraT8}2SMQzj0Z zU{io`Qt?0j@sIe=-~RTGr0M%!0vCe{4^YGDbpHWDe&16l>rV|m^;GBc`v&*3yk~G2 z>`ZYuQZt`|j^*VK8j$-xg1Eo@ z@=Gth^c4Q&J0$A(9)SIRJ{50pA1FM!mwo$&f&Aw?hX#v!O91zkD+etLPpKX8vB@LQ(h z+HiGEkE1d8)ojwQzptLs$FupY6Vs;mnh9eln}9z=O1^u<^yzVcKZL`{*y|f!Djv4? zjdnNgy&d}zPkb;_d47n_nJ?i_0o?n+xz~R10SY}h_v*_1`w?&a>0Aze$ovex?*aHA zL;D70>(YU}djWjQ8XgAeOxexj$(72*j0bSS3*~}wzhj&;Q(-HWawtfT!jUwhA0>gh z=5Qn}uIuFh02FA@|AawVJZuCbQ9BTgQ=~#)C0tugLslS~1Rx{qW4lMMJ9ackx1muU zIGW;(FRLK(%#PNU`OZ9^B;o_HP|)_;mlg;24mdCl5APf1f(*~#ezY#RzOxpU(B$&YBFPVsg zJR3G$l)3oXjb_9wK<5R!*xd?DgX>9~$4-{H1Y;4~2BOnu{wPBhB0lD_Ohzk5Fcq=$ zp0?jt+1u^s3ssEXyVX#d4Z*8`6z-z;a*lF*ede<4t9luwwBZZ{H*$=%; z(%HvYEh}5GpBZtM&Y){~3S3KRV`FvK+b@3r#$8-1?N@JBR#gW7rkR)(_-|y7#)m=9 z2ghyYVpgV__XaEsVg`w)bXdCIt&Kr08 zDO2g=a3~F;jDdE0%65d3D@;dfSD4Bv*BFg;UtbXkPDp5Ru1@MN3ohS z9Po0;`;yD}@e8u$kgWjJ?eSq}KZ_!fT4rW6*0DIOw(%u6nSL-``!>TJg?+!Q1>2A0 zOV;s&uu!I`qa%4BKQuHHNXCN<_PCuG6PwMUv0y5u@mEa+zkQjq6hK$~s>znIVB zAV*o;$km#x37iAWZhkm9f`m$5LuRKD93*)W3|?tQ;<2zBXBHoFs~!paXJ#%KP*Qm0 z#yLU>V=!hhprd9O4_`*ue{nEv+i9;nY+-Syzu!QL1>Zq9nT-bqds&6pest^m#dP-r zm@($qz3SVw;9*{VyK$hQz7lB1*TGAw&==nFfEwM7uvdu!$l~Hb+fMc-2Q7OXe%Fo; z$4Y6fOKF_55(uPu14UX+nhVBoU`*bijM_qz@}QYEVv`tM2l+K4o?>w~lkcdxx-@8< zLj9?HKB3tfz*)wTAb&ZI2&_PrK4~pZeGcbS!1u=bE#v;{k2Bs`t#da}Tn= z{vdmeBm;n8vX{l~9S1zB%!-IH2Yx z8L;>E4(_#+yltr?iPP%xfp~|Y-EX0IGou1B9Jc~~Be@GZ@C88hEvb%wQ1d__63*)W zAruJ&$(r!kL@f@0mp8ninoT3)iVy>VU>x7qFV2+)ph=vxlvb56uAb^dKAY0pq0ASS zzd0XHhV-u+<{8!>(aV*+Xa2+;zckA)?ml3B+=+`z)j>4dVs!_~HFM?2H29WxKB%p( z%)H%LQ(IrYpInSA^MyCvUuGz~HYsdy@7|==qnEOsIH>bDuZ`7X6G~^A)7pw6mWZ=+ zrxOjPY_m)&Z^_|cJ~fvPV-Y(NjRs7nve`gDOT?Y5t4PsdH$?%8Tzr;U_L4^UlYuZl zTe^95Y`;GemIqH)#iK7^!OPf|5}usdlp0EhZO_EdGw!JC3J-tUCe|749RXxrHmag{ zSBY&kIk4>DV(QDWB66ViC7D6y3}xpB)S-PZiRrx5HM_X7mGz`bL5D4_LU zcUXG|RTK8gU>3)#%hD>cA|PoWl-Uf;2^$zQji=;)Yd2FhOkInt3niVjMt$U?zzr>0kGEU>lS+F5EEk_ zswB(!EJIQk+sevyn8IMUKvV?}ew9pK2XUx9qybLk5$?r`|m z&O&~Nr@b8Zgq@Oe2te8Q9#CudNW78luKLE(%1qY>fBc|cHgW*$pyg$<9~E9FgKAh< zNyqs3pct+JxOdnIEq7lTRMXExaY|qUrqabiQMBw#Wc72UpB9J3O#-77knof{ro1y9 zQe9PuX$y?KJ)6^(8*4z&b44`MIg?If1<%JiG0vbkd zYS(WtxUV#rcexMqF-S^^pnm+*?ip8g74Ge+to*5TZX$FpVHEA1NQ^Ghd-`tNt|D8vN5u|wNdriFCTteW}+shk_HmI z{_%%@`~dmt|NPHS?_!1NEmW00##(BM?Qk=O^+em<{k=O5?bpJolH~JdPCFYsic0|j zka(kX9G0$NXDiE zzy9$5{s%Po*AUWw{qWn{SId?HxS8ks#+SJL!1F@Ah<10!G1zaa!i2cUB#@=nbZt=} z^?j00#ata)hTsJddqXuAp?kLeRF?5Kyu4uj(Cv7aoD+%=?o{e?p0d>WM9JV%y z#TOZ`?Z%- zi?35G&-Ex^?Y}Kp53K$6!*3|Gzp$MaI7cld@6s~f&rTF|p{sV8hY`BI%nTclCz~?9 zLgwlV7firwI5exmIIAXk1zEYanq;AY4owx+I&}HdOP?Xe~Hi@Xw9o-1lZd*Aw~V+Z%|_Te?PqoKm8a|RJ3{K zZDj51tkYjUe8gxs(=86|?ykP<6B!Dz$X{$DDM(~jbGb(TSp>9o6(h7J0hA46*J4{t z1Z2owGSxx;^ANtdDQJ6(ak4}NbyBwb)z<=PXFbptGg34mZnq0*$|qTNL4UlrI@LVL^(-)$@;deriC2(FB1B1Pzk$7yl(|$e#B@jaDV;N|NP^J*T4P#E8d~^@%^u4P24}Lw)o4m@1#u z_Tt|K39+yE5#Zeuh5sYbooP~F5A4{{IMw23-cDxSmi_Yi#}B_O(`EwTLo9#u=Eo4+ z-^Sqn?$_Tx;t|%jIY*r>GWWlv(4O&b?g)`7LSkW}E$J-^^&mL5h2VJUc#qZVS>?-V zXG5=NejI58fZx^dSsX!0Dx4TwSQJW^K{paSqq3|A(zqF%T%TsU?m4un){stMJ$7Bvqy5 zs>NGr$C0ajIH!}vMWa_uml_~#H6HYV2wojc#VZy%J$-!w?N>wviy``s(j1SU8_Pc{ z+(VA~49$24f$`O|w?F>y!{6S3Ec4HQ$GQ{hMa5$K%aXQtq_l+EfA*P6S#GBuTW+Ei z#V-Gj{9OZ;CYY8%xd$yC#i65dKUu;kuJ<@DP0@)|^KdrS>e0r}%aa(B0bl&PSS2|U z)CJCXn`55tyQcw>Uk>+{{?*uF`7%D&Ob$;FOGIXcJHYwXtJgn3p8D>m|M!3Y{tfTG zew!^ab8MF%ZZO*22jY>r6hcQa8c~&v%d~u%s++4ZtH!;pEid}7W8&D)9xi-ztPB)d z@uC5H>`;cAe;2Fg#Iv~Stf3xC)SEt#XbJPxtb-N%YRZu}B*5z@P4aW_p0xLzaM`0+ ze%VaCx&|VHECdjppCh<`1UNr`{`$usehhH`@u&a$_rGvxzeS}b_`1Kx`s0h+2^Ui5 zka#KC#PZH4Dhi&Ct^{ph1k4bw5inJAzAEA~5qG%&arZ=C-Gaqv~XhXFz5+gKKp2yS(J36~0I?rV5YSM%gvYsAR?Lf`!5# zmOvK(62_2pgd2=UUzC>`J;ruFa znRn0L{`24e_tTGWkR+3n)Mr$Znc=SQuP=}!Q>L8-oZG^Mc+PuL+8MB&=?A({2&3!1 z2%R;zHFEpUzsshLA5@ZQ>XGh9av{%mE1X$ZG8d80Nt^Nw+U%{3IdVOkC*JbanQ9E~ zVhiV;Tn~qOjCPmsy1@O{_j5iPxXhbpzy14v|MBJqU5CjrYZw)`&G^I>)2lHt8Z)u3$mwK^603q2C8 z6SGxiRpF+Lvwz)DW=d!GJ$-#4m$~VVr*9sqekSDF_}#})Pa=O$_zAU3E+d=zBZ2WLG5z}JZYT5kxn5=yXkOz7_X5NHZbAF2cMF}#%Lo; zM^4kC=9ebFGnTFeboM%QR2}p!rTZ%>kyFDC^(rt{_JG0jC$9cgaQ9P@>*=#xPo=9c z>bAIfk>H*dO@8?8`5N4Rd>v@~5C8Z_VD40IPgsAsL3<&$7X|f=2BVAMP5&YC6D;3E zjoUBs<-8Ta1G8_6Lq3jV{Aj$atleHHBnVJdWa$B`Wsl>@W?v2LmS0#9{zdKx*ZirJ z`ZaJ5Xup!+eVXfuT+03ow1-6X-LD_szW)19KfKOp|2Q{x|F< z9H|m_F445Z?mwi>$s{&ND$lF2D2Dc`MU#u>3t$GkAL#Bp>X(d3s?&2#v~X_DEhtTL zCzTd{u*>Wdm!dB6^z~`5U#~r+ohPZ_KATw4E|NuTMf(Exx9@)Z-w)5;{`k}1-$8JP z88j5_&wu&w^GlSb-h3bq$ZJ8WnyF|m(x+6VJhn8aWh*TL4Uw6mb#4N8LHX#m%7B;X z(O_|;nPXeI9+iV;f22#*(xOy~Jo|whiK3V{a~-vxvDQy8{xY8fsgxR_4ss^-`<90EW+T5-GE0?IwGkxQ?mr~m zs>hMqfy1LgL)?(46yb}LG>pWa8x#Fz*>r}c-1&+NTiB4uzp9@`_a)NflXc)zD5r2Y zox&C|Q79XRvWX>ATw{BxGbOk`OM^FNF7vnl{r%aiS3myr)4NwmX2+$}I7;T{mk91# zv|rB9ejeMEKD|hlNkCoq710ny))2R~(pJh+sHz!$_Us$5iM`PJTwjaLsYh~9*+Y~T1EU-%L-!bRts5XQ`1BfM$;I? zMhHuZJ1Kp)%TN^GmuTAVX&}KVg+bq@&vp4(iT1vT?da~Dr6#l|#6Mq$D#hR)(EbXv z$dIQ(5%oDj`^#u4i#cwJ?APnf9Ywn-Pugj0w_h0Bsh=`)6OsG=Ny=dBVQfnIXZ0+u zawUr$kA?T$PysR$^JZz7DQp8K{Tq+8$96w6wNH5e9JoikDjf0EIoiqHv5{$QzX-Vf zd4Y4H=f8m|?Ae<+xEHZKp?#U|`$80Ydw*B3sItxf4DFW>eUb8=(>{FMuFdR zO{Nnk>bxSn2bSqEN{$865Chd{=92;J#nIQ|<3OjCxL9}ctGvG4<3+7$M=<*9iv#9T z?@H~gdcyms;eH$NdIAzhg*$pTpq+ShU;Oe5LHozw|M|C9&%s6T!<+Dv=fD1n!T!>H za2e}KXTO)oCUf2V?u|HF5FK}hc7M)fN-3)Lcx86ZAll4caFJJVS!~NQ6?=JT1lc#7|z{EE>T=YH~X7BM-w`+7tAFRoX8{}QA9=EFb#_Bz1* z^$$P%_zEnN@AuK37ZqrYOQ|9Lva`I?m*QxV#LBZr+j5K}g%y;hmb4So_&8Io*d-uG z!d;?E2BLl@CoA>vUEk1j!t0)|(=^ytSQmQN9@gwOtg`Bfzn|-nHsbY=4T~aTn&R#| zPZP_#pP#SM{dq`B|Ms`H&z`@1_rs5Go;`o|+lSP;4gYxwH2?MmhP&yAbAX+D0gBLH zW*kKl+m_X(_AIvNrd3EgRry+d=_r$0HPym87MBc@aQ=#%wIdCJsd8%OU+#y!Q3Cre zFtxiHo^?+{-_PJKCQl|1_%bc^#YL1xADUQR{j@fB08_vF_08)y&toss>t|qke7?XP z(0*rdXwQ1)(laXx5vD$s997kyJ-Qvv6vz_osFO)nUhrbn*C6rCuH;c@Gkd`vXukKS58^fXw=ahfo5NlEQ~_4KJ%o%A1gB|4>Ua_>h-CrEy-}NYq(NiyL%w& zZ(l=D2mddu<@oS1BR!)1<-I0M2Issx5d0KTug{X$;*A%kn<6=@)e_xK~PT^^-wzFSuXRMVm|@UbhPw?Ib_Z%O{ z^sth;l+32!3vDL|+&cq8T8Dk%QSB0s`&*D8QD}eZX2Bhu z6%^e47g3k~6V#$p1{CS`*&r%)r^^fn~y!!19 zhxQjYiv)SyNRU^^A;ek6T&gbJS+%Krash9Bc5{vVkh5a9aQutVYEtxsv3W!|8i(3w z-jE?oigOgq#k?`ib!UWz?@@KvZR7is_`ZvGfWdX$w`VEDF2#=AGSx4y-71>etiAx_QNv*_eGSMB}jpJdznM%)ACYN&I)VKn0X=K6}=zyUV)E> zld{-+Rxw*GqWLlz!N*C-bd;qeeI6Ff0csv9i|VNAbjYLGOITg?B*lCd+#@$ZN=TW9 z>d%Pv>+YCTZkpl#5`uYP?x4QEdH1&@${;GES5f9gX++q@d+m?_38qClg{jvLrMqUf%yc2ZD@iC!dp6{;-D5j#^<;Jbj7&AL z;}!0kV163wn?aD^e$Qu%SoAi2{BZL!1oyWA?r-0{d-FW4Sw(5;3!0`nJYwS$GD}nT z%=$BUb9qLCikmdl3wm9!fj6Lq4)cV8CJqL-8*G%p zY3k1J+K4jk7r?uy0v9)n5;6_-MQl%wvSk=4^4a%Y??@Xd(;oGY&SR7kMW+h_t5I(` z%ZZb>*{iUcr`Eks!adhXW{@?X6U+v%VQ7JAA#m%A?MLR_b7tPYpovK9iIzSgs#<7FT1bj4v zu&-LO;lNd<*-1d{N$aWDb3O8>H3px6duHYCEl-Q^e?aRAjQnqxD zwUI6Ifz3&3N=1pq(UEa_=>a>I7=_V{xabEfw&oYdH))zMmIlidVQesn}-IG5^ zJ5HBEfLwGIG&QWLcteaWEp&OfC5Gn{((E*G^v4ps(p$Wmz`4$UHZZzT0%jzHn!btgBA zQdI$dN^DBB6LlM?`T7@{r^Te|DV-gov6($}nc4*I^?2-CVqA4dP=wy{_x8y-a1z{? z>vlq%Dq=~m&(l_Y!B4+I4IXiDZxk7yzkLP8)wi!det3ps`wKV>*A?wtBigrY{Uiw7H(X^mFJ13e1n&0+PXT`6?_z`Yv$xM)f-bX6vCb31;4omzaK18R zF2f4TO*4;EO?&PvHqEeUYzzHyaR#6XF|Mj)0a&{u zx7Ye`iRzZCEBRDyI{NDT730-?9hJ#Xzr{Tnfy#h80GK=Esn6cLeoyytL}M5+QC>0J zOX6PauhwTOOmVY#FxB#lHaFV)QOqys$?0FaQembS_04;YMyt;HW9-==YI@U+e9OqU z#@+s~#M*36f_qXU55CMjiS5@rcS>anrekD5Wp1t)1otGnynOZynERX8|NM}Uo&le% zGSozg49G?Kw8%>fg|bLfi<<>2DqguWCyEUby2{UYdfn-pmjvhCrbK@n z#~vNSI5cvHt?#s3H~J`HZ8vV=<|$j<{n9<2F%!abVf`x11Sd=fxOa!qe*HNa9Rrtv z;Qs2(`{eoshy&dH9oA&xl>x!MOhij3V`23&CwXa6n<@;JRADdN@U(zLr#jKm9WZ#f zo}au9IPJTZOoFjpZ|ChK?*>R{Zhz-q4>9k>*r4p7ycA1H4S`$Z?&QBbW#Pn)%ZzbR6oo+k!%Wp&e z5#Iaq$xYq&Pocel4G!)%cXVLhCQm&h@^Dr#+`;{l(GLH8_2Kq8whL%Z`tu4dUYODf zX5&vabxL`QG_@!H26e{NX=#-*8Db6~+nu0GZ&{ufs=%x%X) zwg-5xsdTBFG*1Yp$-g3Smxj>ijSSPC5&4^C+}@gbMp-7p9k!~zL^@0)K8VT`6Yt6) zUuQQ9T3@^^nx+<fV{TzEHfpyHnf(D?02)% zW(V(l7sr16yqE!~w@_oA9grEJ>FL><59azWMTcHS|6uJL6ECLLvGolEEVq&rt@C#up_~%77)up`OTQvPZF<43xwZPsz4CH<)=J6B;gHhjA0l<%Yd%hk=Rh zD6n>~dZbDv=83$cc%1vGml#CQt_paU+~thvT(3Hry_r<&PvPT9gN7)r~iQAVNrZ;Ly zy681ylq3i8hVs+ijUixK>>UI!&yAdRt zE#CPCw*5}U)Y6|>=bI;_V_EUKpdUl99F*LY61+QOI=A<0a0iY3!}I5O?)%*hhC3_g z^A?-c)fts(&tw>X{7g#YX&*L;^rTadEG5RPdeH>P%R0&w+`nl$yu<#O?XCHB97s+YcKaqC|*tsiI6SS9!sXR_hBVzF%`FcT+Xn~O~J zR8%j{0=+JXGZ}`u#%OB@wZ9W10YN*do=S8M&H9_sKBc_*m-B{KMQ>n<-0c=rwu5)J z!TZ)D;E28iQ~jQN1elG?11>y)d;N*vZjTAaHMt2g-XSr)d;Stp8P~0}eVg-^i77vc z=0(+4n`3-8g$&aW>@%X2;J*?@J6dCaeDDfw+FQqkF`WUsvzowd(7mlCHJi2YO}$a% z`;E}ZP&(lpyy%lj46xA>xV!2~HyJcvAKXJkM#McNrXQb^H3yC)37tDucuH?UQH`Qc zEfdq`P?4m!Xr-0#8b^BbFxt^D7_ok@jo5Ct>1sQ_ z1JO1LMteM^s*wAa=s#udRk63jo*jmo<2?0h?tgw+*xJ!=>g8DyP!$^c36&`Xc*=>W zl21HjbRag7*h$#Ot6-YJpqTI1pgq5^od=zU43+Jpy9DaCmeg!4>~5plZ*2ms&EuI` zabXrm`@is4flymrFbFq(0dp4I3#JojKW6SffB1-r`yxW_<_N`06~BmDd-L(MIG zcFMZ&*Rkx$^{xcyq=d8cJGr+_ZbLP6_k z#H1Le>O3XxbRImBAW1m46Om!o7i`fTD{U9^WTnfzBHQT|z+yAkRBZ}QVuN?L>A3DU z0_DahpkM`k%2=(kPl+l(5)i7CV2yRw+IDC|T4U|ajZpB{D_k3Oy(?kvGab?0taCT6 zmzxhan9F2y!FrIyZvMQ-YzhY^ErU_XhUz(IRGqlQ$S5(=qK#dTXka5-Yes&K-y(a! ztR!c5yXRMJ?C4CEV0NYe^TsA{X*P7mipHg-uD1Eh6L-aI+fK6PT&6G1>!GUQmJVOx zrjeuZu3^ivprXqCiQrzZqX@tj{0mlPu5p#+(Q`{HFTJQx@E1ueCHa)9(_2K1C**~6 zWfy2yd&qZ7JtV!W*2AM zz1ADNH+*-X06EN?3M~FXATXktl}PnhM0zbXuX}XOb1PONz@x6X!o6T8M!TL%E%Qq> zRguPuZE(*omxKGtZS0-;Y^q+UL(~h#=*gf*fzk*<+-V9+L>bJj1rGFRp}vP;kB4o8_mZsGQjOV`PB&tVLjxy6TvGOc2KS*vBCSMabv^QH&I)-HMGOOGQ|n|m+IVWJP#4M-7&;5 zL`7qBgB_GKm`wd3>xvEYfTwFD1R!5BoteCe>R7a8> z5bcl5B)~Vw@&aTQaMN<3Ftdg;@BCG92_HoEbDi67<9k_e+8Eh4rPB?NliaA96xR~m zo4-zQ7i}Ft*&h6RaX^M4015reLe-*|Mi$0)bBWgs?i;l|8$F!|%;k&gv4&IVFvTJ; zb1c#n3J%Qx$SrCmAXfo0C=x3)3Q6SHoxb{g)iPmVUKiQJb09(eWKpLrr!VD19KdVlhdE&kwnn&u4mLU>`Ne;@~vm=XAfdRfs?$s+rU z&kpYACDZnp=TP!Oi4AdEI;uLNBV(s#m&9YVuYTXf+nzeE<6b2O(xdsD3T9j8tAdwk z?#myP*J$O6Pq$%#$EeE+_eO}nLU3n&K;d5DIF^)J@B5xlrcPhRn7;QzZ7maOPA3cN zM#0T-y_L0fH`cg+z{?AUyODIpX@8Q6wr4sFMKnD&qM$P32>S%!WELd32U{Ic&&KNa zU0PCe$F%^^TUmW>liUXHs_fiQri6D{I^C3yEXvOU(3|jok3P6VTraT>Ri)l=_>w#z zJiwc`^OyI==%EhxB$fTvv4T^Gq7|Vqhv~kJ8GnW%7SR1ti-wTTZ>RnuyegZ ziE03+s$42bMVVb)WiM!i)v58dAzOGyj1{qf4o>% zUh8EZrbzmD1nX|1TFfz}LirqJnN0^~BJvKSG8#=|n|hQoIrd@&wY?_*hd_A0!M#2! zB6)psC#5Si)YDsp$`IE98ACwIuDG8Ax!sZWz78Ci^~V(2SskvN@~h^j_nZEvQhqOM zr^1zDOmRJ6E0ux&JX)|fh|`Zd001BWNkl8lO(`EYbSqw(Kz3m=<5ZGZ;~Cu*HoK2n}0(N8(2_-9E{fj zluM$@;#rck(pd=S>vL~fuK6IZpG#f}@SkO-w4O>iKEZxVdrs9pdufp1-mXj7nicJf z0NE!>lSbgV0QNt)D!`QNqktI3;&ss+c8(c&h95+6V5I8l=U# z_s%wgu366jQ7X#tW{L`A?cGgWS6%cF6P_>ZP)Tl9rbM#<8tc{V7~a&HU!9T{Uu34# z$?gtsQOUihB0D=E?zq?_$W+JW{jbY7)|E>#DY8*(cimY1;TBL;+fS%5?wr09;!A+L zfY7Dbqa^O4j$OZv(XyVyy0Cp6MU~bbT+RybI&hhA9q0|$;bm@b3%6rYQPoO7l$WWp zR9GVmDbbiK97CCpA>}>oS#YPu$o|CsMT|7mIYZnr_y!~M1bP(b?H28e1G4GzmQ>vY zun*s41v@K~+|tQj)=r~U;4r+0pdRUsc#Q4=#;ZCU=K!eehfWkb#Od>YY+;C5{CI)3 z+YsxAa7kECNYF=6g<1MqnGLiAxhXi%{R+G6{SxhRMkJveVq2Zn7;Lq%%BkqC5gezajQgd7f zMMmzVshclbYJ?8bK+Q|*V7z%bY9=y*%ifG#|Ls0TyHOvDcyHNRc6woW zuWNqn<7>uNrZS3!5Swx*m&{t9_0+NtZ?|SDTpyhQ=M`07g*Jt(_nBduV_RFhYbREIB9}h zC-&lZ-6sl^w4=g2a~9m`AtG;=4kjQ^BL@MyWAFw8BtfE*(mE<^?#=6?qsHlRn!0a3 zD!rUW%?dT91aBGM=Vs$TbJF+Xku_sm$y=Z5O2RK`5VD)X(2IYG9MM02=_-uWden%YYBBFwc~#LgIuQ2OPsvS#VhzwiU%9i z0}(QZNn5fqT^z({C=iS_ek@H}sgH~wyB%qsN*Yotf575bSYO53nRHoA?aQdJc`BX_ z7g1LaV<-8aGkk6{6{)C*mtKLL+ENJZYW}u)R8+=Sm5hPY@rv*6-Jvy9@7uOTMO59K z#Nfl54N!Ss_~5B{*mNO*SPLg*36=cXTE{wpm}$?kMS$L-^(InNBJKe~WiX3Jp2#b5 zLFz5qXGz9Sx(`QrtoWa{)2mb;KT%8)o7$2{B~*aBVvnhuYW3Jb=Sv9jnqCBxseLY? z^1ArS6O`(Dica7ICa=oQBy>|bK1y5{DQFSI`o`$_dQ+X4d*kcoDzGT^OUm3yaHrl! zPlXt9KxOc#$aX-Nlok2wpn+vDUY|%0t48fxGmZSuY;rEu$L5@_)0={^%-^F^<`I=s z6(2`f;1IIZRRIK?=Mt*vLmX#m=-u|oA?jPJt28c&8xMX-%eUm^klM7oF;FK}do*J{ zIH|rH&PI^~kSmm&PY}=~vcj=o?zC&EmxtIVk~@y)xPrRYm#$Z2cVF8%mhoWV0#=Q$ zM#(~EG0HzV``f6G>MWkqo2$qkqFAHEqY3V92r>)=_c>!yO`Cn`A!2{tr8Y(>B^qdN z3Qz1R(&AgRUu=aK2;h)ws?C)EX_OMd*w(@~WM&;4X>>NpZnsarD3?| z9+=9IIUB32a=o3_N?Ns|J^x)f7cN{VVGFQ`kpGjvO7&5k({()ejIF)`CIIk{1nfeO zA^WquN`ak4r1SpEW-HK2kZ?mCi&HteoKu_Sxv?46`TFE&G*o4$$Ec7fwO~-#O2uGB zgFAV<0euaxf_@ndx1Uo2;r=_*G@W!Af z91dx7l@>G&uqP~2GzMB*u8dAQoN{5ZJNdK0;eM0(6?aMVYuYi=fYU35o57(5FpO4Wydnv=GX zll%`+;j(yY)u+^$B*&671S-4=?|ntI6-{qh{jtyxYT80 zj6Y~-&2+`pvFb`M1oR4nk3xX_i2eGMxgV?SBu~X&8EghaMuO{|Sr#WRKdo!{{jwfM zm)N`4qyCRkgVGCD#Ph8h6Qj9WZzR3_aahC5RI`>F+xQ6eum3j{pC4Vs%sR+nd#ld5 z%!+SdHMQG$rIoHg)m2Vp2plbw(sR;E(VFPkfqx_^M$sIWh>$p*6Gt$*W0`#ld;j>{ zcH-8W(g@QSTE=7liW`P*?EaJG$qii>I{;rEoP`_permNbvuKQlDKHufk zTNkoU6Q#y1HpU4Xv6mwWHTab%Jt;~-a4%ag9w%I8#WzTgwY?NAP_&li2fny~Hwi-F zWlzH>T^v$YsrwIa zG&;Ak3%18*R=5jj*n1RIrkC+?%Plkhd6<_dqsKdSZ1~RoefjKjw{x3{=K;qt;_r&sdLh+Vh%$vQKIEuP7RuR7cKDN7r)h35^Q}2^kwMWbJSn^d_fD zqQ#Z9(2R6ImW7S zW{T%ze!8NQB1Jh;1Nt(SN&1BWjKWk%;;BH=@CGm z>kGu!*5D>otUID%)*`9zaXtNLT#OgB9CNGO?1uD1ZFn~hy8iEo*Ckyq($gb0!=gZ= z*u$qXb_i&X!f)!{*v@JHvcIQ{(21CLtkfNM3}DenpL{R{zUk433Xf=cl?zbfI3MQP zAir|q?)4;brYcc5uJfWDJ;0tFwS9T4=;QALp$}P3dmElV-f;<&0oNs_O{zXAJyv}i zSbP27GSI5i@J?elVl&AlBbtYfb_nfoK~`yWjQzvRY{?*@Mx|v(lg3ha%%sDD55_Th z#`@=;C-5V4OEZL0cNDlAr8=&?9_WsWSu;j*2FJhd>k$$cNLz%0NslUi3BiV**_6lk z)fgXMheTlHB2Rjn4emA?BUwKUUWsbd|3$YrV<$J&0h>wfsh8%V6L%L_jEznzl%)Ql zFS4{#HJ#>iZERIkq{Jv~dfrXMmP%ti#wqLNNSwgb8abbnm=5<`UyigFT2vyIm^7Xn zl9GVtu};HYA!qNVdig#?>GX|h}T z&HH#}gS#90HiVNZFsF7J{@dHs#TkDg++3{_!^95ne`sLur*YJ^Tu?JBk1|^yeYk{! zi@gEWG0Kkd45X>mi|}|kBj>aIF%HKtjX86^t8h}%+<0}uWmY}Y0zpq(o9SG3I#N=` z-al!g@rMAMjuF$JS5!hr3AxE)M@K}tpXLR|+2F4FvE$)=LPfQk`v3mtP61BYyV}BC z1(Zj)KkW9@wj0MW3mqyg01F`QTev8nU$jDyYuq9{(&@iNBNMs_{=ZR^#wg0`bIBrBH6NDwyfF7=GY#K zNerfpfP5;#wMdTqy9jfinVu%0CerpOyFX+q6Tu$GRHPXgfqs64AOoY4Y9c%qu5C?u zY6aQr;>9U?H`b%k!0-V&!I5$q6u@10MY8CQR#Xvt5w7nh5S|nvAbZRm_wQln3^qcd z&JP%tca4iKZzi9qjFI7dOKFDqR$a&WSbZnDMiJiGA)8@yDjVSbklRyTHI7}^LVmcn zA@WPZMK08smKEYk!Q?@eOrrvtErjXO2%%8oT`Kh4kY}oT;CwAW(S8wXOOS2!0jJYR zW-t*3MC=3DIfE>c3=cN7^Z3ioOeN|%t`w-pZW`O~<ZfbeS-2RxMS$!QSNB(Yt_#yj3oy?bIa>#N}kJT_-(48o9gcfEhp(I0sjnf zAryP4OMR&Q(4`xOe$?E+jN`n-S7;v?(=-JJ|D9o_NKeIHtPc>Mg}3IRwx{}T zs;0q#*f6gUi*-XN8g65`f^hFZovdfw=A7m)4w)v60MKV5rSY)pDQ`)LGGw7N&VP3= zH6^~3$P)trOv|o6OJ+ywks33ZI!&VQU4t#X*Z_}b56pU`Vm9O$T!)Zu^q54M>+O_U zBEpr4%VE&`yG!yE`-J+KnwaM416DoAm1FHR4#QYq>Mr&-z@&iYbLk3*j~=EGNW3wx z_`(huC$wrnn)U2+8 zTDp`Stkx`qf$*h-s!WJ+5CCjbPp$9kXpRn9kcngK1*}AiXit&fj$`fHZj|mjM8cW+ z7_IHGq%=2mh|2?{GB6##9!BlDiJSgwbtM=ukey`PKS5t^`uR z!vgVWQhK|I(#7vgqI;SzV-;EGMEOzktixq+c&CyWYnL{N>LS67xnqu%3=4FqqLW0c{+8 zHMXA{w$u1ip5(_*bGK*^>7+Pj@=7a6O6NAx!tl7%VOSqhQd*vBwpFD#a~=>+bs1_P zz^q>J4lUXt3MtNfF>}X@3=r~H^}Wp@{c7)SZf@m0??zZ@ECQJshwq*4szWxj!aV~0 zA*~#}qPMxJlGSO4i|+#aU*sMop3}GtGW*N5jTYRmm=GtIcqe(0()C@q2kITo;)9 z#ZF!Ky@&QqvRbrZ=YL>KRUgjEu>kgQ=qhey6O)&L> zX03ZcC&iU3^E|KCX#!MxK}}A~*AqS%l*{Z_m7=CJhD+AW)9_^m2X{O+3=Ni9sZ7H6#$NO6+!21irdp~wV_YhXO2zGEILtiC-`$M5J3Ov3c(Db1BwOz0Jv2Kl7$FYNS z-1~OjlL7)y!=sJxqmcU%<*DoF0X;dR?=|;Rk{}&08CyX?>|tE}F@aGVxT}<* zK9F6(svn@|y6?Pbt5Hu?KTUNXONH~7_kB`ma$5RX1FZ$P2@j(D5~5?Nw5^LaY^ubN zI%#QfOsKP|;OgXMC;!X<=d-2QUW)EkqDhjtpM^&iC8|I?phqRn)4{bTJY-;1Ep2#e zDlc~;MW0kx$w`MlTbE&s_+ORavi|Trs+eVMl=5ik0){^_Q0blOUe$*7{D5)m&Rd$9GL#B%TC(n zc?0)ZanG%(ZoHGm+)dx5LFVu?#D7VFkv|W)X5W8s58NeyeXN)RWcW%!&}+Ldc;C#< zi{L*UFjnO+F zxYW!8*b60QQN&}Z)X9BSGQGqgHJWy+_Xe5@53fQS{^$To)aDV==?N|QCd7tBdc2Fh|0N6X*S1FkTPDk<*b-rpFgF5O)1H2Qg<`$PFsyKtY&O40fJ9S8Q1l#WAHRdNh; zJ$muNl^SY*w&d;6+MOoK)aFw(Jxyaj?P-mZ1Dd`VBGcmc){Q+o3d`Y`LWrNKKNTJk zq+tjRY51cDjHC{IW#W`dv0+EJl7yugthuAUrS;pnQ}wFmaRc4R@40o|O<*%pJT$cL z)>75thYU%|_e*73@CsCVl(q?J83P*4sy2SM_PC%u56%dz_w>5O*3s!lh&OU5EMN`I zC=4nb6?eu9f%4fBNvS*aIQAV!0}2T1p>_hmzDOi6XJ z754US3diXh(0+3lD@+d#?qX9*jh3(sjqi3(M`NaO8gXfJE2sbeqxP&Mp(+|waEkeI2PU~;|`ZmMBgn}W}Y#dyS~R@gLaAda{@ z@2zI3X4-s4V!FL2CZo(`(U2yi3!=dr;4hTs(;4vXq|rr!68S}jggy_h$-qadv%B() zDCS~KVFb5Ke$8q>xUUAXby0_a#|8ou!iSEnbBUg@i zM8b@dawKr4zIew~tC!^#^ddnX>4s`u{6QH%AxlJOmpuOsLXKW{t6K<3mFV$vav)eW z!A@4qZ%4D1mu~JSdB^AWy@v>Qff%h=2z_Ai;ydfVghl-<>8eT&lXlf8U0~|Ig-b2x)5txv zB{Nwc%Zn*HWv8jBIZj@Ya=62t10|`jL{2M5Oojkn&7G-5H8#Jhf;^z1o_RWpCiQk( zlZG9T}XgEN9)UNJoCV-%u@QDhjb=&B)mYRv7^L0IqJP(E2|HtN~ z>4%Vyt^bFJ2jviv8rsakI15?lV)CU4X9S(Cvoc9DP6X+Y2S~i-t{j2q*9)E01L9|7 zBMosA;B$ce1Bk`1eSPaQ<3n>$k7$?St#$YJ=DL18V7LQopWzO3Holvl4%YG^Af4;3 zx2E&LhulEa>On#~6u}jof-Eua4~5D9IuI?6F>PzSC1a1&WJnidHGoP(fKDM? z(PoZp4HoIyl%A8kRhda5wVp5=Qc@MV;(EDOnIq2trt#Q6fFzoA?dn=uO+zEESCQ&V zH*oc|_v5{L*kHfR`%)R=HLnr@Gf;<(hti_YGt8 zd-y09TUgYdr8GxjTsf#fw&D=+TK0!m02jCf{Bib&wS!~E6}@>EwDvSS+feFG6&=$n zzvivv8bL#Sz&sDGZVVl$B)6)2xQ0ZR86ECR(t&)~(#(Mx z6B{h%V81XfF(Cu|8t2!h)T+PCJH~E|ya$}$j-9<;A3omK88Qj(sfFpkN!$a&mcsyH zz2;NrZ8!F!pMbFgYHIidIZzibg<@_DITs|ZqS=}06VVU?pgK5GTuU#Ggdlmc`L>n1 zD`s0a_yRD{Wsk);NF(QJYdK+NVMuYV9z8Vj!1AbUH3ZDh^bMaS+}DA=N5LKKVOmCo z<#wg38w1w41HvvzXn)XfS6HNhj;{Y6l>tX$$V;bT8oS<%lWF-l7_Y~H_kq|**A5|; zt9aGr@uCeqq67}vBaspMO!*Pw8&gSt6ylp|z||)~T>`w)NT;C}f<~rl ztKB&Yh}MUEbm~w=m--M$(?>W6sYGl%vj>SPnbp2NX05F*1KeTvd!X$%X1p_ATs6Pi zDOZ*rJeNUAB#eekOUJ&N%H%H4*berEPI+ZLucpY=WgimLriEIc1J>&x?)VVntsE;3 z`b&6!+NnxM001BWNklTz5y$A_%N)NPcqdEC9Ny+*YSB`aT-7&~ATrkb{uhC=!!1#- z_Ir()`~02aqtW-$*d#h~>88!Qx> z_g@bh-1|C~kKk*Pb=8FoQ1S*6Qw#ZM?fevojPE;$LLTZTO>_z93Vy{fx`3=Uo(2-h z4{#0smxCDJ7=1)sKyL3hd?#~@rcU9X2JqQJ;CK`!srwhnElsV5L#=TR{IF2oG>Qx? zBgX<0n-tKaUj|G?aginrTxj;^3@kr&or>n@kO!Gtu*mR8;N{52$zC51+*gxWUX0ED zK!FJ+avC1VuxJCPu_;}w>(mmb6cqJb8{*G`@=*uK>%M_C8+AW~FYn^K!6tfPjBJz$ zyqrTrUIWCk&DtXva9bWejfSqwO2>0xTvGV9;M17h$Fc_0(4w!D9f!tIQJ`K1h z{Dot=qD@BjTuluJX4K;P7~$SDS#|#dOPDw`E-Mdf1p3xPF|?C)-`B9yw9{2LjLVlc z^)OYvsj6zM!ec?`U_69sQ9)@`R$~ZfEM8*U7}dwh@S2Z)L3?zB1^NsdCEPwG-xV5x z)$C`d>^Q`WzTh+n!^&$;J@%M_i@qZrNyWx%j?&h`J4VMORkdDLgAjWd{$<1_xhAT@ z4K7?tje!Q>1%^vB+HQU1#pi_4)|mJ}=f&R{Vj6y#VwvU^vjn z@XZhcm)6n47&yI7D3?9}yf(b+s;O&P2wNexh1k+TkcXhoII!V%lx-i#3MghZghLVc z9CBFR*=DrEg*dJivZLm5hp;E1QSHgK#kS{;Zq z_+24hgH_1YBIBt==CTYu759Nq>JVD)Z?2CK?s4l_8XfirmoTx`=t{>vX(xwnjQR!d z^c1K`fM^}q3urJfc*50zL^ByqKrKQ#2p?2CX%i?*2PkH+qw~^CGCa$~hMzu`L~4Fv zeLca*#nghGrx+@*3hpGLP%qkL>n`vEyH8y7(I7Zm&#!J9oWuW5J3YAk19{@Jxk8qEDDW%$tciOhqCyIQu6 zi9lukh|3+uQ31bfhN+9AM429RtZJ%ioF)jfERdL?w;}r+Vf$MxTfy340;V4LX>@!A zaw)x!A4VH9Qx0;w^)aS#orDBeOCGl|qW!jbk0TA(i?M4H;`cXaEgItXJl7QzPzw)O z!d$-Z!1BnForZ`nl(5u;M6wN~?uPufIK?m381T8nB0l~eZN*-{UG&JMg{h7UXm0LD zZlP_-Jvy+*!2>Z+K$M4ZN`I)QV~8ZAF?9eeTr@*g$R$jiZEI;v;Mak3z%pB14U)n1 ziU|}u6@Cc)6$7Y^LIUuczJZf1ctc69V)s(JaF|xJR@QooPz3Q22q$!| zR?Rlu+*1@mcG;sSfo1SrWpX7ao4=WnU151_*ZV3d4^+v>8%C_*Q#)kD^gKBAxH)gV z5vXG~t!`(mPhw*vnx(Yn%=PMjOwSUqRP5g9J8=~|rKLv!_oadgdui7Gy|4XpdK%+j zPlebMC~y-s0{s>FW^3EwB^#;2T(~#KK82Noj1k^mPPQn&-r<-%(RR3R{5&}at3{~Pil)e{!F~Ns=2_c+dNzY{N;|mucF%T|F^nZpyht zY?+r1U+^X5-$v@KmiWVnO_-#u_~Mb1Q&`c#`Bbfg0ns}`^OM$8Wr_H`1h2FV9L9F_ zLr||%;FR2mB(#T*N`%KJ4%4QqZdKRXC#}JEizdE}+xu>pqfp)+WUZ>NWV0u^!arsP ze3_dnP#*nW%9*YM%2zRWranr_Y^r|cWW*&*8d!1Ix0Q{79;^d(xAq#Z6lYCzlBodv zN@MtFLRj~)jCynDZl=*aO0-Anl8Z`lN5>y-*kb|Hf@|+M#6+(HumqRZ#r~fbJ_wgl z-X?9JZM9L!@d)c&;++8kO<%oZQBsLMHRzTog)0D9s(~{7oF^}LkQtcrOPld8P9cc3M7?X zw=Qsr%9gTXyMy5!fu+^e9^hev*+GQY1>olckY0)QVa%i?yj=JPHS)5L)rQM~Uyc%h zYz;_=C-fg{lEgfN-(xsc3j9gl_ag`24185-PeBc?Q}1DQa#rN$mGAeX9Ph8!M+o;h zE6vrVv>yA9zNnSbbD26hhm@~{A35m03&|!lRqK#w@+dw|=@2ko8_-y)7|n7}Z-=R$Vi3kIF%ixZl_e*)O!Mp+vhGehvco~RLO(M(}B`B>f-g-AZ92< zA-7aD$X;v(%cVAz^X@>(QQIv>HI{Gi^O4+%JUXi(crLBxzNR$4UEGbPGmjDNYEc~F zf0J|I8#L_2{M1+8g4c^_3G%7t)p46-0hDKiI{Aj>I}{V;x1X*ax6ZATPldw;?&c{{-5v4?478;=Ytn#Pt%wre-GDiC(alk5bWV!?4V4VU z+xcOHphMhNZCpMUV!@#Sve~6ft2cTH?n|#~8haWN)SDZAA6R_n9wFKlDkg=n9t|^r zy?=w*1AQ0u_0~tGU?JycQSId_@EC~oE<(Oe%%I7k9@?!<)utLMB&M+^VkYsx=+p3J z7Cxq4@;GioWdHY0;u*lbQ5$0^^m9YG+erd4;PXi;#t=w`Wl5UY@>jw@-FA_A1ePn06Ml8%6C=7~y!Zm4!ZgU~Q-Lf@mHkH&2*O8YY3I#8J_q{yQ-fzNdO`Uuf}AuFS!BokYh zzR6%2Cdb4?F5Q?Xp$ucb@b^{H)qUq0AS!)~ExyX_Yqe~3NMh4~0hY)QOX)5jB_xnp ztM9{eOw9|?y!|w|1L*dX);++t88GRJi>`V9OvP_8tzvx7@5jJ6u_czx^5BEIvH-P@z47ZM=NJw~E zFujOMs-_D8n}z?x0buZ_o-z%{}h2PwLmv2%N-qE7Nr$EuUdi)ZJYib)|IM zR@8#K6OIA!CAbBz%&yGHc2g0)-vPo$bD%DUSK`zoQ)Ag^!VT7RzHiiQTpsj9as$HS z@ewhy%~Jb;}9B;3m@%6ybKDRD4;u~!)NEhdJ99h<5 zatA>@=K5z-4Lr&!0pYxAE__l#@19$Vpk=f(ZIqpeqG6 z@tbhW>Z;#hbuT>)`Nf{ySA-w$k~~fP2}E7=LuU__M~NqV>)}{l(GPKKY~4+8wMO(*wBY~2uin$ZsGe4CgxgLBbmfjbST4Ua6q2!vg1z}@bo zr#nqgyz6(9k#0x35nMQQF`))EqqROz9+gz#lCxA~`DK@&LtTjssz!$xKL_W%PB*Sk zt2DzU1ZE5Pwsn4p<^kti8+ebYVJg8Gf(UFgfxkhB>+_!= z0psD*;ZXMvK#3iAP)ZUYuE<#O4!L3eXfs=30cbYxj%4)>XCkux6yih9nyO3@boBrX zblrs*Xmnp{kYzY_JC2ujkG$-ij05c^8Uxmg3H=4(r-=3w&tr_|Y94Ap@?8?@h3@&h zrK1?E(eDX6DCPXG%GOaQl;DwBr}jJh|y579p-M^Tjt8S4Fw-pmMljBrmqOfc5{ zTjitrTS;ZL1DaTxHDKe9|+Lb7T?-YOEU56mYM=BUx<>D8tN(LU?$u2bPc z;jogjiPVrtZgS2o1vgt-4<|!6`yx$QyOo&%#TPCb`QX9OKVDSdEnk;$l#TKUKn=N4q;I30w z8yoWM7nQA47LLj4ES4syM026mwQPj-rUv6wG#m zPE~hi%SWmm^5Q$Wcl662&r(cMC8>=!-wI~|0N==ci?0n>CgZG0sL%2Xi<34mufZY> z{+yZLtGeu26eC~WkdWs!flu8or& zAwv?NyR)dC`>M_5K9`01z+FO6S9vLr=%PK|rVQ7NF-9hQHo7keiz&g}ZzRZF3NQ7x zl%(oi3NPr7SJ*P%c`Bwa0FTnYCG`QEx3YRXbRMh$nzc}5UPgytkp_EgP-?qQSz7mH zFRe@SveXb+uELDQ-Twv9zV6s-zL9%i{sa=(nmE8z1QhlltJuI+;vonD-R79;#wzP$ zu7|toE=AE4xxpb|hE^nvgLM{^O_NKjHZX+F(R{L~fvRoZ>2~P4uXbWN+b^gxOyO}T zZsb6^!yOtgX5>Uiv=hgSY>|PJxC`i7nz($dw`Ed{Xgu}-uNm|@M`j7``R~@tt2N!| z+?~B%A3NSx%M1ke=9}-6G`Wtdpj`}U5*^lMzetijPF?1rNnJ|orzd%$Iw(k&@1(AAPPlibk zNlxSIrP0RTBBdVFbyP-0Hk#$wE}A<;i~w9V-ST_W-I~v+Ej@y^jy1~XHl}a-)oPwT zRwXB%KbailT5aNIz`*v)E0u;-U&J`(Jjy9hZ*tA4?xN(8i2G%XX!Ua>ErGfLZr_#3 z=;k7jg7!{D^+0Z4%1%^y^gT{yslOl&Q)`w$y{RjuSvLY-6AFcL3F3{ftBEfQr!b92 z%KRGh*G|1TxHI5}*XzwN%3GK}FR$0f4tHb_iw=TszJ!SfZqiN`IE+t&9AV;J%*$Ye z2Ha?d*)uk`w8lN}DX4=Wk@f3~4QxLHTze(E2CX)4G#$CYirc_w+AX8muot(Nor+z# zeaU%?p?Drn!hE?Yg!TqC|51{^I3S^q4=;hFGnDWZq315yW!gs7?H-pw^EQ_Ll_j`` zQvtKqMjdSf-RD)ODruH=Xbis{(e>rpHcG{07>UK�x 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

中国狮子联会心连心服务队2020-2021年度队长及队长团队成员推举会议

会员代表承诺书

本人作为本次推举会议成员,郑重做出如下承诺:

一、严格遵守会议纪律要求,保证全程参会,认真履行会员代表权利义务。

二、认真履行会员代表职责,公平公正行使推举权。

三、本人愿意接受大会监督。

承 诺 人:{username}

手机号码:{mobile}

承诺日期:2020年6月7日

', 0, '2020-05-03 23:45:44', '2020-06-05 02:41:11', NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `article_audits` +-- + +CREATE TABLE `article_audits` ( + `id` int(10) UNSIGNED NOT NULL, + `article_id` int(10) UNSIGNED NOT NULL, + `user_id` int(10) UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `failed_jobs` +-- + +CREATE TABLE `failed_jobs` ( + `id` bigint(20) UNSIGNED NOT NULL, + `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `items` +-- + +CREATE TABLE `items` ( + `id` bigint(20) UNSIGNED NOT NULL, + `vote_id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `desc2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `sort` int(10) UNSIGNED NOT NULL DEFAULT '99', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `item_logs` +-- + +CREATE TABLE `item_logs` ( + `id` bigint(20) UNSIGNED NOT NULL, + `vote_id` int(10) UNSIGNED NOT NULL, + `item_id` bigint(20) UNSIGNED NOT NULL, + `user_id` bigint(20) UNSIGNED NOT NULL, + `result` int(10) UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `migrations` +-- + +CREATE TABLE `migrations` ( + `id` int(10) UNSIGNED NOT NULL, + `migration` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `migrations` +-- + +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES +(1, '2014_10_12_000000_create_users_table', 1), +(2, '2019_08_19_000000_create_failed_jobs_table', 1), +(3, '2016_01_04_173148_create_admin_tables', 2), +(4, '2020_05_01_235031_create_items_table', 3), +(5, '2020_05_01_235326_create_item_logs_table', 4), +(6, '2018_11_07_000000_create_sms_table', 5), +(7, '2017_07_17_040159_create_config_table', 6); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `sms` +-- + +CREATE TABLE `sms` ( + `id` int(10) UNSIGNED NOT NULL, + `mobile` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `channel` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `used` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `users` +-- + +CREATE TABLE `users` ( + `id` bigint(20) UNSIGNED NOT NULL, + `parent_id` int(10) UNSIGNED NOT NULL, + `mobile` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `sign` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `type` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `votes` +-- + +CREATE TABLE `votes` ( + `id` int(10) UNSIGNED NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, + `max` int(10) UNSIGNED DEFAULT '0', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `rules` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `archives` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- 转储表的索引 +-- + +-- +-- 表的索引 `admin_config` +-- +ALTER TABLE `admin_config` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_config_name_unique` (`name`); + +-- +-- 表的索引 `admin_menu` +-- +ALTER TABLE `admin_menu` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `admin_operation_log` +-- +ALTER TABLE `admin_operation_log` + ADD PRIMARY KEY (`id`), + ADD KEY `admin_operation_log_user_id_index` (`user_id`); + +-- +-- 表的索引 `admin_permissions` +-- +ALTER TABLE `admin_permissions` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_permissions_name_unique` (`name`), + ADD UNIQUE KEY `admin_permissions_slug_unique` (`slug`); + +-- +-- 表的索引 `admin_roles` +-- +ALTER TABLE `admin_roles` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_roles_name_unique` (`name`), + ADD UNIQUE KEY `admin_roles_slug_unique` (`slug`); + +-- +-- 表的索引 `admin_role_menu` +-- +ALTER TABLE `admin_role_menu` + ADD KEY `admin_role_menu_role_id_menu_id_index` (`role_id`,`menu_id`); + +-- +-- 表的索引 `admin_role_permissions` +-- +ALTER TABLE `admin_role_permissions` + ADD KEY `admin_role_permissions_role_id_permission_id_index` (`role_id`,`permission_id`); + +-- +-- 表的索引 `admin_role_users` +-- +ALTER TABLE `admin_role_users` + ADD KEY `admin_role_users_role_id_user_id_index` (`role_id`,`user_id`); + +-- +-- 表的索引 `admin_users` +-- +ALTER TABLE `admin_users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_users_username_unique` (`username`); + +-- +-- 表的索引 `admin_user_permissions` +-- +ALTER TABLE `admin_user_permissions` + ADD KEY `admin_user_permissions_user_id_permission_id_index` (`user_id`,`permission_id`); + +-- +-- 表的索引 `articles` +-- +ALTER TABLE `articles` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `article_audits` +-- +ALTER TABLE `article_audits` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `failed_jobs` +-- +ALTER TABLE `failed_jobs` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `items` +-- +ALTER TABLE `items` + ADD PRIMARY KEY (`id`), + ADD KEY `vote_id` (`vote_id`); + +-- +-- 表的索引 `item_logs` +-- +ALTER TABLE `item_logs` + ADD PRIMARY KEY (`id`), + ADD KEY `item_id` (`item_id`), + ADD KEY `user_id` (`user_id`), + ADD KEY `vote_id` (`vote_id`); + +-- +-- 表的索引 `migrations` +-- +ALTER TABLE `migrations` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `sms` +-- +ALTER TABLE `sms` + ADD PRIMARY KEY (`id`), + ADD KEY `sms_mobile_channel_index` (`mobile`,`channel`); + +-- +-- 表的索引 `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `mobile` (`mobile`); + +-- +-- 表的索引 `votes` +-- +ALTER TABLE `votes` + ADD PRIMARY KEY (`id`); + +-- +-- 在导出的表使用AUTO_INCREMENT +-- + +-- +-- 使用表AUTO_INCREMENT `admin_config` +-- +ALTER TABLE `admin_config` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- 使用表AUTO_INCREMENT `admin_menu` +-- +ALTER TABLE `admin_menu` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; + +-- +-- 使用表AUTO_INCREMENT `admin_operation_log` +-- +ALTER TABLE `admin_operation_log` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `admin_permissions` +-- +ALTER TABLE `admin_permissions` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- 使用表AUTO_INCREMENT `admin_roles` +-- +ALTER TABLE `admin_roles` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `admin_users` +-- +ALTER TABLE `admin_users` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `articles` +-- +ALTER TABLE `articles` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- 使用表AUTO_INCREMENT `article_audits` +-- +ALTER TABLE `article_audits` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `failed_jobs` +-- +ALTER TABLE `failed_jobs` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `items` +-- +ALTER TABLE `items` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `item_logs` +-- +ALTER TABLE `item_logs` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `migrations` +-- +ALTER TABLE `migrations` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- 使用表AUTO_INCREMENT `sms` +-- +ALTER TABLE `sms` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `users` +-- +ALTER TABLE `users` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `votes` +-- +ALTER TABLE `votes` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/package.json b/package.json new file mode 100644 index 0000000..3729fb7 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", + "watch": "npm run development -- --watch", + "watch-poll": "npm run watch -- --watch-poll", + "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", + "prod": "npm run production", + "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" + }, + "devDependencies": { + "axios": "^0.19", + "cross-env": "^7.0", + "laravel-mix": "^5.0.1", + "lodash": "^4.17.13", + "resolve-url-loader": "^3.1.0", + "sass": "^1.15.2", + "sass-loader": "^8.0.0" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..964ff0c --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..4584cbc --- /dev/null +++ b/public/index.php @@ -0,0 +1,60 @@ + + */ + +define('LARAVEL_START', microtime(true)); + +/* +|-------------------------------------------------------------------------- +| Register The Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader for +| our application. We just need to utilize it! We'll simply require it +| into the script here so that we don't have to worry about manual +| loading any of our classes later on. It feels great to relax. +| +*/ + +require __DIR__.'/../vendor/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Turn On The Lights +|-------------------------------------------------------------------------- +| +| We need to illuminate PHP development, so let us turn on the lights. +| This bootstraps the framework and gets it ready for use, then it +| will load up this application so that we can run it and send +| the responses back to the browser and delight our users. +| +*/ + +$app = require_once __DIR__.'/../bootstrap/app.php'; + +/* +|-------------------------------------------------------------------------- +| Run The Application +|-------------------------------------------------------------------------- +| +| Once we have the application, we can handle the incoming request +| through the kernel, and send the associated response back to +| the client's browser allowing them to enjoy the creative +| and wonderful application we have prepared for them. +| +*/ + +$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); + +$response = $kernel->handle( + $request = Illuminate\Http\Request::capture() +); + +$response->send(); + +$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/static/css/mzui.css b/public/static/css/mzui.css new file mode 100644 index 0000000..24d4847 --- /dev/null +++ b/public/static/css/mzui.css @@ -0,0 +1,5453 @@ +/*! + * MZUI: standard - v1.0.1 - 2018-01-09 + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ + +/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ +/** + * 1. Change the default font family in all browsers (opinionated). + * 2. Prevent adjustments of font size after orientation changes in IE and iOS. + */ +html +{ + font-family: sans-serif; + /* 1 */ + + -webkit-text-size-adjust: 100%; + /* 2 */ +} +/** + * Remove the margin in all browsers (opinionated). + */ +body +{ + margin: 0; +} +/* HTML5 display definitions + ========================================================================== */ +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + * 2. Add the correct display in IE. + */ +/** + * Add the correct display in IE 9-. + */ +/** + * Add the correct display in iOS 4-7. + */ +audio:not([controls]) +{ + display: none; + + height: 0; +} +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress +{ + vertical-align: baseline; +} +/** + * Add the correct display in IE 10-. + * 1. Add the correct display in IE. + */ +/* Links + ========================================================================== */ +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ +a +{ + -webkit-text-decoration-skip: objects; + /* 2 */ +} +/** + * Remove the outline on focused links when they are also active or hovered + * in all browsers (opinionated). + */ +/* Text-level semantics + ========================================================================== */ +/** + * 1. Remove the bottom border in Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] +{ + text-decoration: underline dotted; + /* 2 */ +} +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong +{ + font-weight: bolder; +} +/** + * Add the correct font style in Android 4.3-. + */ +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 +{ + font-size: 2em; + + margin: .67em 0; +} +/** + * Add the correct background and color in IE 9-. + */ +/** + * Add the correct font size in all browsers. + */ +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup +{ + font-size: 75%; + line-height: 0; + + position: relative; + + vertical-align: baseline; +} +sub +{ + bottom: -.25em; +} +sup +{ + top: -.5em; +} +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10-. + */ +/** + * Hide the overflow in IE. + */ +/* Grouping content + ========================================================================== */ +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +pre, +samp +{ + font-family: monospace, sans-serif; + /* 1 */ + font-size: 1em; + /* 2 */ +} +/** + * Add the correct margin in IE 8. + */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +/* Forms + ========================================================================== */ +/** + * 1. Change font properties to `inherit` in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +select, +textarea +{ + font: inherit; + /* 1 */ + + margin: 0; + /* 2 */ +} +/** + * Restore the font weight unset by the previous rule. + */ +optgroup +{ + font-weight: bold; +} +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ +button, +html [type='button'], +[type='reset'], +[type='submit'] +{ + -webkit-appearance: button; + /* 2 */ +} +/** + * Remove the inner border and padding in Firefox. + */ +/** + * Restore the focus styles unset by the previous rule. + */ +/** + * Change the border, margin, and padding in all browsers (opinionated). + */ +fieldset +{ + margin: 0 2px; + padding: .35em .625em .75em; + + border: 1px solid #c0c0c0; +} +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend +{ + padding: 0; + /* 3 */ +} +/** + * Remove the default vertical scrollbar in IE. + */ +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button +{ + height: auto; +} +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type='search'] +{ + /* 1 */ + outline-offset: -2px; + + -webkit-appearance: textfield; + /* 2 */ +} +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. + */ +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration +{ + -webkit-appearance: none; +} +/** + * Correct the text style of placeholders in Chrome, Edge, and Safari. + */ +::-webkit-input-placeholder +{ + opacity: .54; + color: inherit; +} +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button +{ + /* 1 */ + font: inherit; + + -webkit-appearance: button; + /* 2 */ +} +html +{ + font-size: 20px; + + box-sizing: border-box; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +*, +*:before, +*:after +{ + box-sizing: inherit; +} +body +{ + font-family: 'Helvetica Neue', Helvetica, 'Microsoft Yahei', 'PingFang SC', 'Hiragino Sans GB', 'WenQuanYi Micro Hei', sans-serif; + font-size: .7rem; + line-height: 1.42857143; + + color: #333; + background-color: rgba(0, 0, 0, .055); +} +a +{ + cursor: pointer; + text-decoration: none; + + color: inherit; +} +a, +area, +button, +[role='button'], +input, +label, +select, +summary, +textarea +{ + -ms-touch-action: manipulation; + touch-action: manipulation; +} +img +{ + max-width: 100%; + height: auto; + + vertical-align: middle; +} +table +{ + max-width: 100%; + + border-collapse: collapse; +} +th +{ + text-align: left; +} +pre +{ + overflow: auto; + + margin: 0; +} +ul, +ol, +p, +table +{ + margin: 0; +} +.clearfix:before, +.clearfix:after +{ + display: table; + + content: ' '; +} +.clearfix:after +{ + clear: both; +} +.pull-right +{ + float: right !important; +} +.pull-left +{ + float: left !important; +} +.block +{ + display: block !important; +} +.inline +{ + display: inline !important; +} +.inline-block +{ + display: inline-block !important; +} +.template, +.hide-empty:empty, +.hidden +{ + display: none!important; +} +.invisible +{ + visibility: hidden; +} +.fluid +{ + width: 100%!important; +} +.fluid.column, +.fluid-v +{ + height: 100%!important; +} +h1, +h2, +h3, +h4, +h5, +h6 +{ + font-family: inherit; + font-weight: bold; + line-height: 1.1; + + margin: 0 0 .5rem 0; + + color: inherit; +} +h1 +{ + font-size: 1.2rem; +} +h2 +{ + font-size: 1rem; +} +h3 +{ + font-size: .9rem; +} +h4 +{ + font-size: .8rem; +} +h5 +{ + font-size: .7rem; +} +h6 +{ + font-size: .6rem; +} +.lead +{ + font-size: .8rem; + font-weight: 300; +} +small, +.small +{ + font-size: 85.71428571%; +} +.large +{ + font-size: 150%; +} +strong, +.strong +{ + font-weight: bolder; +} +.thin +{ + font-weight: lighter; +} +mark, +.mark +{ + padding: .1rem; + + background-color: #fff0d5; +} +.text-link +{ + color: #3280fc; +} +.text-left +{ + text-align: left; +} +.text-right +{ + text-align: right; +} +.text-center +{ + text-align: center; +} +.text-nowrap +{ + white-space: nowrap; +} +.text-ellipsis +{ + overflow: hidden; + + white-space: nowrap; + text-overflow: ellipsis; +} +.text-lowercase +{ + text-transform: lowercase; +} +.text-uppercase +{ + text-transform: uppercase; +} +.text-capitalize +{ + text-transform: capitalize; +} +.text-line-through +{ + text-decoration: line-through; +} +.text-hide +{ + font: 0/0 a; + + color: transparent; + text-shadow: none; +} +hr +{ + margin-top: .5rem; + margin-bottom: .5rem; + + border: 0; + border-top: .05rem solid rgba(0, 0, 0, .1); +} +hr.space +{ + margin-bottom: .5rem; + + border-color: transparent; +} +blockquote +{ + margin: .5rem; + padding: .5rem .5rem; + + border-left: .25rem solid rgba(0, 0, 0, .1); +} +ul, +ol +{ + margin: .5rem; + padding-left: 1rem; +} +p, +ul, +ol, +blockquote, +pre, +table, +img, +video, +iframe, +object, +embed +{ + margin: 0 0 .5rem 0; +} +.page +{ + position: fixed; + z-index: 1050; + top: 0; + right: 0; + bottom: 0; + left: 0; + + overflow-y: auto; + + background-color: rgba(0, 0, 0, .055); +} +.container +{ + margin-right: auto; + margin-left: auto; + padding-right: .5rem; + padding-left: .5rem; +} +@media (min-width: 38.4rem) +{ + .container + { + max-width: 36rem; + } +} +@media (min-width: 49.6rem) +{ + .container + { + max-width: 47rem; + } +} +@media (min-width: 60rem) +{ + .container + { + max-width: 59rem; + } +} +.dock +{ + position: absolute!important; +} +.affix +{ + position: fixed!important; +} +.relative +{ + position: relative!important; +} +.static +{ + position: static!important; +} +.affix, +.dock, +.dock-top, +.dock-bottom, +.dock-left, +.dock-right +{ + position: absolute; + z-index: 1030; + top: 0; + right: 0; + bottom: 0; + left: 0; + + transition: left .4s cubic-bezier(.175, .885, .32, 1), top .4s cubic-bezier(.175, .885, .32, 1), right .4s cubic-bezier(.175, .885, .32, 1), bottom .4s cubic-bezier(.175, .885, .32, 1), transform .4s cubic-bezier(.175, .885, .32, 1), box-shadow .4s cubic-bezier(.175, .885, .32, 1); + transform: translate(0%, 0%); +} +.dock-top +{ + bottom: auto; +} +.dock-bottom +{ + top: auto; +} +.dock-left +{ + right: auto; +} +.dock-right +{ + left: auto; +} +.affix.dock-top +{ + box-shadow: inset 0 -.05rem 0 rgba(0, 0, 0, .1); +} +.affix.dock-bottom +{ + box-shadow: inset 0 .05rem 0 rgba(0, 0, 0, .1); +} +.in-scroll .affix.dock-top +{ + box-shadow: rgba(0, 0, 0, .12) 0 .05rem .3rem, rgba(0, 0, 0, .15) 0 .05rem .2rem; +} +.in-scroll .affix.dock-bottom +{ + box-shadow: rgba(0, 0, 0, .12) 0 -.05rem .3rem, rgba(0, 0, 0, .15) 0 -.05rem .2rem; +} +.in-scroll.scroll-down .affix.dock-top.dock-auto +{ + transform: translate(0, -99%); + + box-shadow: none; +} +.in-scroll.scroll-down .affix.dock-bottom.dock-auto +{ + transform: translate(0, 99%); + + box-shadow: none; +} +.listen-scroll +{ + transition: box-shadow .4s cubic-bezier(.175, .885, .32, 1); +} +.listen-scroll.in-scroll +{ + box-shadow: inset rgba(0, 0, 0, .05) 0 .05rem .25rem, inset rgba(0, 0, 0, .08) 0 .05rem .1rem; +} +.flex +{ + display: -ms-flexbox!important; + display: flex!important; +} +.flex-inline +{ + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} +.flex-wrap +{ + -ms-flex-wrap: wrap!important; + flex-wrap: wrap!important; +} +.flex-nowrap +{ + -ms-flex-wrap: nowrap!important; + flex-wrap: nowrap!important; +} +.space-between +{ + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} +.justify-start +{ + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} +.justify-end +{ + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} +.flex-center, +.justify-center +{ + -ms-flex-pack: center!important; + justify-content: center!important; +} +.space-around +{ + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} +.stretch +{ + -ms-flex-align: stretch!important; + align-items: stretch!important; +} +.align-start +{ + -ms-flex-align: start !important; + align-items: flex-start !important; +} +.align-end +{ + -ms-flex-align: end !important; + align-items: flex-end !important; +} +.flex-middle, +.align-middle +{ + -ms-flex-align: center!important; + align-items: center!important; +} +.content-start +{ + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} +.content-end +{ + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} +.content-center +{ + -ms-flex-line-pack: center!important; + align-content: center!important; +} +.content-space-between +{ + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} +.content-space-around +{ + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} +.content-stretch +{ + -ms-flex-line-pack: stretch!important; + align-content: stretch!important; +} +.center-content +{ + display: -ms-flexbox!important; + display: flex!important; + + -ms-flex-pack: center!important; + justify-content: center!important; + -ms-flex-align: center!important; + align-items: center!important; +} +.flex-first +{ + -ms-flex-order: -1; + order: -1; +} +.flex-last +{ + -ms-flex-order: 1; + order: 1; +} +.flex-auto +{ + -ms-flex: auto !important; + flex: auto !important; +} +.flex-none +{ + -ms-flex: none !important; + flex: none !important; +} +.flex-1 +{ + -ms-flex: 1 !important; + flex: 1 !important; +} +.selft-stretch +{ + -ms-flex-item-align: stretch!important; + -ms-grid-row-align: stretch!important; + align-self: stretch!important; +} +.align-self-start +{ + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} +.align-self-end +{ + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} +.align-self-middle +{ + -ms-flex-item-align: center!important; + -ms-grid-row-align: center!important; + align-self: center!important; +} +.justified +{ + display: -ms-flexbox; + display: flex; + + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.justified > * +{ + -ms-flex: auto !important; + flex: auto !important; +} +.justified > .flex-none +{ + -ms-flex: none !important; + flex: none !important; +} +.row, +.column +{ + display: -ms-flexbox; + display: flex; + + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + -ms-flex-line-pack: stretch; + align-content: stretch; + -ms-flex: auto; + flex: auto; +} +.row.single, +.column.single +{ + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} +.row, +.flex-row +{ + flex-direction: row; + + -ms-flex-direction: row; +} +.row-reverse +{ + flex-direction: row-reverse; + + -ms-flex-direction: row-reverse; +} +.column, +.flex-column +{ + flex-direction: column; + + -ms-flex-direction: column; +} +.column-reverse +{ + flex-direction: column-reverse; + + -ms-flex-direction: column-reverse; +} +.cell, +[class^='cell-'], +[class*=' cell-'] +{ + display: -ms-flexbox; + display: flex; + + -ms-flex-align: stretch; + align-items: stretch; +} +.tile, +.cell:not(.fixed) +{ + max-width: 100%; + + -ms-flex: auto; + flex: auto; +} +.cell.fixed, +[class^='cell-'], +[class*=' cell-'] +{ + -ms-flex: none; + flex: none; +} +.row > .cell-1 +{ + width: 8.33333333%; +} +.row > .cell-2 +{ + width: 16.66666667%; +} +.row > .cell-3 +{ + width: 25%; +} +.row > .cell-4 +{ + width: 33.33333333%; +} +.row > .cell-5 +{ + width: 41.66666667%; +} +.row > .cell-6 +{ + width: 50%; +} +.row > .cell-7 +{ + width: 58.33333333%; +} +.row > .cell-8 +{ + width: 66.66666667%; +} +.row > .cell-9 +{ + width: 75%; +} +.row > .cell-10 +{ + width: 83.33333333%; +} +.row > .cell-11 +{ + width: 91.66666667%; +} +.row > .cell-12 +{ + width: 100%; +} +.column > .cell-1 +{ + height: 8.33333333%; +} +.column > .cell-2 +{ + height: 16.66666667%; +} +.column > .cell-3 +{ + height: 25%; +} +.column > .cell-4 +{ + height: 33.33333333%; +} +.column > .cell-5 +{ + height: 41.66666667%; +} +.column > .cell-6 +{ + height: 50%; +} +.column > .cell-7 +{ + height: 58.33333333%; +} +.column > .cell-8 +{ + height: 66.66666667%; +} +.column > .cell-9 +{ + height: 75%; +} +.column > .cell-10 +{ + height: 83.33333333%; +} +.column > .cell-11 +{ + height: 91.66666667%; +} +.column > .cell-12 +{ + height: 100%; +} +.row, +.column +{ + margin: -.25rem -.25rem 0; +} +.row:not(:last-child), +.column:not(:last-child) +{ + margin-bottom: .25rem; +} +.row .row, +.column .row, +.row .column, +.column .column +{ + margin: -.25rem; +} +.row .cell, +.column .cell, +.row [class^='cell-'], +.column [class^='cell-'], +.row [class*=' cell-'], +.column [class*=' cell-'] +{ + padding: .25rem; +} +.row.gutter-lg, +.column.gutter-lg +{ + margin: -.5rem -.5rem 0; +} +.row.gutter-lg:not(:last-child), +.column.gutter-lg:not(:last-child) +{ + margin-bottom: .5rem; +} +.row.gutter-lg .row, +.column.gutter-lg .row, +.row.gutter-lg .column, +.column.gutter-lg .column +{ + margin: -.5rem; +} +.row.gutter-lg .cell, +.column.gutter-lg .cell, +.row.gutter-lg [class^='cell-'], +.column.gutter-lg [class^='cell-'], +.row.gutter-lg [class*=' cell-'], +.column.gutter-lg [class*=' cell-'] +{ + padding: .5rem; +} +.row.gutter-sm, +.column.gutter-sm +{ + margin: -.125rem -.125rem 0; +} +.row.gutter-sm:not(:last-child), +.column.gutter-sm:not(:last-child) +{ + margin-bottom: .125rem; +} +.row.gutter-sm .row, +.column.gutter-sm .row, +.row.gutter-sm .column, +.column.gutter-sm .column +{ + margin: -.125rem; +} +.row.gutter-sm .cell, +.column.gutter-sm .cell, +.row.gutter-sm [class^='cell-'], +.column.gutter-sm [class^='cell-'], +.row.gutter-sm [class*=' cell-'], +.column.gutter-sm [class*=' cell-'] +{ + padding: .125rem; +} +.row.gutterless, +.column.gutterless, +.row.gutterless .row, +.column.gutterless .row, +.row.gutterless .column, +.column.gutterless .column +{ + margin: 0!important; +} +.row.gutterless .cell, +.column.gutterless .cell, +.row.gutterless [class^='cell-'], +.column.gutterless [class^='cell-'], +.row.gutterless [class*=' cell-'], +.column.gutterless [class*=' cell-'] +{ + padding: 0 !important; +} +.scroll-x +{ + overflow-x: auto; +} +.scroll-y +{ + overflow-y: auto; +} +.scroll-none +{ + overflow: hidden; +} +.fade +{ + transition: .2s cubic-bezier(.175, .885, .32, 1); + + opacity: 0; +} +.fade.in +{ + opacity: 1; +} +.scale +{ + transition: .2s cubic-bezier(.175, .885, .32, 1); + transform: scale(.8); +} +.scale.in +{ + transform: scale(1); +} +.collapse +{ + display: none; +} +.collapse.in +{ + display: block; +} +.collapsing +{ + position: relative; + + overflow: hidden; + + transition: ease height .2s; +} +[class^='scale-from-'], +[class*=' scale-from-'], +[class^='enter-from-'], +[class*=' enter-from-'] +{ + transition: .2s cubic-bezier(.175, .885, .32, 1); +} +[class^='scale-from-'].in, +[class*=' scale-from-'].in, +[class^='enter-from-'].in, +[class*=' enter-from-'].in +{ + transform: scale(1) translate(0%, 0%); + + opacity: 1; +} +.scale-from-top +{ + transform: scale(.8) translate(0, -30%); + + opacity: 0; +} +.scale-from-bottom +{ + transform: scale(.8) translate(0, 30%); + + opacity: 0; +} +.scale-from-left +{ + transform: scale(.8) translate(-30%, 0); + + opacity: 0; +} +.scale-from-right +{ + transform: scale(.8) translate(30%, 0); + + opacity: 0; +} +.scale-from-center +{ + transform: scale(.8); + + opacity: 0; +} +.enter-from-top +{ + transform: translate(0, -105%); +} +.enter-from-bottom +{ + transform: translate(0, 105%); +} +.enter-from-left +{ + transform: translate(-105%, 0); +} +.enter-from-right +{ + transform: translate(105%, 0); +} +.enter-from-center +{ + transform: scale(.8) translate(0, 50%); + + opacity: 0; +} +@keyframes spin +{ + 0% + { + transform: rotate(0deg); + } + 100% + { + transform: rotate(359deg); + } +} +.spin +{ + animation: spin 2s infinite linear; +} +.spin-fast +{ + animation: spin 1s infinite linear; +} +@font-face +{ + font-family: ZenIcon; + font-weight: normal; + font-style: normal; + + src: url('../fonts/zenicon.eot?v=1.3.0'); + src: url('../fonts/zenicon.eot?#iefix&v=1.3.0') format('embedded-opentype'), url('../fonts/zenicon.woff?v=1.3.0') format('woff'), url('../fonts/zenicon.ttf?v=1.3.0') format('truetype'), url('../fonts/zenicon.svg#regular?v=1.3.0') format('svg'); +} +[class^='icon-'], +[class*=' icon-'] +{ + font-family: ZenIcon; + font-size: .7rem; + font-weight: normal; + font-style: normal; + font-variant: normal; + + text-transform: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon:before +{ + display: inline-block; + + min-width: .7rem; + + text-align: center; +} +.icon-3x +{ + font-size: 2.1rem; +} +.icon-2x +{ + font-size: 1.4rem; +} +a .icon.spin +{ + display: inline-block; + + text-decoration: none; +} +.icon.rotate-90:before, +.icon.rotate-180:before, +.icon.rotate-270:before, +.icon.flip-h:before, +.icon.flip-v:before +{ + display: inline-block; +} +.icon-resize:before +{ + content: '\e667'; +} +.icon-expand-full:before +{ + content: '\e6a3'; +} +.icon-arrows-alt:before +{ + content: '\e6a3'; +} +.icon-fullscreen:before +{ + content: '\e6a3'; +} +.icon-collapse-full:before +{ + content: '\e682'; +} +.icon-yinyang:before +{ + content: '\e687'; +} +.icon-taiji:before +{ + content: '\e687'; +} +.icon-window:before +{ + content: '\e68e'; +} +.icon-window-alt:before +{ + content: '\e68f'; +} +.icon-carousel:before +{ + content: '\e6b0'; +} +.icon-spinner-snake:before +{ + content: '\e97b'; +} +.icon-spinner-indicator:before +{ + content: '\e97c'; +} +.icon-check-board:before +{ + content: '\e9b8'; +} +.icon-bar-chart:before +{ + content: '\f080'; +} +.icon-bar-chart-o:before +{ + content: '\f080'; +} +.icon-github:before +{ + content: '\f09b'; +} +.icon-dot-circle:before +{ + content: '\f192'; +} +.icon-dot-circle-o:before +{ + content: '\f192'; +} +.icon-cube-alt:before +{ + content: '\f1b2'; +} +.icon-cubes:before +{ + content: '\f1b3'; +} +.icon-file-pdf:before +{ + content: '\f1c1'; +} +.icon-file-word:before +{ + content: '\f1c2'; +} +.icon-file-excel:before +{ + content: '\f1c3'; +} +.icon-file-powerpoint:before +{ + content: '\f1c4'; +} +.icon-file-image:before +{ + content: '\f1c5'; +} +.icon-file-photo:before +{ + content: '\f1c5'; +} +.icon-file-picture:before +{ + content: '\f1c5'; +} +.icon-file-archive:before +{ + content: '\f1c6'; +} +.icon-file-zip:before +{ + content: '\f1c6'; +} +.icon-file-audio:before +{ + content: '\f1c7'; +} +.icon-file-sound:before +{ + content: '\f1c7'; +} +.icon-file-movie:before +{ + content: '\f1c8'; +} +.icon-file-video:before +{ + content: '\f1c8'; +} +.icon-file-code:before +{ + content: '\f1c9'; +} +.icon-circle-o-notch:before +{ + content: '\f1ce'; +} +.icon-chanzhi:before +{ + content: '\e906'; +} +.icon-chanzhi-pro:before +{ + content: '\e905'; +} +.icon-zsite:before +{ + content: '\e904'; +} +.icon-zsite-pro:before +{ + content: '\e903'; +} +.icon-qq:before +{ + content: '\f600'; +} +.icon-wechat:before +{ + content: '\f1d7'; +} +.icon-weixin:before +{ + content: '\f1d7'; +} +.icon-history:before +{ + content: '\f1da'; +} +.icon-circle-thin:before +{ + content: '\f1db'; +} +.icon-sliders:before +{ + content: '\f1de'; +} +.icon-newspaper-o:before +{ + content: '\f1ea'; +} +.icon-calculator:before +{ + content: '\f1ec'; +} +.icon-paint-brush:before +{ + content: '\f1fc'; +} +.icon-area-chart:before +{ + content: '\f1fe'; +} +.icon-pie-chart:before +{ + content: '\f200'; +} +.icon-line-chart:before +{ + content: '\f201'; +} +.icon-toggle-off:before +{ + content: '\f204'; +} +.icon-toggle-on:before +{ + content: '\f205'; +} +.icon-diamond:before +{ + content: '\f219'; +} +.icon-venus:before +{ + content: '\f221'; +} +.icon-mars:before +{ + content: '\f222'; +} +.icon-server:before +{ + content: '\f233'; +} +.icon-music:before +{ + content: '\e602'; +} +.icon-search:before +{ + content: '\e603'; +} +.icon-envelope:before +{ + content: '\e604'; +} +.icon-heart:before +{ + content: '\e605'; +} +.icon-star:before +{ + content: '\e606'; +} +.icon-star-empty:before +{ + content: '\e607'; +} +.icon-user:before +{ + content: '\e608'; +} +.icon-film:before +{ + content: '\e609'; +} +.icon-th-large:before +{ + content: '\e60a'; +} +.icon-th:before +{ + content: '\e60b'; +} +.icon-th-list:before +{ + content: '\e60c'; +} +.icon-ok:before +{ + content: '\e60d'; +} +.icon-check:before +{ + content: '\e60d'; +} +.icon-remove:before +{ + content: '\d7'; +} +.icon-times:before +{ + content: '\d7'; +} +.icon-zoom-in:before +{ + content: '\e60f'; +} +.icon-zoom-out:before +{ + content: '\e610'; +} +.icon-off:before +{ + content: '\e611'; +} +.icon-cog:before +{ + content: '\e613'; +} +.icon-trash:before +{ + content: '\e614'; +} +.icon-home:before +{ + content: '\e615'; +} +.icon-file-o:before +{ + content: '\e616'; +} +.icon-file-alt:before +{ + content: '\e616'; +} +.icon-time:before +{ + content: '\e617'; +} +.icon-download-alt:before +{ + content: '\e618'; +} +.icon-download:before +{ + content: '\e619'; +} +.icon-upload:before +{ + content: '\e61a'; +} +.icon-inbox:before +{ + content: '\e61b'; +} +.icon-play-circle:before +{ + content: '\e61c'; +} +.icon-repeat:before +{ + content: '\e61d'; +} +.icon-refresh:before +{ + content: '\e61e'; +} +.icon-list-alt:before +{ + content: '\e61f'; +} +.icon-lock:before +{ + content: '\e620'; +} +.icon-flag:before +{ + content: '\e621'; +} +.icon-headphones:before +{ + content: '\e622'; +} +.icon-volume-off:before +{ + content: '\e623'; +} +.icon-volume-up:before +{ + content: '\e625'; +} +.icon-qrcode:before +{ + content: '\e626'; +} +.icon-barcode:before +{ + content: '\e627'; +} +.icon-tag:before +{ + content: '\e628'; +} +.icon-tags:before +{ + content: '\e629'; +} +.icon-book:before +{ + content: '\e62a'; +} +.icon-bookmark:before +{ + content: '\e62b'; +} +.icon-print:before +{ + content: '\e62c'; +} +.icon-camera:before +{ + content: '\e62d'; +} +.icon-font:before +{ + content: '\e62e'; +} +.icon-bold:before +{ + content: '\e62f'; +} +.icon-italic:before +{ + content: '\f033'; +} +.icon-header:before +{ + content: '\f1dc'; +} +.icon-underline:before +{ + content: '\f0cd'; +} +.icon-strikethrough:before +{ + content: '\f0cc'; +} +.icon-eraser:before +{ + content: '\f12d'; +} +.icon-align-justify:before +{ + content: '\e636'; +} +.icon-list:before +{ + content: '\e637'; +} +.icon-picture:before +{ + content: '\e63b'; +} +.icon-pencil:before +{ + content: '\e63c'; +} +.icon-map-marker:before +{ + content: '\e63d'; +} +.icon-adjust:before +{ + content: '\e63e'; +} +.icon-tint:before +{ + content: '\e63f'; +} +.icon-edit:before +{ + content: '\e640'; +} +.icon-share:before +{ + content: '\e641'; +} +.icon-checked:before +{ + content: '\e642'; +} +.icon-move:before +{ + content: '\e643'; +} +.icon-arrows:before +{ + content: '\e643'; +} +.icon-step-backward:before +{ + content: '\e644'; +} +.icon-fast-backward:before +{ + content: '\e645'; +} +.icon-backward:before +{ + content: '\e646'; +} +.icon-play:before +{ + content: '\e647'; +} +.icon-pause:before +{ + content: '\e648'; +} +.icon-stop:before +{ + content: '\e649'; +} +.icon-forward:before +{ + content: '\e64a'; +} +.icon-fast-forward:before +{ + content: '\e64b'; +} +.icon-step-forward:before +{ + content: '\e64c'; +} +.icon-eject:before +{ + content: '\e64d'; +} +.icon-chevron-left:before +{ + content: '\e64e'; +} +.icon-chevron-right:before +{ + content: '\e64f'; +} +.icon-plus-sign:before +{ + content: '\e650'; +} +.icon-minus-sign:before +{ + content: '\e651'; +} +.icon-remove-sign:before +{ + content: '\e652'; +} +.icon-ok-sign:before +{ + content: '\e653'; +} +.icon-check-circle:before +{ + content: '\e653'; +} +.icon-question-sign:before +{ + content: '\e654'; +} +.icon-info-sign:before +{ + content: '\e655'; +} +.icon-remove-circle:before +{ + content: '\e657'; +} +.icon-ok-circle:before +{ + content: '\e658'; +} +.icon-check-circle-o:before +{ + content: '\e658'; +} +.icon-ban-circle:before +{ + content: '\e659'; +} +.icon-arrow-left:before +{ + content: '\e65a'; +} +.icon-arrow-right:before +{ + content: '\e65b'; +} +.icon-arrow-up:before +{ + content: '\e65c'; +} +.icon-arrow-down:before +{ + content: '\e65d'; +} +.icon-share-alt:before +{ + content: '\e65e'; +} +.icon-resize-full:before +{ + content: '\e65f'; +} +.icon-resize-small:before +{ + content: '\e660'; +} +.icon-plus:before +{ + content: '\e661'; +} +.icon-minus:before +{ + content: '\e662'; +} +.icon-asterisk:before +{ + content: '\e663'; +} +.icon-exclamation-sign:before +{ + content: '\e664'; +} +.icon-gift:before +{ + content: '\e665'; +} +.icon-leaf:before +{ + content: '\e666'; +} +.icon-eye-open:before +{ + content: '\e668'; +} +.icon-eye-close:before +{ + content: '\e669'; +} +.icon-warning-sign:before +{ + content: '\e66a'; +} +.icon-plane:before +{ + content: '\e66b'; +} +.icon-calendar:before +{ + content: '\e66c'; +} +.icon-random:before +{ + content: '\e66d'; +} +.icon-comment:before +{ + content: '\e66e'; +} +.icon-chevron-up:before +{ + content: '\e670'; +} +.icon-chevron-down:before +{ + content: '\e671'; +} +.icon-shopping-cart:before +{ + content: '\e673'; +} +.icon-folder-close:before +{ + content: '\e674'; +} +.icon-folder-open:before +{ + content: '\e675'; +} +.icon-resize-v:before +{ + content: '\e676'; +} +.icon-resize-h:before +{ + content: '\e677'; +} +.icon-bar-chart-alt:before +{ + content: '\e678'; +} +.icon-camera-retro:before +{ + content: '\e679'; +} +.icon-key:before +{ + content: '\e67a'; +} +.icon-cogs:before +{ + content: '\e67b'; +} +.icon-comments:before +{ + content: '\e67c'; +} +.icon-thumbs-o-up:before +{ + content: '\e67d'; +} +.icon-thumbs-o-down:before +{ + content: '\e67e'; +} +.icon-star-half:before +{ + content: '\e67f'; +} +.icon-heart-empty:before +{ + content: '\e680'; +} +.icon-signout:before +{ + content: '\e681'; +} +.icon-pushpin:before +{ + content: '\e683'; +} +.icon-external-link:before +{ + content: '\e684'; +} +.icon-signin:before +{ + content: '\e685'; +} +.icon-trophy:before +{ + content: '\e686'; +} +.icon-upload-alt:before +{ + content: '\e688'; +} +.icon-lemon:before +{ + content: '\e689'; +} +.icon-phone:before +{ + content: '\e68a'; +} +.icon-check-empty:before +{ + content: '\e68b'; +} +.icon-bookmark-empty:before +{ + content: '\e68c'; +} +.icon-phone-sign:before +{ + content: '\e68d'; +} +.icon-credit:before +{ + content: '\e690'; +} +.icon-rss:before +{ + content: '\e691'; +} +.icon-hdd:before +{ + content: '\e692'; +} +.icon-bullhorn:before +{ + content: '\e693'; +} +.icon-bell:before +{ + content: '\e694'; +} +.icon-certificate:before +{ + content: '\e695'; +} +.icon-hand-right:before +{ + content: '\e696'; +} +.icon-hand-left:before +{ + content: '\e697'; +} +.icon-hand-up:before +{ + content: '\e698'; +} +.icon-hand-down:before +{ + content: '\e699'; +} +.icon-circle-arrow-left:before +{ + content: '\e69a'; +} +.icon-circle-arrow-right:before +{ + content: '\e69b'; +} +.icon-circle-arrow-up:before +{ + content: '\e69c'; +} +.icon-circle-arrow-down:before +{ + content: '\e69d'; +} +.icon-globe:before +{ + content: '\e69e'; +} +.icon-wrench:before +{ + content: '\e69f'; +} +.icon-tasks:before +{ + content: '\e6a0'; +} +.icon-filter:before +{ + content: '\e6a1'; +} +.icon-group:before +{ + content: '\e6a4'; +} +.icon-link:before +{ + content: '\e6a5'; +} +.icon-cloud:before +{ + content: '\e6a6'; +} +.icon-beaker:before +{ + content: '\e6a7'; +} +.icon-cut:before +{ + content: '\e6a8'; +} +.icon-copy:before +{ + content: '\e6a9'; +} +.icon-paper-clip:before +{ + content: '\e6aa'; +} +.icon-save:before +{ + content: '\e6ab'; +} +.icon-sign-blank:before +{ + content: '\e6ac'; +} +.icon-bars:before +{ + content: '\e6ad'; +} +.icon-reorder:before +{ + content: '\e6ad'; +} +.icon-list-ul:before +{ + content: '\e6ae'; +} +.icon-list-ol:before +{ + content: '\e6af'; +} +.icon-table:before +{ + content: '\e6b2'; +} +.icon-magic:before +{ + content: '\e6b3'; +} +.icon-caret-down:before +{ + content: '\e6b8'; +} +.icon-caret-up:before +{ + content: '\e6b9'; +} +.icon-caret-left:before +{ + content: '\e6ba'; +} +.icon-caret-right:before +{ + content: '\e6bb'; +} +.icon-columns:before +{ + content: '\e6bc'; +} +.icon-sort:before +{ + content: '\e6bd'; +} +.icon-sort-down:before +{ + content: '\e6be'; +} +.icon-sort-up:before +{ + content: '\e6bf'; +} +.icon-envelope-alt:before +{ + content: '\e6c0'; +} +.icon-undo:before +{ + content: '\e6c1'; +} +.icon-dashboard:before +{ + content: '\e6c3'; +} +.icon-comment-alt:before +{ + content: '\e6c4'; +} +.icon-comments-alt:before +{ + content: '\e6c5'; +} +.icon-bolt:before +{ + content: '\e6c6'; +} +.icon-sitemap:before +{ + content: '\e6c7'; +} +.icon-umbrella:before +{ + content: '\e6c8'; +} +.icon-paste:before +{ + content: '\e6c9'; +} +.icon-lightbulb:before +{ + content: '\e6ca'; +} +.icon-exchange:before +{ + content: '\e6cb'; +} +.icon-cloud-download:before +{ + content: '\e6cc'; +} +.icon-cloud-upload:before +{ + content: '\e6cd'; +} +.icon-bell-alt:before +{ + content: '\e6d1'; +} +.icon-coffee:before +{ + content: '\e6d2'; +} +.icon-file-text-o:before +{ + content: '\e6d4'; +} +.icon-file-text-alt:before +{ + content: '\e6d4'; +} +.icon-building:before +{ + content: '\e6d5'; +} +.icon-double-angle-left:before +{ + content: '\e6dc'; +} +.icon-double-angle-right:before +{ + content: '\e6dd'; +} +.icon-double-angle-up:before +{ + content: '\e6de'; +} +.icon-double-angle-down:before +{ + content: '\e6df'; +} +.icon-angle-left:before +{ + content: '\e6e0'; +} +.icon-angle-right:before +{ + content: '\e6e1'; +} +.icon-angle-up:before +{ + content: '\e6e2'; +} +.icon-angle-down:before +{ + content: '\e6e3'; +} +.icon-desktop:before +{ + content: '\e6e4'; +} +.icon-laptop:before +{ + content: '\e6e5'; +} +.icon-tablet:before +{ + content: '\e6e6'; +} +.icon-mobile:before +{ + content: '\e6e7'; +} +.icon-circle-blank:before +{ + content: '\e6e8'; +} +.icon-quote-left:before +{ + content: '\e6e9'; +} +.icon-quote-right:before +{ + content: '\e6ea'; +} +.icon-spinner:before +{ + content: '\e6eb'; +} +.icon-circle:before +{ + content: '\e6ec'; +} +.icon-reply:before +{ + content: '\e6ed'; +} +.icon-folder-close-alt:before +{ + content: '\e6ef'; +} +.icon-folder-open-alt:before +{ + content: '\e6f0'; +} +.icon-expand-alt:before +{ + content: '\e6f1'; +} +.icon-collapse-alt:before +{ + content: '\e6f2'; +} +.icon-smile:before +{ + content: '\e6f3'; +} +.icon-frown:before +{ + content: '\e6f4'; +} +.icon-meh:before +{ + content: '\e6f5'; +} +.icon-gamepad:before +{ + content: '\e6f6'; +} +.icon-keyboard:before +{ + content: '\e6f7'; +} +.icon-flag-alt:before +{ + content: '\e6f8'; +} +.icon-flag-checkered:before +{ + content: '\e6f9'; +} +.icon-terminal:before +{ + content: '\e6fa'; +} +.icon-code:before +{ + content: '\e6fb'; +} +.icon-reply-all:before +{ + content: '\e6fc'; +} +.icon-star-half-full:before +{ + content: '\e6fd'; +} +.icon-location-arrow:before +{ + content: '\e6fe'; +} +.icon-crop:before +{ + content: '\e6ff'; +} +.icon-code-fork:before +{ + content: '\e700'; +} +.icon-unlink:before +{ + content: '\e701'; +} +.icon-question:before +{ + content: '\e702'; +} +.icon-info:before +{ + content: '\e703'; +} +.icon-shield:before +{ + content: '\e70b'; +} +.icon-calendar-empty:before +{ + content: '\e70c'; +} +.icon-rocket:before +{ + content: '\e70e'; +} +.icon-chevron-sign-left:before +{ + content: '\e70f'; +} +.icon-chevron-sign-right:before +{ + content: '\e710'; +} +.icon-chevron-sign-up:before +{ + content: '\e711'; +} +.icon-chevron-sign-down:before +{ + content: '\e712'; +} +.icon-html5:before +{ + content: '\e713'; +} +.icon-anchor:before +{ + content: '\e714'; +} +.icon-unlock-alt:before +{ + content: '\e715'; +} +.icon-bullseye:before +{ + content: '\e716'; +} +.icon-ellipsis-h:before +{ + content: '\e717'; +} +.icon-ellipsis-v:before +{ + content: '\e718'; +} +.icon-rss-sign:before +{ + content: '\e719'; +} +.icon-play-sign:before +{ + content: '\e71a'; +} +.icon-minus-sign-alt:before +{ + content: '\e71c'; +} +.icon-plus-sign-alt:before +{ + content: '\f0fe'; +} +.icon-check-minus:before +{ + content: '\e71d'; +} +.icon-check-plus:before +{ + content: '\f196'; +} +.icon-level-up:before +{ + content: '\e71e'; +} +.icon-level-down:before +{ + content: '\e71f'; +} +.icon-check-sign:before +{ + content: '\e720'; +} +.icon-edit-sign:before +{ + content: '\e721'; +} +.icon-external-link-sign:before +{ + content: '\e722'; +} +.icon-share-sign:before +{ + content: '\e723'; +} +.icon-compass:before +{ + content: '\e724'; +} +.icon-collapse:before +{ + content: '\e725'; +} +.icon-collapse-top:before +{ + content: '\e726'; +} +.icon-expand:before +{ + content: '\e727'; +} +.icon-dollar:before +{ + content: '\e728'; +} +.icon-yen:before +{ + content: '\e729'; +} +.icon-file:before +{ + content: '\e72b'; +} +.icon-file-text:before +{ + content: '\e72c'; +} +.icon-sort-by-alphabet:before +{ + content: '\e72d'; +} +.icon-sort-by-alphabet-alt:before +{ + content: '\e72e'; +} +.icon-sort-by-attributes:before +{ + content: '\e72f'; +} +.icon-sort-by-attributes-alt:before +{ + content: '\e730'; +} +.icon-sort-by-order:before +{ + content: '\e731'; +} +.icon-sort-by-order-alt:before +{ + content: '\e732'; +} +.icon-thumbs-up:before +{ + content: '\e733'; +} +.icon-thumbs-down:before +{ + content: '\e734'; +} +.icon-long-arrow-down:before +{ + content: '\e736'; +} +.icon-long-arrow-up:before +{ + content: '\e737'; +} +.icon-long-arrow-left:before +{ + content: '\e738'; +} +.icon-long-arrow-right:before +{ + content: '\e739'; +} +.icon-apple:before +{ + content: '\e73a'; +} +.icon-windows:before +{ + content: '\e73b'; +} +.icon-android:before +{ + content: '\e73c'; +} +.icon-linux:before +{ + content: '\e73d'; +} +.icon-sun:before +{ + content: '\e742'; +} +.icon-moon:before +{ + content: '\e743'; +} +.icon-archive:before +{ + content: '\e744'; +} +.icon-bug:before +{ + content: '\e745'; +} +.icon-zhifubao:before, +.icon-alipay:before +{ + content: '\e901'; +} +.icon-zhifubao-square:before, +.icon-alipay-square:before +{ + content: '\e900'; +} +.icon-taobao:before +{ + content: '\e902'; +} +.icon-weibo:before +{ + content: '\e746'; +} +.icon-renren:before +{ + content: '\e747'; +} +.icon-chrome:before +{ + content: '\e76c'; +} +.icon-firefox:before +{ + content: '\e76d'; +} +.icon-ie:before +{ + content: '\e76e'; +} +.icon-opera:before +{ + content: '\e76f'; +} +.icon-safari:before +{ + content: '\e770'; +} +.icon-node:before +{ + content: '\e76a'; +} +.icon-layout:before +{ + content: '\e768'; +} +.icon-usecase:before +{ + content: '\e74a'; +} +.icon-stack:before +{ + content: '\e769'; +} +.icon-branch:before +{ + content: '\e74b'; +} +.icon-chat:before +{ + content: '\e74c'; +} +.icon-chat-line:before +{ + content: '\e74f'; +} +.icon-comment-line:before +{ + content: '\e74f'; +} +.icon-chat-dot:before +{ + content: '\e750'; +} +.icon-cube:before +{ + content: '\e751'; +} +.icon-database:before +{ + content: '\f1c0'; +} +.icon-align-left:before +{ + content: '\e633'; +} +.avatar +{ + display: -ms-inline-flexbox; + display: inline-flex; + overflow: hidden; + flex-direction: column; + + width: 1.5rem; + height: 1.5rem; + + vertical-align: middle; + + background-position: center; + background-size: cover; + + -ms-flex-direction: column; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} +.avatar img +{ + display: block; + + width: 100%; + height: 100%; + margin: 0; +} +.avatar-sm +{ + font-size: .6rem; + + width: 1rem; + height: 1rem; +} +.avatar-lg +{ + font-size: 1rem; + + width: 2rem; + height: 2rem; +} +.avatar-lg > .icon +{ + font-size: 1rem; +} +.avatar-xl +{ + font-size: 1.75rem; + + width: 3.5rem; + height: 3.5rem; +} +.avatar-xl > .icon +{ + font-size: 1.75rem; +} +.nav +{ + display: -ms-flexbox; + display: flex; + overflow-x: auto; + + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-overflow-scrolling: touch; +} +.nav > a +{ + display: -ms-flexbox; + display: flex; + + min-width: 2rem; + height: 2rem; + padding: 0 .5rem; + + opacity: .8; + + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} +.nav > a.active +{ + font-weight: bold; + + opacity: 1; +} +.nav-secondary +{ + box-shadow: inset 0 -.05rem 0 rgba(0, 0, 0, .1); +} +.nav-secondary > .active +{ + box-shadow: inset 0 -.1rem 0 #fff; +} +.nav-secondary.primary-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #3280fc; +} +.nav-secondary.success-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #38b03f; +} +.nav-secondary.danger-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #ea644a; +} +.nav-secondary.warning-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #f1a325; +} +.nav-secondary.important-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #bd7b46; +} +.nav-secondary.special-pale > .active +{ + box-shadow: inset 0 -.1rem 0 #8666b8; +} +.nav.circle +{ + border-radius: 1rem; +} +.nav.outline > a +{ + border-right: .05rem solid transparent; + border-right-color: inherit; +} +.nav.outline > a:last-child +{ + border-right: none; +} +.nav.outline > a.active +{ + color: #333; + background-color: #fff; +} +.nav-lg > a, +.nav.affix > a +{ + height: 2.4rem; +} +.nav-sm > a +{ + min-width: 1.5rem; + height: 1.5rem; + padding: 0 .25rem; +} +.nav.affix +{ + background-color: #fff; +} +.with-nav-top +{ + padding-top: 2.4rem; +} +.with-nav-bottom +{ + padding-bottom: 2.4rem; +} +.with-heading-top.with-nav-top +{ + padding-top: 4.8rem; +} +.with-heading-top.with-nav-top > .nav.affix.dock-top +{ + top: 2.4rem; +} +.in-scroll.scroll-down.with-heading-top > .nav.dock-top, +.in-scroll.scroll-down .with-heading-top > .nav.dock-top +{ + transform: translate(0, -100%); +} +.in-scroll.scroll-down.with-heading-top > .nav.dock-top.dock-auto, +.in-scroll.scroll-down .with-heading-top > .nav.dock-top.dock-auto +{ + transform: translate(0, -199%); +} +.in-scroll > .dock-top .nav-secondary +{ + box-shadow: none; +} +.btn +{ + font-size: .7rem; + font-weight: normal; + line-height: 1.4rem; + + display: -ms-inline-flexbox; + display: inline-flex; + + min-width: 1.5rem; + height: 1.5rem; + padding: 0 .5rem; + + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-align: center; + white-space: nowrap; + white-space: pre-line; + + color: inherit; + border: .05rem solid transparent; + background: transparent; + + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; +} +.btn.circle, +.btn.circle:after +{ + border-radius: .75rem !important; +} +.btn-lg +{ + font-size: .9rem; + line-height: 1.9rem; + + min-width: 2rem; + height: 2rem; + padding: 0 .5rem; +} +.btn-lg.circle, +.btn-lg.circle:after +{ + border-radius: 1rem !important; +} +.btn-sm +{ + font-size: .6rem; + line-height: 1.1rem; + + min-width: 1.2rem; + height: 1.2rem; + padding: 0 .5rem; +} +.btn-sm.circle, +.btn-sm.circle:after +{ + border-radius: .6rem !important; +} +.btn-xs +{ + font-size: .6rem; + line-height: .9rem; + + min-width: 1rem; + height: 1rem; + padding: 0 .5rem; +} +.btn-xs.circle, +.btn-xs.circle:after +{ + border-radius: .5rem !important; +} +.btn-icon +{ + padding-right: 0; + padding-left: 0; +} +.btn-wide +{ + min-width: 4rem; +} +.btn.block +{ + width: 100%; +} +.btn.block + .btn.block +{ + margin-top: .5rem; +} +.btn > .label +{ + position: relative; + top: -.05rem; +} +.label +{ + font-size: .6rem; + line-height: 1; + + display: -ms-inline-flexbox; + display: inline-flex; + + min-width: 1rem; + height: 1rem; + padding: 0 .25rem; + + vertical-align: middle; + + border: .05rem solid transparent; + background-color: rgba(0, 0, 0, .103); + + -ms-flex-pack: center; + justify-content: center; + -ms-flex-line-pack: center; + align-content: center; + -ms-flex-align: center; + align-items: center; +} +.label > .icon +{ + line-height: 1; +} +.label.circle +{ + padding: .05rem .25rem; + + border-radius: .5rem; +} +.label-sm +{ + min-width: .9rem; + height: .9rem; + padding: 0 .0625rem; +} +.label-sm.circle +{ + padding: 0 .1rem; + + border-radius: .45rem; +} +.label.badge +{ + position: absolute; + z-index: 1; + top: -.5rem; + right: -.5rem; +} +.heading +{ + position: relative; + + display: -ms-flexbox; + display: flex; + + -ms-flex-align: center; + align-items: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.heading > .title +{ + display: block; + + padding: .5rem .5rem; + + -ms-flex: 1; + flex: 1; +} +.heading > .nav +{ + -ms-flex-item-align: start; + align-self: flex-start; +} +.heading > .avatar +{ + margin-left: .25rem; +} +.heading > .headline +{ + font-size: .8rem; + + width: 100%; + padding: .5rem .5rem; +} +.heading > .headline.indent +{ + margin-left: 2rem; +} +.heading-lg > .nav, +.heading.affix > .nav +{ + margin: .2rem; +} +.heading-lg > .title, +.heading.affix > .title +{ + font-size: .8rem; + + padding: .65rem .5rem; +} +.heading.affix +{ + background-color: #fff; +} +.with-heading-top +{ + padding-top: 2.4rem; +} +.with-heading-bottom +{ + padding-bottom: 2.4rem; +} +.list-item, +.list > .item +{ + position: relative; + + display: -ms-flexbox; + display: flex; + + padding: .5rem .5rem; +} +.list-item > .icon, +.list > .item > .icon +{ + line-height: 1.5rem; + + display: block; + + height: 1.5rem; +} +.list-item > *, +.list > .item > * +{ + margin-left: .5rem; +} +.list-item > *:first-child, +.list > .item > *:first-child +{ + min-width: .7rem; + margin-left: 0; +} +.list-item > .title, +.list > .item > .title +{ + padding: .25rem 0; +} +.list-item > .title, +.list > .item > .title, +.list-item > .content, +.list > .item > .content +{ + -ms-flex: 1; + flex: 1; +} +.list-item > .label, +.list > .item > .label +{ + position: relative; + top: .25rem; +} +.list-item > .label + .label, +.list > .item > .label + .label +{ + margin-left: .25rem; +} +.list-item > .content > .subtitle, +.list > .item > .content > .subtitle +{ + font-size: 85.71428571%; + + opacity: .5 !important; +} +.list-item.multi-lines > *, +.list > .item.multi-lines > * +{ + margin-top: .125rem; +} +.list-item.multi-lines > .content, +.list > .item.multi-lines > .content +{ + margin-top: 0; +} +.list-item.active:after, +.list > .item.active:after +{ + transform: scale(1); + + opacity: 1; + background-color: rgba(0, 0, 0, .09); +} +.list > .heading .title +{ + font-size: .6rem; + font-weight: bolder; + + text-transform: uppercase; + + opacity: .5; +} +.list-item.compact, +.list.compact > .item +{ + padding: .25rem .5rem; +} +.list.with-divider +{ + border: .05rem solid rgba(0, 0, 0, .1); + border-width: .05rem 0; +} +.list.with-divider > .item:before +{ + position: absolute; + right: 0; + bottom: 0; + left: .5rem; + + display: block; + + height: .05rem; + + content: ' '; + + background-color: rgba(0, 0, 0, .1); +} +.list.with-divider > .item:last-of-type:before +{ + display: none; +} +.list.with-divider.with-avatar > .item:before, +.list.with-divider .item.with-avatar:before +{ + left: 2.5rem; +} +.list-item + .divider, +.list > .item + .divider +{ + margin-left: .5rem; +} +.list-item.with-avatar + .divider, +.list > .item.with-avatar + .divider +{ + margin-left: 2.5rem; +} +.list > .list +{ + margin-left: 2rem; +} +.table +{ + width: 100%; +} +.table th, +.table td +{ + padding: .5rem .5rem; + + vertical-align: top; + + border-bottom: .05rem solid rgba(0, 0, 0, .1); +} +.table th +{ + font-weight: bold; + + position: relative; + + opacity: .7; +} +.table th:after +{ + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: block; + + content: ' '; + + background: rgba(0, 0, 0, .2); +} +.table tr:hover +{ + background-color: rgba(50, 128, 252, .1); +} +.table tr.active +{ + background-color: rgba(241, 163, 37, .1); +} +.table.compact th, +.table.compact td +{ + padding: .25rem .25rem; +} +.table.striped tbody > tr:nth-child(odd) +{ + background-color: rgba(0, 0, 0, .035); +} +.table.striped tbody > tr:nth-child(odd):hover +{ + background-color: rgba(50, 128, 252, .1); +} +.table.borderless th, +.table.borderless td +{ + border: none; +} +.table.bordered th, +.table.bordered td +{ + border: .05rem solid rgba(0, 0, 0, .133); +} +.table-fixed +{ + overflow: hidden; + + table-layout: fixed; +} +.table-fixed th, +.table-fixed td +{ + overflow: inherit; + + white-space: nowrap; +} +.table-fixed .no-table-fixed +{ + overflow: visible; +} +.input, +.textarea, +.select > select +{ + line-height: 1.42857143; + + display: block; + + width: 100%; + min-height: 1.5rem; + padding: .15rem .25rem; + + transition: border .2s cubic-bezier(.175, .885, .32, 1), box-shadow .2s cubic-bezier(.175, .885, .32, 1); + + color: inherit; + border: .05rem solid #ccc; + background-color: #fff; + box-shadow: none; + + -webkit-appearance: none; +} +.input:hover, +.textarea:hover, +.select > select:hover +{ + border-color: #999; +} +.input:focus, +.textarea:focus, +.select > select:focus +{ + border-color: #2196f3; + outline: none; + box-shadow: 0 0 0 .1rem rgba(33, 150, 243, .3); +} +.input[readonly], +.textarea[readonly], +.select > select[readonly], +.input[disabled], +.textarea[disabled], +.select > select[disabled], +.input .disabled, +.textarea .disabled, +.select > select .disabled +{ + opacity: 1!important; + background-color: #e6e6e6; +} +.select +{ + position: relative; +} +.select > select +{ + border-radius: 0; + outline: none; +} +.select > select:not([multiple]) +{ + padding-right: 1.25rem; +} +.select > select[multiple] +{ + overflow-y: auto; + + max-height: 3.75rem; +} +.select:not(.multiple):after +{ + position: absolute; + top: .55rem; + right: .5rem; + + display: block; + + width: 0; + height: 0; + + content: ' '; + + border-width: .35rem .25rem 0 .25rem; + border-style: solid; + border-color: #ccc transparent transparent transparent; +} +.help-text +{ + font-size: .6rem; + + padding: .25rem 0; + + color: rgba(0, 0, 0, .5); +} +.help-text:empty +{ + display: none; +} +.radio, +.checkbox +{ + position: relative; +} +.radio > input, +.checkbox > input +{ + position: absolute; + z-index: 1; + top: 0; + left: 0; + + display: block; + + width: 100%; + height: 100%; + + opacity: 0; +} +.radio > input + label, +.checkbox > input + label +{ + position: relative; + z-index: 0; + + display: block; + + padding: .25rem 0 .25rem 1.25rem; +} +.radio > input + label:before, +.checkbox > input + label:before, +.radio > input + label:after, +.checkbox > input + label:after +{ + position: absolute; + top: .3rem; + left: 0; + + display: -ms-flexbox; + display: flex; + + width: .9rem; + height: .9rem; + + content: ' '; + transition: .2s cubic-bezier(.175, .885, .32, 1); + + color: transparent; + border: .1rem solid rgba(0, 0, 0, .5); + + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; +} +.radio > input + label:after, +.checkbox > input + label:after +{ + transform: scale(0); + + opacity: 0; + color: rgba(0, 0, 0, .5); +} +.radio > input:focus + label:before, +.checkbox > input:focus + label:before +{ + border-color: #3280fc; + box-shadow: inset 0 0 0 .05rem rgba(33, 150, 243, .3), 0 0 0 .1rem rgba(33, 150, 243, .3); +} +.radio.checked > input + label:after, +.checkbox.checked > input + label:after, +.radio > input:checked + label:after, +.checkbox > input:checked + label:after +{ + transform: scale(1); + + opacity: 1; +} +.radio > input[disabled], +.checkbox > input[disabled], +.radio > input.disabled, +.checkbox > input.disabled +{ + opacity: 0!important; +} +.radio > input[disabled] + label, +.checkbox > input[disabled] + label, +.radio > input.disabled + label, +.checkbox > input.disabled + label +{ + opacity: .5; +} +.radio.inline-block + .inline-block, +.checkbox.inline-block + .inline-block +{ + margin-left: .05rem; +} +.checkbox > input + label:before +{ + border-radius: .1rem; +} +.checkbox > input + label:after +{ + font-family: ZenIcon; + font-size: .7rem; + font-weight: normal; + font-style: normal; + font-variant: normal; + + content: '\e60d'; + text-transform: none; + + border: none; + + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.checkbox > input:focus + label:after +{ + color: #3280fc; +} +.checkbox > input:checked + label:before, +.checkbox > input:checked + label:after +{ + color: #fff; + border-radius: .1rem; + background-color: #3280fc; +} +.radio > input + label:before +{ + border-radius: 50%; +} +.radio > input + label:after +{ + top: .55rem; + left: .25rem; + + width: .4rem; + height: .4rem; + + border: none; + border-radius: .2rem; + background-color: rgba(0, 0, 0, .5); +} +.radio > input:focus + label:after +{ + background-color: #3280fc; +} +.radio > input:checked + label:before +{ + border-color: #3280fc; +} +.radio > input:checked + label:after +{ + background-color: #3280fc; +} +.control > label +{ + font-size: .6rem; + + display: block; + + padding: .25rem 0; +} +.control:not(:last-child) +{ + margin-bottom: .5rem; +} +::-webkit-input-placeholder +{ + font-size: .6rem; +} +.control.has-label-left, +.control.has-btn-right, +.control.has-icon-right +{ + position: relative; +} +.control.has-label-left > label +{ + position: absolute; + top: 0; + left: .25rem; + + min-width: .1rem; + + text-align: center; + + opacity: .5; +} +.control.has-label-left .input, +.control.has-label-left .textarea, +.control.has-label-left .select > select +{ + padding-left: 1.25rem; +} +.control.has-label-left .input:focus + label, +.control.has-label-left .textarea:focus + label, +.control.has-label-left .select > select:focus + label +{ + opacity: 1; + color: #2196f3; +} +.control.has-btn-right > .icon, +.control.has-icon-right > .icon +{ + position: absolute; + top: .2rem; + right: .25rem; + + min-width: 1rem; + + text-align: center; + + opacity: .5; +} +.control.has-btn-right .input, +.control.has-icon-right .input, +.control.has-btn-right .textarea, +.control.has-icon-right .textarea, +.control.has-btn-right .select > select, +.control.has-icon-right .select > select +{ + padding-right: 1.25rem; +} +.control.has-btn-right .input:focus + .icon, +.control.has-icon-right .input:focus + .icon, +.control.has-btn-right .textarea:focus + .icon, +.control.has-icon-right .textarea:focus + .icon, +.control.has-btn-right .select > select:focus + .icon, +.control.has-icon-right .select > select:focus + .icon, +.control.has-btn-right .input:focus + label + .icon, +.control.has-icon-right .input:focus + label + .icon, +.control.has-btn-right .textarea:focus + label + .icon, +.control.has-icon-right .textarea:focus + label + .icon, +.control.has-btn-right .select > select:focus + label + .icon, +.control.has-icon-right .select > select:focus + label + .icon +{ + opacity: 1; +} +.control.has-btn-right > .btn +{ + position: absolute; + top: 0; + right: 0; + + min-width: 1rem; + + text-align: center; + + opacity: .5; +} +.row .control, +.column .control +{ + width: 100%; +} +.control.has-error .input, +.control.has-error .textarea, +.control.has-error .select > select +{ + border-color: #ea644a; +} +.control.has-error .help-text +{ + color: #ea644a; +} +.control.has-success .input, +.control.has-success .textarea, +.control.has-success .select > select +{ + border-color: #38b03f; +} +.control.has-success .help-text +{ + color: #38b03f; +} +.control.has-warning .input, +.control.has-warning .textarea, +.control.has-warning .select > select +{ + border-color: #f1a325; +} +.control.has-warning .help-text +{ + color: #f1a325; +} +.control.search +{ + position: relative; + + margin: 0; +} +.control.search > label +{ + line-height: 1.5rem; + + position: absolute; + + min-width: 1.5rem; + height: 1.5rem; + padding: 0; + + transition: transform .2s cubic-bezier(.175, .885, .32, 1), opacity .2s cubic-bezier(.175, .885, .32, 1); + text-align: center; + + opacity: .6; +} +.control.search > .input +{ + padding-right: 1.5rem; + padding-left: 1.5rem; + + transition: all .2s cubic-bezier(.175, .885, .32, 1); +} +.control.search > .close +{ + line-height: 1.5rem; + + position: absolute; + top: 0; + right: 0; + + display: block; + + min-width: 1.5rem; + height: 1.5rem; + + cursor: pointer; + transition: transform .2s cubic-bezier(.175, .885, .32, 1), opacity .2s cubic-bezier(.175, .885, .32, 1); + transform: scale(1); + text-align: center; + + opacity: .6; +} +.control.search:not(.empty) > .input, +.control.search.focus > .input +{ + padding-left: .25rem; +} +.control.search:not(.empty) > label, +.control.search.focus > label +{ + transform: scale(0); + + opacity: 0; +} +.control.search.empty > .close +{ + transform: scale(0); + + opacity: 0; +} +.control.flex +{ + flex-direction: row; + + -ms-flex-direction: row; + -ms-flex-align: center; + align-items: center; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.control.flex > .select, +.control.flex > .textarea, +.control.flex > .input +{ + width: auto; + + -ms-flex: auto; + flex: auto; +} +.control.flex > label +{ + font-size: .7rem; + font-weight: normal; + + width: 3rem; + + -ms-flex-item-align: start; + align-self: flex-start; +} +.control.flex > label, +.control.flex > div, +.control.flex > span, +.control.flex > .addon, +.control.flex > .btn +{ + -ms-flex: none; + flex: none; +} +.control.flex > .block, +.control.flex > .help-text +{ + width: 100%; + margin-bottom: 0; + + -ms-flex: auto; + flex: auto; +} +.control.flex > .addon +{ + line-height: 1.42857143; + + padding: .2rem .25rem; + + border: .05rem solid #ccc; + background-color: rgba(0, 0, 0, .133); +} +.control.flex > *:first-child +{ + border-right: none; +} +.control.flex > .btn:last-child +{ + border-left: none!important; +} +.clean.input[readonly] +{ + line-height: inherit; + + min-height: inherit; + padding: 0; + + border-color: transparent; +} +.article img, +.article video, +.article iframe, +.article object, +.article embed +{ + max-width: 100%; + height: auto; +} +.article ul ul, +.article ol ul, +.article ul ol, +.article ol ol +{ + margin-bottom: 0; +} +.article a +{ + color: #3280fc; +} +.article blockquote +{ + margin: .5rem 0 .5rem 1rem; + padding-top: 0; + padding-bottom: 0; +} +.display-backdrop, +.display-layer +{ + position: fixed; + z-index: 1040; + top: 0; + right: 0; + bottom: 0; + left: 0; + + background-color: #000; +} +.display-backdrop.in +{ + opacity: .5; +} +.display-backdrop.loading:before +{ + width: 1.5rem; + height: 1.5rem; + margin-top: -.75rem; + margin-left: -.75rem; + + border-width: .25rem; +} +.display-layer +{ + z-index: 1050; + + display: -ms-flexbox; + display: flex; + flex-direction: column; + + pointer-events: none; + + background: none; + + -ms-flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-align: center; + align-items: center; +} +.display +{ + pointer-events: auto; +} +.display.invisible +{ + transition: none !important; +} +body[class^='display-show-'], +body[class*=' display-show-'] +{ + overflow-y: hidden; +} +.display-arrow:before +{ + position: absolute; + + display: block; + + width: 0; + height: 0; + + content: ' '; + + border-style: solid; +} +.arrow-top:before +{ + top: -.4rem; + left: 50%; + + margin-left: -.4rem; + + border-width: 0 .4rem .4rem .4rem; + border-color: transparent transparent #fff transparent; +} +.arrow-bottom:before +{ + top: 100%; + left: 50%; + + margin-left: -.4rem; + + border-width: .4rem .4rem 0 .4rem; + border-color: #fff transparent transparent transparent; +} +.arrow-right:before +{ + top: 50%; + left: 100%; + + margin-top: -.4rem; + + border-width: .4rem 0 .4rem .4rem; + border-color: transparent transparent transparent #fff; +} +.arrow-left:before +{ + top: 50%; + left: -.4rem; + + margin-top: -.4rem; + + border-width: .4rem .4rem .4rem 0; + border-color: transparent #fff transparent transparent; +} +.popover, +.dropdown-menu +{ + display: none; +} +.display > .popover, +.display > .dropdown-menu +{ + display: block; +} +.modal, +.popover, +.dropdown-menu +{ + overflow-y: auto; + + max-height: 100%; +} +.dropdown-menu +{ + min-width: 6rem; +} +.messager +{ + margin: 1rem; +} +.modal +{ + display: -ms-flexbox; + display: flex; + flex-direction: column; + + -ms-flex-direction: column; +} +.modal > .heading, +.modal > .footer +{ + z-index: 1; + + -ms-flex: none; + flex: none; +} +.modal > .content +{ + overflow-y: auto; + + -ms-flex: auto; + flex: auto; +} +.modal.in-scroll > .heading +{ + border: none; + box-shadow: rgba(0, 0, 0, .05) 0 .05rem .2rem, rgba(0, 0, 0, .12) 0 .05rem .1rem; +} +.modal.can-scroll:not(.scroll-over) > .footer +{ + box-shadow: rgba(0, 0, 0, .05) 0 -.05rem .2rem, rgba(0, 0, 0, .12) 0 -.05rem .1rem; +} +.blur +{ + filter: blur(.5rem); +} +.blur-lg +{ + filter: blur(1rem); +} +.blur-sm +{ + filter: blur(.25rem); +} +.grayscale +{ + filter: grayscale(100%); +} +.rotate-90 +{ + transform: rotate(90deg); +} +.rotate-180 +{ + transform: rotate(180deg); +} +.rotate-270 +{ + transform: rotate(270deg); +} +.flip-h +{ + transform: scale(-1, 1); +} +.flip-v +{ + transform: scale(1, -1); +} +.outline +{ + border: .05rem solid rgba(0, 0, 0, .1); +} +.circle +{ + border-radius: 50%; +} +.rounded +{ + border-radius: .15rem; +} +.rounded-sm +{ + border-radius: .1rem; +} +.rounded-lg +{ + border-radius: .3rem; +} +.borderless +{ + border: none !important; +} +.divider +{ + border-bottom: .05rem solid rgba(0, 0, 0, .1); +} +.divider-top +{ + border-top: .05rem solid rgba(0, 0, 0, .1); +} +.divider-left +{ + border-left: .05rem solid rgba(0, 0, 0, .1); +} +.divider-right +{ + border-right: .05rem solid rgba(0, 0, 0, .1); +} +.divider-all +{ + border: .05rem solid rgba(0, 0, 0, .1); +} +.space +{ + margin-bottom: 1rem !important; +} +.space-sm +{ + margin-bottom: .5rem !important; +} +.space-xs +{ + margin-bottom: .25rem !important; +} +.space-xl +{ + margin-bottom: 2rem !important; +} +.space-lg +{ + margin-bottom: 1.5rem !important; +} +.center-block +{ + margin-right: auto; + margin-left: auto; +} +.no-padding +{ + padding: 0!important; +} +.no-margin +{ + margin: 0!important; +} +.has-margin +{ + margin: 1rem !important; +} +.has-margin-sm +{ + margin: .5rem !important; +} +.has-padding +{ + padding: .5rem .5rem !important; +} +.has-padding-xs +{ + padding: .25rem !important; +} +.has-padding-sm +{ + padding: .25rem .25rem !important; +} +.has-padding-lg +{ + padding: 1rem 1rem !important; +} +.has-padding-xl +{ + padding: 1.25rem 1.25rem !important; +} +.has-padding-v +{ + padding-top: .5rem !important; + padding-bottom: .5rem !important; +} +.has-padding-h +{ + padding-right: .5rem !important; + padding-left: .5rem !important; +} +.canvas +{ + background: #fff; +} +.layer, +.modal, +.popover, +.dropdown-menu +{ + background: #fff; + box-shadow: rgba(0, 0, 0, .15) 0 .15rem .5rem, rgba(0, 0, 0, .25) 0 .15rem .5rem; +} +.section +{ + margin-bottom: 1rem; + + background: #fff; + box-shadow: rgba(0, 0, 0, .05) 0 .05rem .2rem, rgba(0, 0, 0, .12) 0 .05rem .1rem; +} +.box +{ + padding: .5rem .5rem; + + border: .05rem solid transparent; + background: #fff; +} +.well +{ + padding: .5rem .5rem; + + background-color: rgba(0, 0, 0, .05); + box-shadow: inset rgba(0, 0, 0, .1) 0 .05rem .3rem, inset rgba(0, 0, 0, .12) 0 .05rem .2rem; +} +.shadow-divider +{ + box-shadow: inset 0 -.05rem 0 rgba(0, 0, 0, .1); +} +.shadow-divider-outside +{ + box-shadow: 0 .05rem 0 rgba(0, 0, 0, .1); +} +.shadow-none +{ + box-shadow: none !important; +} +.shadow, +.shadow-1 +{ + box-shadow: rgba(0, 0, 0, .05) 0 .05rem .2rem, rgba(0, 0, 0, .12) 0 .05rem .1rem; +} +.shadow-2 +{ + box-shadow: rgba(0, 0, 0, .12) 0 .05rem .3rem, rgba(0, 0, 0, .15) 0 .05rem .2rem; +} +.shadow-3 +{ + box-shadow: rgba(0, 0, 0, .15) 0 .15rem .5rem, rgba(0, 0, 0, .25) 0 .15rem .5rem; +} +.text-shadow-white +{ + text-shadow: 0 .05rem .1rem rgba(255, 255, 255, .5); +} +.text-shadow-black +{ + text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); +} +.outline +{ + border: .05rem solid rgba(0, 0, 0, .1); + background-color: transparent!important; +} +.primary +{ + color: #fff!important; + border-color: #3280fc !important; + background-color: #3280fc !important; +} +.primary.hover:hover, +tr.primary:hover +{ + background-color: #1970fc !important; +} +.primary.outline +{ + color: #3280fc !important; + background-color: transparent!important; +} +.primary.outline.hover-solid:hover, +.primary.outline .active +{ + color: #fff!important; + background-color: #3280fc !important; +} +.primary.long-shadow +{ + text-shadow: #0a67fb 1px 1px, #0a67fb 2px 2px, #0a67fb 3px 3px, #0a67fb 4px 4px, #0a67fb 5px 5px, #0a67fb 6px 6px, #0a67fb 7px 7px, #0a67fb 8px 8px, #0a67fb 9px 9px, #0a67fb 10px 10px, #0a67fb 11px 11px, #0a67fb 12px 12px, #0a67fb 14px 14px, #0a67fb 15px 15px, #0a67fb 16px 16px, #0a67fb 17px 17px, #0a67fb 18px 18px, #0a67fb 19px 19px, #0a67fb 20px 20px, #0a67fb 21px 21px, #0a67fb 22px 22px, #0a67fb 23px 23px, #0a67fb 24px 24px, #0a67fb 25px 25px, #0a67fb 26px 26px, #0a67fb 27px 27px, #0a67fb 28px 28px, #0a67fb 29px 29px, #0a67fb 30px 30px, #0a67fb 31px 31px, #0a67fb 32px 32px, #0a67fb 33px 33px, #0a67fb 34px 34px, #0a67fb 35px 35px, #0a67fb 36px 36px, #0a67fb 37px 37px, #0a67fb 38px 38px, #0a67fb 39px 39px, #0a67fb 40px 40px; +} +.secondary +{ + color: #fff!important; + border-color: #145ccd !important; + background-color: #145ccd !important; +} +.secondary.hover:hover, +tr.secondary:hover +{ + background-color: #1251b6 !important; +} +.secondary.outline +{ + color: #145ccd !important; + background-color: transparent!important; +} +.secondary.outline.hover-solid:hover, +.secondary.outline .active +{ + color: #fff!important; + background-color: #145ccd !important; +} +.secondary.long-shadow +{ + text-shadow: #114ba8 1px 1px, #114ba8 2px 2px, #114ba8 3px 3px, #114ba8 4px 4px, #114ba8 5px 5px, #114ba8 6px 6px, #114ba8 7px 7px, #114ba8 8px 8px, #114ba8 9px 9px, #114ba8 10px 10px, #114ba8 11px 11px, #114ba8 12px 12px, #114ba8 14px 14px, #114ba8 15px 15px, #114ba8 16px 16px, #114ba8 17px 17px, #114ba8 18px 18px, #114ba8 19px 19px, #114ba8 20px 20px, #114ba8 21px 21px, #114ba8 22px 22px, #114ba8 23px 23px, #114ba8 24px 24px, #114ba8 25px 25px, #114ba8 26px 26px, #114ba8 27px 27px, #114ba8 28px 28px, #114ba8 29px 29px, #114ba8 30px 30px, #114ba8 31px 31px, #114ba8 32px 32px, #114ba8 33px 33px, #114ba8 34px 34px, #114ba8 35px 35px, #114ba8 36px 36px, #114ba8 37px 37px, #114ba8 38px 38px, #114ba8 39px 39px, #114ba8 40px 40px; +} +.accent +{ + color: #fff!important; + border-color: #fcae32 !important; + background-color: #fcae32 !important; +} +.accent.hover:hover, +tr.accent:hover +{ + background-color: #fca419 !important; +} +.accent.outline +{ + color: #fcae32 !important; + background-color: transparent!important; +} +.accent.outline.hover-solid:hover, +.accent.outline .active +{ + color: #fff!important; + background-color: #fcae32 !important; +} +.accent.long-shadow +{ + text-shadow: #fb9e0a 1px 1px, #fb9e0a 2px 2px, #fb9e0a 3px 3px, #fb9e0a 4px 4px, #fb9e0a 5px 5px, #fb9e0a 6px 6px, #fb9e0a 7px 7px, #fb9e0a 8px 8px, #fb9e0a 9px 9px, #fb9e0a 10px 10px, #fb9e0a 11px 11px, #fb9e0a 12px 12px, #fb9e0a 14px 14px, #fb9e0a 15px 15px, #fb9e0a 16px 16px, #fb9e0a 17px 17px, #fb9e0a 18px 18px, #fb9e0a 19px 19px, #fb9e0a 20px 20px, #fb9e0a 21px 21px, #fb9e0a 22px 22px, #fb9e0a 23px 23px, #fb9e0a 24px 24px, #fb9e0a 25px 25px, #fb9e0a 26px 26px, #fb9e0a 27px 27px, #fb9e0a 28px 28px, #fb9e0a 29px 29px, #fb9e0a 30px 30px, #fb9e0a 31px 31px, #fb9e0a 32px 32px, #fb9e0a 33px 33px, #fb9e0a 34px 34px, #fb9e0a 35px 35px, #fb9e0a 36px 36px, #fb9e0a 37px 37px, #fb9e0a 38px 38px, #fb9e0a 39px 39px, #fb9e0a 40px 40px; +} +.green, +.success +{ + color: #fff!important; + border-color: #38b03f !important; + background-color: #38b03f !important; +} +.green.hover:hover, +.success.hover:hover, +tr.green:hover, +tr.success:hover +{ + background-color: #329d38 !important; +} +.green.outline, +.success.outline +{ + color: #38b03f !important; + background-color: transparent!important; +} +.green.outline.hover-solid:hover, +.success.outline.hover-solid:hover, +.green.outline .active, +.success.outline .active +{ + color: #fff!important; + background-color: #38b03f !important; +} +.green.long-shadow, +.success.long-shadow +{ + text-shadow: #2e9134 1px 1px, #2e9134 2px 2px, #2e9134 3px 3px, #2e9134 4px 4px, #2e9134 5px 5px, #2e9134 6px 6px, #2e9134 7px 7px, #2e9134 8px 8px, #2e9134 9px 9px, #2e9134 10px 10px, #2e9134 11px 11px, #2e9134 12px 12px, #2e9134 14px 14px, #2e9134 15px 15px, #2e9134 16px 16px, #2e9134 17px 17px, #2e9134 18px 18px, #2e9134 19px 19px, #2e9134 20px 20px, #2e9134 21px 21px, #2e9134 22px 22px, #2e9134 23px 23px, #2e9134 24px 24px, #2e9134 25px 25px, #2e9134 26px 26px, #2e9134 27px 27px, #2e9134 28px 28px, #2e9134 29px 29px, #2e9134 30px 30px, #2e9134 31px 31px, #2e9134 32px 32px, #2e9134 33px 33px, #2e9134 34px 34px, #2e9134 35px 35px, #2e9134 36px 36px, #2e9134 37px 37px, #2e9134 38px 38px, #2e9134 39px 39px, #2e9134 40px 40px; +} +.blue, +.info +{ + color: #fff!important; + border-color: #03b8cf !important; + background-color: #03b8cf !important; +} +.blue.hover:hover, +.info.hover:hover, +tr.blue:hover, +tr.info:hover +{ + background-color: #03a2b6 !important; +} +.blue.outline, +.info.outline +{ + color: #03b8cf !important; + background-color: transparent!important; +} +.blue.outline.hover-solid:hover, +.info.outline.hover-solid:hover, +.blue.outline .active, +.info.outline .active +{ + color: #fff!important; + background-color: #03b8cf !important; +} +.blue.long-shadow, +.info.long-shadow +{ + text-shadow: #0294a7 1px 1px, #0294a7 2px 2px, #0294a7 3px 3px, #0294a7 4px 4px, #0294a7 5px 5px, #0294a7 6px 6px, #0294a7 7px 7px, #0294a7 8px 8px, #0294a7 9px 9px, #0294a7 10px 10px, #0294a7 11px 11px, #0294a7 12px 12px, #0294a7 14px 14px, #0294a7 15px 15px, #0294a7 16px 16px, #0294a7 17px 17px, #0294a7 18px 18px, #0294a7 19px 19px, #0294a7 20px 20px, #0294a7 21px 21px, #0294a7 22px 22px, #0294a7 23px 23px, #0294a7 24px 24px, #0294a7 25px 25px, #0294a7 26px 26px, #0294a7 27px 27px, #0294a7 28px 28px, #0294a7 29px 29px, #0294a7 30px 30px, #0294a7 31px 31px, #0294a7 32px 32px, #0294a7 33px 33px, #0294a7 34px 34px, #0294a7 35px 35px, #0294a7 36px 36px, #0294a7 37px 37px, #0294a7 38px 38px, #0294a7 39px 39px, #0294a7 40px 40px; +} +.yellow, +.warning +{ + color: #fff!important; + border-color: #f1a325 !important; + background-color: #f1a325 !important; +} +.yellow.hover:hover, +.warning.hover:hover, +tr.yellow:hover, +tr.warning:hover +{ + background-color: #ed980f !important; +} +.yellow.outline, +.warning.outline +{ + color: #f1a325 !important; + background-color: transparent!important; +} +.yellow.outline.hover-solid:hover, +.warning.outline.hover-solid:hover, +.yellow.outline .active, +.warning.outline .active +{ + color: #fff!important; + background-color: #f1a325 !important; +} +.yellow.long-shadow, +.warning.long-shadow +{ + text-shadow: #df8f0e 1px 1px, #df8f0e 2px 2px, #df8f0e 3px 3px, #df8f0e 4px 4px, #df8f0e 5px 5px, #df8f0e 6px 6px, #df8f0e 7px 7px, #df8f0e 8px 8px, #df8f0e 9px 9px, #df8f0e 10px 10px, #df8f0e 11px 11px, #df8f0e 12px 12px, #df8f0e 14px 14px, #df8f0e 15px 15px, #df8f0e 16px 16px, #df8f0e 17px 17px, #df8f0e 18px 18px, #df8f0e 19px 19px, #df8f0e 20px 20px, #df8f0e 21px 21px, #df8f0e 22px 22px, #df8f0e 23px 23px, #df8f0e 24px 24px, #df8f0e 25px 25px, #df8f0e 26px 26px, #df8f0e 27px 27px, #df8f0e 28px 28px, #df8f0e 29px 29px, #df8f0e 30px 30px, #df8f0e 31px 31px, #df8f0e 32px 32px, #df8f0e 33px 33px, #df8f0e 34px 34px, #df8f0e 35px 35px, #df8f0e 36px 36px, #df8f0e 37px 37px, #df8f0e 38px 38px, #df8f0e 39px 39px, #df8f0e 40px 40px; +} +.red, +.danger +{ + color: #fff!important; + border-color: #ea644a !important; + background-color: #ea644a !important; +} +.red.hover:hover, +.danger.hover:hover, +tr.red:hover, +tr.danger:hover +{ + background-color: #e75033 !important; +} +.red.outline, +.danger.outline +{ + color: #ea644a !important; + background-color: transparent!important; +} +.red.outline.hover-solid:hover, +.danger.outline.hover-solid:hover, +.red.outline .active, +.danger.outline .active +{ + color: #fff!important; + background-color: #ea644a !important; +} +.red.long-shadow, +.danger.long-shadow +{ + text-shadow: #e64525 1px 1px, #e64525 2px 2px, #e64525 3px 3px, #e64525 4px 4px, #e64525 5px 5px, #e64525 6px 6px, #e64525 7px 7px, #e64525 8px 8px, #e64525 9px 9px, #e64525 10px 10px, #e64525 11px 11px, #e64525 12px 12px, #e64525 14px 14px, #e64525 15px 15px, #e64525 16px 16px, #e64525 17px 17px, #e64525 18px 18px, #e64525 19px 19px, #e64525 20px 20px, #e64525 21px 21px, #e64525 22px 22px, #e64525 23px 23px, #e64525 24px 24px, #e64525 25px 25px, #e64525 26px 26px, #e64525 27px 27px, #e64525 28px 28px, #e64525 29px 29px, #e64525 30px 30px, #e64525 31px 31px, #e64525 32px 32px, #e64525 33px 33px, #e64525 34px 34px, #e64525 35px 35px, #e64525 36px 36px, #e64525 37px 37px, #e64525 38px 38px, #e64525 39px 39px, #e64525 40px 40px; +} +.brown, +.important +{ + color: #fff!important; + border-color: #bd7b46 !important; + background-color: #bd7b46 !important; +} +.brown.hover:hover, +.important.hover:hover, +tr.brown:hover, +tr.important:hover +{ + background-color: #ac6f3d !important; +} +.brown.outline, +.important.outline +{ + color: #bd7b46 !important; + background-color: transparent!important; +} +.brown.outline.hover-solid:hover, +.important.outline.hover-solid:hover, +.brown.outline .active, +.important.outline .active +{ + color: #fff!important; + background-color: #bd7b46 !important; +} +.brown.long-shadow, +.important.long-shadow +{ + text-shadow: #a16739 1px 1px, #a16739 2px 2px, #a16739 3px 3px, #a16739 4px 4px, #a16739 5px 5px, #a16739 6px 6px, #a16739 7px 7px, #a16739 8px 8px, #a16739 9px 9px, #a16739 10px 10px, #a16739 11px 11px, #a16739 12px 12px, #a16739 14px 14px, #a16739 15px 15px, #a16739 16px 16px, #a16739 17px 17px, #a16739 18px 18px, #a16739 19px 19px, #a16739 20px 20px, #a16739 21px 21px, #a16739 22px 22px, #a16739 23px 23px, #a16739 24px 24px, #a16739 25px 25px, #a16739 26px 26px, #a16739 27px 27px, #a16739 28px 28px, #a16739 29px 29px, #a16739 30px 30px, #a16739 31px 31px, #a16739 32px 32px, #a16739 33px 33px, #a16739 34px 34px, #a16739 35px 35px, #a16739 36px 36px, #a16739 37px 37px, #a16739 38px 38px, #a16739 39px 39px, #a16739 40px 40px; +} +.purple, +.special +{ + color: #fff!important; + border-color: #8666b8 !important; + background-color: #8666b8 !important; +} +.purple.hover:hover, +.special.hover:hover, +tr.purple:hover, +tr.special:hover +{ + background-color: #7855b0 !important; +} +.purple.outline, +.special.outline +{ + color: #8666b8 !important; + background-color: transparent!important; +} +.purple.outline.hover-solid:hover, +.special.outline.hover-solid:hover, +.purple.outline .active, +.special.outline .active +{ + color: #fff!important; + background-color: #8666b8 !important; +} +.purple.long-shadow, +.special.long-shadow +{ + text-shadow: #714ea7 1px 1px, #714ea7 2px 2px, #714ea7 3px 3px, #714ea7 4px 4px, #714ea7 5px 5px, #714ea7 6px 6px, #714ea7 7px 7px, #714ea7 8px 8px, #714ea7 9px 9px, #714ea7 10px 10px, #714ea7 11px 11px, #714ea7 12px 12px, #714ea7 14px 14px, #714ea7 15px 15px, #714ea7 16px 16px, #714ea7 17px 17px, #714ea7 18px 18px, #714ea7 19px 19px, #714ea7 20px 20px, #714ea7 21px 21px, #714ea7 22px 22px, #714ea7 23px 23px, #714ea7 24px 24px, #714ea7 25px 25px, #714ea7 26px 26px, #714ea7 27px 27px, #714ea7 28px 28px, #714ea7 29px 29px, #714ea7 30px 30px, #714ea7 31px 31px, #714ea7 32px 32px, #714ea7 33px 33px, #714ea7 34px 34px, #714ea7 35px 35px, #714ea7 36px 36px, #714ea7 37px 37px, #714ea7 38px 38px, #714ea7 39px 39px, #714ea7 40px 40px; +} +.dark +{ + color: #fff!important; + border-color: #333 !important; + background-color: #333 !important; +} +.dark.hover:hover, +tr.dark:hover +{ + background-color: #262626 !important; +} +.dark.outline +{ + color: #333 !important; + background-color: transparent!important; +} +.dark.outline.hover-solid:hover, +.dark.outline .active +{ + color: #fff!important; + background-color: #333 !important; +} +.dark.long-shadow +{ + text-shadow: #1f1f1f 1px 1px, #1f1f1f 2px 2px, #1f1f1f 3px 3px, #1f1f1f 4px 4px, #1f1f1f 5px 5px, #1f1f1f 6px 6px, #1f1f1f 7px 7px, #1f1f1f 8px 8px, #1f1f1f 9px 9px, #1f1f1f 10px 10px, #1f1f1f 11px 11px, #1f1f1f 12px 12px, #1f1f1f 14px 14px, #1f1f1f 15px 15px, #1f1f1f 16px 16px, #1f1f1f 17px 17px, #1f1f1f 18px 18px, #1f1f1f 19px 19px, #1f1f1f 20px 20px, #1f1f1f 21px 21px, #1f1f1f 22px 22px, #1f1f1f 23px 23px, #1f1f1f 24px 24px, #1f1f1f 25px 25px, #1f1f1f 26px 26px, #1f1f1f 27px 27px, #1f1f1f 28px 28px, #1f1f1f 29px 29px, #1f1f1f 30px 30px, #1f1f1f 31px 31px, #1f1f1f 32px 32px, #1f1f1f 33px 33px, #1f1f1f 34px 34px, #1f1f1f 35px 35px, #1f1f1f 36px 36px, #1f1f1f 37px 37px, #1f1f1f 38px 38px, #1f1f1f 39px 39px, #1f1f1f 40px 40px; +} +.black, +.inverse +{ + color: #fff!important; + border-color: #000 !important; + background-color: #000 !important; +} +.black.hover:hover, +.inverse.hover:hover, +tr.black:hover, +tr.inverse:hover +{ + background-color: #000 !important; +} +.black.outline, +.inverse.outline +{ + color: #000 !important; + background-color: transparent!important; +} +.black.outline.hover-solid:hover, +.inverse.outline.hover-solid:hover, +.black.outline .active, +.inverse.outline .active +{ + color: #fff!important; + background-color: #000 !important; +} +.black.long-shadow, +.inverse.long-shadow +{ + text-shadow: #000 1px 1px, #000 2px 2px, #000 3px 3px, #000 4px 4px, #000 5px 5px, #000 6px 6px, #000 7px 7px, #000 8px 8px, #000 9px 9px, #000 10px 10px, #000 11px 11px, #000 12px 12px, #000 14px 14px, #000 15px 15px, #000 16px 16px, #000 17px 17px, #000 18px 18px, #000 19px 19px, #000 20px 20px, #000 21px 21px, #000 22px 22px, #000 23px 23px, #000 24px 24px, #000 25px 25px, #000 26px 26px, #000 27px 27px, #000 28px 28px, #000 29px 29px, #000 30px 30px, #000 31px 31px, #000 32px 32px, #000 33px 33px, #000 34px 34px, #000 35px 35px, #000 36px 36px, #000 37px 37px, #000 38px 38px, #000 39px 39px, #000 40px 40px; +} +.primary-pale +{ + border-color: #ebf2f9 !important; + background-color: #ebf2f9 !important; +} +.primary-pale.hover-solid:hover, +tr.primary-pale:hover +{ + background-color: #d7e5f3 !important; +} +.primary-pale.outline +{ + color: #ebf2f9 !important; + border-color: #ebf2f9 !important; + background-color: transparent!important; +} +.primary-pale.outline.hover-solid:hover +{ + color: #ebf2f9; + background-color: #3280fc !important; +} +.primary-pale.text-tint, +.primary-pale .active +{ + color: #3280fc; +} +.primary-pale.long-shadow +{ + text-shadow: #ccdef0 1px 1px, #ccdef0 2px 2px, #ccdef0 3px 3px, #ccdef0 4px 4px, #ccdef0 5px 5px, #ccdef0 6px 6px, #ccdef0 7px 7px, #ccdef0 8px 8px, #ccdef0 9px 9px, #ccdef0 10px 10px, #ccdef0 11px 11px, #ccdef0 12px 12px, #ccdef0 14px 14px, #ccdef0 15px 15px, #ccdef0 16px 16px, #ccdef0 17px 17px, #ccdef0 18px 18px, #ccdef0 19px 19px, #ccdef0 20px 20px, #ccdef0 21px 21px, #ccdef0 22px 22px, #ccdef0 23px 23px, #ccdef0 24px 24px, #ccdef0 25px 25px, #ccdef0 26px 26px, #ccdef0 27px 27px, #ccdef0 28px 28px, #ccdef0 29px 29px, #ccdef0 30px 30px, #ccdef0 31px 31px, #ccdef0 32px 32px, #ccdef0 33px 33px, #ccdef0 34px 34px, #ccdef0 35px 35px, #ccdef0 36px 36px, #ccdef0 37px 37px, #ccdef0 38px 38px, #ccdef0 39px 39px, #ccdef0 40px 40px; +} +.secondary-pale +{ + border-color: #e1f5fe !important; + background-color: #e1f5fe !important; +} +.secondary-pale.hover-solid:hover, +tr.secondary-pale:hover +{ + background-color: #c8edfd !important; +} +.secondary-pale.outline +{ + color: #e1f5fe !important; + border-color: #e1f5fe !important; + background-color: transparent!important; +} +.secondary-pale.outline.hover-solid:hover +{ + color: #e1f5fe; + background-color: #145ccd !important; +} +.secondary-pale.text-tint, +.secondary-pale .active +{ + color: #145ccd; +} +.secondary-pale.long-shadow +{ + text-shadow: #bae8fd 1px 1px, #bae8fd 2px 2px, #bae8fd 3px 3px, #bae8fd 4px 4px, #bae8fd 5px 5px, #bae8fd 6px 6px, #bae8fd 7px 7px, #bae8fd 8px 8px, #bae8fd 9px 9px, #bae8fd 10px 10px, #bae8fd 11px 11px, #bae8fd 12px 12px, #bae8fd 14px 14px, #bae8fd 15px 15px, #bae8fd 16px 16px, #bae8fd 17px 17px, #bae8fd 18px 18px, #bae8fd 19px 19px, #bae8fd 20px 20px, #bae8fd 21px 21px, #bae8fd 22px 22px, #bae8fd 23px 23px, #bae8fd 24px 24px, #bae8fd 25px 25px, #bae8fd 26px 26px, #bae8fd 27px 27px, #bae8fd 28px 28px, #bae8fd 29px 29px, #bae8fd 30px 30px, #bae8fd 31px 31px, #bae8fd 32px 32px, #bae8fd 33px 33px, #bae8fd 34px 34px, #bae8fd 35px 35px, #bae8fd 36px 36px, #bae8fd 37px 37px, #bae8fd 38px 38px, #bae8fd 39px 39px, #bae8fd 40px 40px; +} +.accent-pale +{ + border-color: #fff8e1 !important; + background-color: #fff8e1 !important; +} +.accent-pale.hover-solid:hover, +tr.accent-pale:hover +{ + background-color: #fff2c7 !important; +} +.accent-pale.outline +{ + color: #fff8e1 !important; + border-color: #fff8e1 !important; + background-color: transparent!important; +} +.accent-pale.outline.hover-solid:hover +{ + color: #fff8e1; + background-color: #fcae32 !important; +} +.accent-pale.text-tint, +.accent-pale .active +{ + color: #fcae32; +} +.accent-pale.long-shadow +{ + text-shadow: #ffeeb8 1px 1px, #ffeeb8 2px 2px, #ffeeb8 3px 3px, #ffeeb8 4px 4px, #ffeeb8 5px 5px, #ffeeb8 6px 6px, #ffeeb8 7px 7px, #ffeeb8 8px 8px, #ffeeb8 9px 9px, #ffeeb8 10px 10px, #ffeeb8 11px 11px, #ffeeb8 12px 12px, #ffeeb8 14px 14px, #ffeeb8 15px 15px, #ffeeb8 16px 16px, #ffeeb8 17px 17px, #ffeeb8 18px 18px, #ffeeb8 19px 19px, #ffeeb8 20px 20px, #ffeeb8 21px 21px, #ffeeb8 22px 22px, #ffeeb8 23px 23px, #ffeeb8 24px 24px, #ffeeb8 25px 25px, #ffeeb8 26px 26px, #ffeeb8 27px 27px, #ffeeb8 28px 28px, #ffeeb8 29px 29px, #ffeeb8 30px 30px, #ffeeb8 31px 31px, #ffeeb8 32px 32px, #ffeeb8 33px 33px, #ffeeb8 34px 34px, #ffeeb8 35px 35px, #ffeeb8 36px 36px, #ffeeb8 37px 37px, #ffeeb8 38px 38px, #ffeeb8 39px 39px, #ffeeb8 40px 40px; +} +.green-pale, +.success-pale +{ + border-color: #ddf4df !important; + background-color: #ddf4df !important; +} +.green-pale.hover-solid:hover, +.success-pale.hover-solid:hover, +tr.green-pale:hover, +tr.success-pale:hover +{ + background-color: #caeecd !important; +} +.green-pale.outline, +.success-pale.outline +{ + color: #ddf4df !important; + border-color: #ddf4df !important; + background-color: transparent!important; +} +.green-pale.outline.hover-solid:hover, +.success-pale.outline.hover-solid:hover +{ + color: #ddf4df; + background-color: #38b03f !important; +} +.green-pale.text-tint, +.success-pale.text-tint, +.green-pale .active, +.success-pale .active +{ + color: #38b03f; +} +.green-pale.long-shadow, +.success-pale.long-shadow +{ + text-shadow: #beeac2 1px 1px, #beeac2 2px 2px, #beeac2 3px 3px, #beeac2 4px 4px, #beeac2 5px 5px, #beeac2 6px 6px, #beeac2 7px 7px, #beeac2 8px 8px, #beeac2 9px 9px, #beeac2 10px 10px, #beeac2 11px 11px, #beeac2 12px 12px, #beeac2 14px 14px, #beeac2 15px 15px, #beeac2 16px 16px, #beeac2 17px 17px, #beeac2 18px 18px, #beeac2 19px 19px, #beeac2 20px 20px, #beeac2 21px 21px, #beeac2 22px 22px, #beeac2 23px 23px, #beeac2 24px 24px, #beeac2 25px 25px, #beeac2 26px 26px, #beeac2 27px 27px, #beeac2 28px 28px, #beeac2 29px 29px, #beeac2 30px 30px, #beeac2 31px 31px, #beeac2 32px 32px, #beeac2 33px 33px, #beeac2 34px 34px, #beeac2 35px 35px, #beeac2 36px 36px, #beeac2 37px 37px, #beeac2 38px 38px, #beeac2 39px 39px, #beeac2 40px 40px; +} +.blue-pale, +.info-pale +{ + border-color: #ddf3f5 !important; + background-color: #ddf3f5 !important; +} +.blue-pale.hover-solid:hover, +.info-pale.hover-solid:hover, +tr.blue-pale:hover, +tr.info-pale:hover +{ + background-color: #c9ecef !important; +} +.blue-pale.outline, +.info-pale.outline +{ + color: #ddf3f5 !important; + border-color: #ddf3f5 !important; + background-color: transparent!important; +} +.blue-pale.outline.hover-solid:hover, +.info-pale.outline.hover-solid:hover +{ + color: #ddf3f5; + background-color: #03b8cf !important; +} +.blue-pale.text-tint, +.info-pale.text-tint, +.blue-pale .active, +.info-pale .active +{ + color: #03b8cf; +} +.blue-pale.long-shadow, +.info-pale.long-shadow +{ + text-shadow: #bde8ec 1px 1px, #bde8ec 2px 2px, #bde8ec 3px 3px, #bde8ec 4px 4px, #bde8ec 5px 5px, #bde8ec 6px 6px, #bde8ec 7px 7px, #bde8ec 8px 8px, #bde8ec 9px 9px, #bde8ec 10px 10px, #bde8ec 11px 11px, #bde8ec 12px 12px, #bde8ec 14px 14px, #bde8ec 15px 15px, #bde8ec 16px 16px, #bde8ec 17px 17px, #bde8ec 18px 18px, #bde8ec 19px 19px, #bde8ec 20px 20px, #bde8ec 21px 21px, #bde8ec 22px 22px, #bde8ec 23px 23px, #bde8ec 24px 24px, #bde8ec 25px 25px, #bde8ec 26px 26px, #bde8ec 27px 27px, #bde8ec 28px 28px, #bde8ec 29px 29px, #bde8ec 30px 30px, #bde8ec 31px 31px, #bde8ec 32px 32px, #bde8ec 33px 33px, #bde8ec 34px 34px, #bde8ec 35px 35px, #bde8ec 36px 36px, #bde8ec 37px 37px, #bde8ec 38px 38px, #bde8ec 39px 39px, #bde8ec 40px 40px; +} +.yellow-pale, +.warning-pale +{ + border-color: #fff0d5 !important; + background-color: #fff0d5 !important; +} +.yellow-pale.hover-solid:hover, +.warning-pale.hover-solid:hover, +tr.yellow-pale:hover, +tr.warning-pale:hover +{ + background-color: #ffe7bc !important; +} +.yellow-pale.outline, +.warning-pale.outline +{ + color: #fff0d5 !important; + border-color: #fff0d5 !important; + background-color: transparent!important; +} +.yellow-pale.outline.hover-solid:hover, +.warning-pale.outline.hover-solid:hover +{ + color: #fff0d5; + background-color: #f1a325 !important; +} +.yellow-pale.text-tint, +.warning-pale.text-tint, +.yellow-pale .active, +.warning-pale .active +{ + color: #f1a325; +} +.yellow-pale.long-shadow, +.warning-pale.long-shadow +{ + text-shadow: #ffe1ac 1px 1px, #ffe1ac 2px 2px, #ffe1ac 3px 3px, #ffe1ac 4px 4px, #ffe1ac 5px 5px, #ffe1ac 6px 6px, #ffe1ac 7px 7px, #ffe1ac 8px 8px, #ffe1ac 9px 9px, #ffe1ac 10px 10px, #ffe1ac 11px 11px, #ffe1ac 12px 12px, #ffe1ac 14px 14px, #ffe1ac 15px 15px, #ffe1ac 16px 16px, #ffe1ac 17px 17px, #ffe1ac 18px 18px, #ffe1ac 19px 19px, #ffe1ac 20px 20px, #ffe1ac 21px 21px, #ffe1ac 22px 22px, #ffe1ac 23px 23px, #ffe1ac 24px 24px, #ffe1ac 25px 25px, #ffe1ac 26px 26px, #ffe1ac 27px 27px, #ffe1ac 28px 28px, #ffe1ac 29px 29px, #ffe1ac 30px 30px, #ffe1ac 31px 31px, #ffe1ac 32px 32px, #ffe1ac 33px 33px, #ffe1ac 34px 34px, #ffe1ac 35px 35px, #ffe1ac 36px 36px, #ffe1ac 37px 37px, #ffe1ac 38px 38px, #ffe1ac 39px 39px, #ffe1ac 40px 40px; +} +.red-pale, +.danger-pale +{ + border-color: #ffe5e0 !important; + background-color: #ffe5e0 !important; +} +.red-pale.hover-solid:hover, +.danger-pale.hover-solid:hover, +tr.red-pale:hover, +tr.danger-pale:hover +{ + background-color: #ffd0c6 !important; +} +.red-pale.outline, +.danger-pale.outline +{ + color: #ffe5e0 !important; + border-color: #ffe5e0 !important; + background-color: transparent!important; +} +.red-pale.outline.hover-solid:hover, +.danger-pale.outline.hover-solid:hover +{ + color: #ffe5e0; + background-color: #ea644a !important; +} +.red-pale.text-tint, +.danger-pale.text-tint, +.red-pale .active, +.danger-pale .active +{ + color: #ea644a; +} +.red-pale.long-shadow, +.danger-pale.long-shadow +{ + text-shadow: #ffc3b7 1px 1px, #ffc3b7 2px 2px, #ffc3b7 3px 3px, #ffc3b7 4px 4px, #ffc3b7 5px 5px, #ffc3b7 6px 6px, #ffc3b7 7px 7px, #ffc3b7 8px 8px, #ffc3b7 9px 9px, #ffc3b7 10px 10px, #ffc3b7 11px 11px, #ffc3b7 12px 12px, #ffc3b7 14px 14px, #ffc3b7 15px 15px, #ffc3b7 16px 16px, #ffc3b7 17px 17px, #ffc3b7 18px 18px, #ffc3b7 19px 19px, #ffc3b7 20px 20px, #ffc3b7 21px 21px, #ffc3b7 22px 22px, #ffc3b7 23px 23px, #ffc3b7 24px 24px, #ffc3b7 25px 25px, #ffc3b7 26px 26px, #ffc3b7 27px 27px, #ffc3b7 28px 28px, #ffc3b7 29px 29px, #ffc3b7 30px 30px, #ffc3b7 31px 31px, #ffc3b7 32px 32px, #ffc3b7 33px 33px, #ffc3b7 34px 34px, #ffc3b7 35px 35px, #ffc3b7 36px 36px, #ffc3b7 37px 37px, #ffc3b7 38px 38px, #ffc3b7 39px 39px, #ffc3b7 40px 40px; +} +.brown-pale, +.important-pale +{ + border-color: #f7ebe1 !important; + background-color: #f7ebe1 !important; +} +.brown-pale.hover-solid:hover, +.important-pale.hover-solid:hover, +tr.brown-pale:hover, +tr.important-pale:hover +{ + background-color: #f2decd !important; +} +.brown-pale.outline, +.important-pale.outline +{ + color: #f7ebe1 !important; + border-color: #f7ebe1 !important; + background-color: transparent!important; +} +.brown-pale.outline.hover-solid:hover, +.important-pale.outline.hover-solid:hover +{ + color: #f7ebe1; + background-color: #bd7b46 !important; +} +.brown-pale.text-tint, +.important-pale.text-tint, +.brown-pale .active, +.important-pale .active +{ + color: #bd7b46; +} +.brown-pale.long-shadow, +.important-pale.long-shadow +{ + text-shadow: #eed6c1 1px 1px, #eed6c1 2px 2px, #eed6c1 3px 3px, #eed6c1 4px 4px, #eed6c1 5px 5px, #eed6c1 6px 6px, #eed6c1 7px 7px, #eed6c1 8px 8px, #eed6c1 9px 9px, #eed6c1 10px 10px, #eed6c1 11px 11px, #eed6c1 12px 12px, #eed6c1 14px 14px, #eed6c1 15px 15px, #eed6c1 16px 16px, #eed6c1 17px 17px, #eed6c1 18px 18px, #eed6c1 19px 19px, #eed6c1 20px 20px, #eed6c1 21px 21px, #eed6c1 22px 22px, #eed6c1 23px 23px, #eed6c1 24px 24px, #eed6c1 25px 25px, #eed6c1 26px 26px, #eed6c1 27px 27px, #eed6c1 28px 28px, #eed6c1 29px 29px, #eed6c1 30px 30px, #eed6c1 31px 31px, #eed6c1 32px 32px, #eed6c1 33px 33px, #eed6c1 34px 34px, #eed6c1 35px 35px, #eed6c1 36px 36px, #eed6c1 37px 37px, #eed6c1 38px 38px, #eed6c1 39px 39px, #eed6c1 40px 40px; +} +.purple-pale, +.special-pale +{ + border-color: #f5eeff !important; + background-color: #f5eeff !important; +} +.purple-pale.hover-solid:hover, +.special-pale.hover-solid:hover, +tr.purple-pale:hover, +tr.special-pale:hover +{ + background-color: #e6d5ff !important; +} +.purple-pale.outline, +.special-pale.outline +{ + color: #f5eeff !important; + border-color: #f5eeff !important; + background-color: transparent!important; +} +.purple-pale.outline.hover-solid:hover, +.special-pale.outline.hover-solid:hover +{ + color: #f5eeff; + background-color: #8666b8 !important; +} +.purple-pale.text-tint, +.special-pale.text-tint, +.purple-pale .active, +.special-pale .active +{ + color: #8666b8; +} +.purple-pale.long-shadow, +.special-pale.long-shadow +{ + text-shadow: #ddc5ff 1px 1px, #ddc5ff 2px 2px, #ddc5ff 3px 3px, #ddc5ff 4px 4px, #ddc5ff 5px 5px, #ddc5ff 6px 6px, #ddc5ff 7px 7px, #ddc5ff 8px 8px, #ddc5ff 9px 9px, #ddc5ff 10px 10px, #ddc5ff 11px 11px, #ddc5ff 12px 12px, #ddc5ff 14px 14px, #ddc5ff 15px 15px, #ddc5ff 16px 16px, #ddc5ff 17px 17px, #ddc5ff 18px 18px, #ddc5ff 19px 19px, #ddc5ff 20px 20px, #ddc5ff 21px 21px, #ddc5ff 22px 22px, #ddc5ff 23px 23px, #ddc5ff 24px 24px, #ddc5ff 25px 25px, #ddc5ff 26px 26px, #ddc5ff 27px 27px, #ddc5ff 28px 28px, #ddc5ff 29px 29px, #ddc5ff 30px 30px, #ddc5ff 31px 31px, #ddc5ff 32px 32px, #ddc5ff 33px 33px, #ddc5ff 34px 34px, #ddc5ff 35px 35px, #ddc5ff 36px 36px, #ddc5ff 37px 37px, #ddc5ff 38px 38px, #ddc5ff 39px 39px, #ddc5ff 40px 40px; +} +.gray +{ + border-color: rgba(0, 0, 0, .055) !important; + background-color: rgba(0, 0, 0, .055) !important; +} +.gray.hover-solid:hover, +tr.gray:hover +{ + background-color: rgba(0, 0, 0, .055) !important; +} +.gray.outline +{ + color: rgba(0, 0, 0, .055) !important; + border-color: rgba(0, 0, 0, .055) !important; + background-color: transparent!important; +} +.gray.outline.hover-solid:hover +{ + color: rgba(0, 0, 0, .055); + background-color: #333 !important; +} +.gray.text-tint, +.gray .active +{ + color: #333; +} +.gray.long-shadow +{ + text-shadow: rgba(0, 0, 0, .055) 1px 1px, rgba(0, 0, 0, .055) 2px 2px, rgba(0, 0, 0, .055) 3px 3px, rgba(0, 0, 0, .055) 4px 4px, rgba(0, 0, 0, .055) 5px 5px, rgba(0, 0, 0, .055) 6px 6px, rgba(0, 0, 0, .055) 7px 7px, rgba(0, 0, 0, .055) 8px 8px, rgba(0, 0, 0, .055) 9px 9px, rgba(0, 0, 0, .055) 10px 10px, rgba(0, 0, 0, .055) 11px 11px, rgba(0, 0, 0, .055) 12px 12px, rgba(0, 0, 0, .055) 14px 14px, rgba(0, 0, 0, .055) 15px 15px, rgba(0, 0, 0, .055) 16px 16px, rgba(0, 0, 0, .055) 17px 17px, rgba(0, 0, 0, .055) 18px 18px, rgba(0, 0, 0, .055) 19px 19px, rgba(0, 0, 0, .055) 20px 20px, rgba(0, 0, 0, .055) 21px 21px, rgba(0, 0, 0, .055) 22px 22px, rgba(0, 0, 0, .055) 23px 23px, rgba(0, 0, 0, .055) 24px 24px, rgba(0, 0, 0, .055) 25px 25px, rgba(0, 0, 0, .055) 26px 26px, rgba(0, 0, 0, .055) 27px 27px, rgba(0, 0, 0, .055) 28px 28px, rgba(0, 0, 0, .055) 29px 29px, rgba(0, 0, 0, .055) 30px 30px, rgba(0, 0, 0, .055) 31px 31px, rgba(0, 0, 0, .055) 32px 32px, rgba(0, 0, 0, .055) 33px 33px, rgba(0, 0, 0, .055) 34px 34px, rgba(0, 0, 0, .055) 35px 35px, rgba(0, 0, 0, .055) 36px 36px, rgba(0, 0, 0, .055) 37px 37px, rgba(0, 0, 0, .055) 38px 38px, rgba(0, 0, 0, .055) 39px 39px, rgba(0, 0, 0, .055) 40px 40px; +} +.white +{ + border-color: #fff !important; + background-color: #fff !important; +} +.white.hover-solid:hover, +tr.white:hover +{ + background-color: #f2f2f2 !important; +} +.white.outline +{ + color: #fff !important; + border-color: #fff !important; + background-color: transparent!important; +} +.white.outline.hover-solid:hover +{ + color: #fff; + background-color: #333 !important; +} +.white.text-tint, +.white .active +{ + color: #333; +} +.white.long-shadow +{ + text-shadow: #ebebeb 1px 1px, #ebebeb 2px 2px, #ebebeb 3px 3px, #ebebeb 4px 4px, #ebebeb 5px 5px, #ebebeb 6px 6px, #ebebeb 7px 7px, #ebebeb 8px 8px, #ebebeb 9px 9px, #ebebeb 10px 10px, #ebebeb 11px 11px, #ebebeb 12px 12px, #ebebeb 14px 14px, #ebebeb 15px 15px, #ebebeb 16px 16px, #ebebeb 17px 17px, #ebebeb 18px 18px, #ebebeb 19px 19px, #ebebeb 20px 20px, #ebebeb 21px 21px, #ebebeb 22px 22px, #ebebeb 23px 23px, #ebebeb 24px 24px, #ebebeb 25px 25px, #ebebeb 26px 26px, #ebebeb 27px 27px, #ebebeb 28px 28px, #ebebeb 29px 29px, #ebebeb 30px 30px, #ebebeb 31px 31px, #ebebeb 32px 32px, #ebebeb 33px 33px, #ebebeb 34px 34px, #ebebeb 35px 35px, #ebebeb 36px 36px, #ebebeb 37px 37px, #ebebeb 38px 38px, #ebebeb 39px 39px, #ebebeb 40px 40px; +} +.highlight +{ + background-color: #c6ff00 !important; +} +.text-primary +{ + color: #3280fc; +} +.text-secondary +{ + color: #145ccd; +} +.text-green, +.text-success +{ + color: #38b03f; +} +.text-blue, +.text-info +{ + color: #03b8cf; +} +.text-yellow, +.text-warning +{ + color: #f1a325; +} +.text-red, +.text-danger +{ + color: #ea644a; +} +.text-brown, +.text-important +{ + color: #bd7b46; +} +.text-purple, +.text-special +{ + color: #8666b8; +} +.text-gray +{ + color: rgba(0, 0, 0, .5); +} +.text-black +{ + color: #000; +} +.text-white +{ + color: #fff; +} +.text-dark +{ + color: #333; +} +.text-accent +{ + color: #fcae32; +} +.clean +{ + background-color: transparent!important; +} +.muted +{ + opacity: .5 !important; +} +.muted-light +{ + opacity: .75 !important; +} +.muted-dark +{ + opacity: .25 !important; +} +.long-shadow +{ + overflow: hidden; +} +.outline-cover +{ + border: .05rem solid rgba(0, 0, 0, .1) !important; +} +.darken +{ + background-color: rgba(0, 0, 0, .1) !important; +} +.darken-2 +{ + background-color: rgba(0, 0, 0, .2) !important; +} +.darken-3 +{ + background-color: rgba(0, 0, 0, .3) !important; +} +.lighten +{ + background-color: rgba(255, 255, 255, .1) !important; +} +.lighten-2 +{ + background-color: rgba(255, 255, 255, .2) !important; +} +.lighten-3 +{ + background-color: rgba(255, 255, 255, .3) !important; +} +.state, +a, +.btn +{ + position: relative; +} +.state:after, +a:after, +.btn:after +{ + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + + display: block; + + content: ' '; + transition: .2s cubic-bezier(.175, .885, .32, 1); + transform: scale(.6); + pointer-events: none; + + opacity: 0; + background-color: transparent; + box-shadow: 0 0 0 .05rem rgba(0, 0, 0, .09); +} +.state.circle:after, +a.circle:after, +.btn.circle:after +{ + border-radius: 50%; +} +.state.rounded:after, +a.rounded:after, +.btn.rounded:after +{ + border-radius: .15rem; +} +.state:hover:after, +a:hover:after, +.state.hover:after, +a.hover:after, +.btn:hover:after, +.btn.hover:after +{ + transform: scale(1); + + opacity: 1; + background-color: rgba(0, 0, 0, .07); + box-shadow: 0 0 0 .05rem rgba(0, 0, 0, .07); +} +.state.focus, +a.focus, +.state:focus, +a:focus, +.btn.focus, +.btn:focus +{ + outline: none; +} +.state.focus:after, +a.focus:after, +.state:focus:after, +a:focus:after, +.btn.focus:after, +.btn:focus:after +{ + transform: scale(1); + + opacity: 1; + background-color: rgba(0, 0, 0, .07); + box-shadow: inset 0 0 0 .05rem rgba(33, 150, 243, .4), 0 0 0 .1rem rgba(33, 150, 243, .4); +} +.open > .state:after, +.open > a:after, +.state.open:after, +a.open:after, +.state.active:after, +a.active:after, +.state:active:after, +a:active:after, +.open > .btn:after, +.btn.open:after, +.btn.active:after, +.btn:active:after +{ + transform: scale(1); + + opacity: 1; + background-color: rgba(0, 0, 0, .07); + box-shadow: none; +} +.state:active:after, +a:active:after, +.btn:active:after +{ + transform: scale(.95); + + background-color: rgba(0, 0, 0, .09); + box-shadow: inset 0 0 0 .05rem rgba(33, 150, 243, .2), 0 0 0 .1rem rgba(33, 150, 243, .2); +} +.disabled, +.disabled > a, +[disabled] +{ + cursor: not-allowed !important; + pointer-events: none!important; + + opacity: .5 !important; + box-shadow: none!important; + + filter: grayscale(100%); +} +.disabled:after, +.disabled > a:after, +[disabled]:after +{ + display: none !important; +} +.as-load-indicator, +.loading +{ + color: transparent!important; +} +.as-load-indicator > *, +.loading > * +{ + visibility: hidden; +} +.as-load-indicator:before, +.loading:before +{ + position: absolute; + top: 50%; + left: 50%; + + display: block; + + width: .9rem; + height: .9rem; + margin-top: -.45rem; + margin-left: -.45rem; + + content: ' '; + transition: opacity .2s cubic-bezier(.175, .885, .32, 1); + animation: spin 2s infinite linear; + + border: .15rem dotted rgba(255, 255, 255, .5); + border-color: rgba(255, 255, 255, .1) rgba(255, 255, 255, .4) rgba(255, 255, 255, .5) rgba(255, 255, 255, .6); + border-radius: 50%; +} +.as-load-indicator.loading-light:before, +.loading.loading-light:before +{ + border-color: rgba(0, 0, 0, .1) rgba(0, 0, 0, .2) rgba(0, 0, 0, .3) rgba(0, 0, 0, .4); +} +.as-load-indicator:before +{ + animation: none; + + opacity: 0; +} +.as-load-indicator.loading:before +{ + animation: spin 2s infinite linear; + + opacity: 1; +} +.code, +code, +kbd, +pre, +samp +{ + font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; +} +kbd, +code +{ + font-size: .6rem; + + padding: .1rem .25rem; + + color: #ea644a; + background-color: rgba(0, 0, 0, .05); +} +kbd +{ + font-weight: bold; + + color: #666; + border: .05rem solid rgba(0, 0, 0, .1); + border-bottom-width: .1rem; + border-radius: .1rem; +} +pre +{ + font-size: .6rem; + + display: block; + overflow: auto; + + max-width: 100%; + padding: .5rem; + + word-wrap: normal; + word-break: normal; + + border: .05rem solid transparent; + background-color: rgba(0, 0, 0, .05); +} +pre code +{ + font-size: inherit; + + padding: 0; + + color: inherit; + border-radius: 0; + background-color: transparent; +} +.com +{ + color: #93a1a1; +} +.lit +{ + color: #195f91; +} +.pun, +.opn, +.clo +{ + color: #93a1a1; +} +.fun +{ + color: #dc322f; +} +.str, +.atv +{ + color: #d14; +} +.kwd, +.prettyprint .tag +{ + color: #1e347b; +} +.typ, +.atn, +.dec, +.var +{ + color: teal; +} +.pln +{ + color: #48484c; +} +.prettyprint.linenums +{ + padding: .25rem .5rem .25rem 0; + + word-wrap: break-word; + word-break: break-all; + + border: .05rem solid rgba(0, 0, 0, .1); + box-shadow: inset 2rem 0 0 #fbfbfc, inset 2.05rem 0 0 #ececf0; +} +.prettyprint.linenums code +{ + white-space: pre-wrap; +} +.prettyprint ol.linenums +{ + line-height: 1rem; + + margin-bottom: 0; + padding-left: 2.25rem; + + color: #bebec5; + text-shadow: 0 .05rem 0 #fff; +} diff --git a/public/static/css/mzui.min.css b/public/static/css/mzui.min.css new file mode 100644 index 0000000..ed14a1a --- /dev/null +++ b/public/static/css/mzui.min.css @@ -0,0 +1,4 @@ +/*! + * MZUI: standard - v1.0.1 - 2018-01-09 + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + *//*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%}body{margin:0}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}a{-webkit-text-decoration-skip:objects}abbr[title]{text-decoration:underline dotted}b,strong{font-weight:bolder}h1{font-size:2em;margin:.67em 0}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}code,kbd,pre,samp{font-family:monospace,sans-serif;font-size:1em}button,input,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}fieldset{margin:0 2px;padding:.35em .625em .75em;border:1px solid silver}legend{padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{opacity:.54;color:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}html{font-size:20px;box-sizing:border-box;-webkit-tap-highlight-color:transparent}*,:after,:before{box-sizing:inherit}body{font-family:'Helvetica Neue',Helvetica,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:.7rem;line-height:1.42857143;color:#333;background-color:rgba(0,0,0,.055)}a{cursor:pointer;text-decoration:none;color:inherit}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}img{max-width:100%;height:auto;vertical-align:middle}table{max-width:100%;border-collapse:collapse}th{text-align:left}pre{overflow:auto;margin:0}ol,p,table,ul{margin:0}.clearfix:after,.clearfix:before{display:table;content:' '}.clearfix:after{clear:both}.pull-right{float:right!important}.pull-left{float:left!important}.block{display:block!important}.inline{display:inline!important}.inline-block{display:inline-block!important}.hidden,.hide-empty:empty,.template{display:none!important}.invisible{visibility:hidden}.fluid{width:100%!important}.fluid-v,.fluid.column{height:100%!important}h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:700;line-height:1.1;margin:0 0 .5rem 0;color:inherit}h1{font-size:1.2rem}h2{font-size:1rem}h3{font-size:.9rem}h4{font-size:.8rem}h5{font-size:.7rem}h6{font-size:.6rem}.lead{font-size:.8rem;font-weight:300}.small,small{font-size:85.71428571%}.large{font-size:150%}.strong,strong{font-weight:bolder}.thin{font-weight:lighter}.mark,mark{padding:.1rem;background-color:#fff0d5}.text-link{color:#3280fc}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-nowrap{white-space:nowrap}.text-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-line-through{text-decoration:line-through}.text-hide{font:0/0 a;color:transparent;text-shadow:none}hr{margin-top:.5rem;margin-bottom:.5rem;border:0;border-top:.05rem solid rgba(0,0,0,.1)}hr.space{margin-bottom:.5rem;border-color:transparent}blockquote{margin:.5rem;padding:.5rem .5rem;border-left:.25rem solid rgba(0,0,0,.1)}ol,ul{margin:.5rem;padding-left:1rem}blockquote,embed,iframe,img,object,ol,p,pre,table,ul,video{margin:0 0 .5rem 0}.page{position:fixed;z-index:1050;top:0;right:0;bottom:0;left:0;overflow-y:auto;background-color:rgba(0,0,0,.055)}.container{margin-right:auto;margin-left:auto;padding-right:.5rem;padding-left:.5rem}@media (min-width:38.4rem){.container{max-width:36rem}}@media (min-width:49.6rem){.container{max-width:47rem}}@media (min-width:60rem){.container{max-width:59rem}}.dock{position:absolute!important}.affix{position:fixed!important}.relative{position:relative!important}.static{position:static!important}.affix,.dock,.dock-bottom,.dock-left,.dock-right,.dock-top{position:absolute;z-index:1030;top:0;right:0;bottom:0;left:0;transition:left .4s cubic-bezier(.175,.885,.32,1),top .4s cubic-bezier(.175,.885,.32,1),right .4s cubic-bezier(.175,.885,.32,1),bottom .4s cubic-bezier(.175,.885,.32,1),transform .4s cubic-bezier(.175,.885,.32,1),box-shadow .4s cubic-bezier(.175,.885,.32,1);transform:translate(0,0)}.dock-top{bottom:auto}.dock-bottom{top:auto}.dock-left{right:auto}.dock-right{left:auto}.affix.dock-top{box-shadow:inset 0 -.05rem 0 rgba(0,0,0,.1)}.affix.dock-bottom{box-shadow:inset 0 .05rem 0 rgba(0,0,0,.1)}.in-scroll .affix.dock-top{box-shadow:rgba(0,0,0,.12) 0 .05rem .3rem,rgba(0,0,0,.15) 0 .05rem .2rem}.in-scroll .affix.dock-bottom{box-shadow:rgba(0,0,0,.12) 0 -.05rem .3rem,rgba(0,0,0,.15) 0 -.05rem .2rem}.in-scroll.scroll-down .affix.dock-top.dock-auto{transform:translate(0,-99%);box-shadow:none}.in-scroll.scroll-down .affix.dock-bottom.dock-auto{transform:translate(0,99%);box-shadow:none}.listen-scroll{transition:box-shadow .4s cubic-bezier(.175,.885,.32,1)}.listen-scroll.in-scroll{box-shadow:inset rgba(0,0,0,.05) 0 .05rem .25rem,inset rgba(0,0,0,.08) 0 .05rem .1rem}.flex{display:-ms-flexbox!important;display:flex!important}.flex-inline{display:-ms-inline-flexbox!important;display:inline-flex!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.space-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.flex-center,.justify-center{-ms-flex-pack:center!important;justify-content:center!important}.space-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-middle,.flex-middle{-ms-flex-align:center!important;align-items:center!important}.content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.content-center{-ms-flex-line-pack:center!important;align-content:center!important}.content-space-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.content-space-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.center-content{display:-ms-flexbox!important;display:flex!important;-ms-flex-pack:center!important;justify-content:center!important;-ms-flex-align:center!important;align-items:center!important}.flex-first{-ms-flex-order:-1;order:-1}.flex-last{-ms-flex-order:1;order:1}.flex-auto{-ms-flex:auto!important;flex:auto!important}.flex-none{-ms-flex:none!important;flex:none!important}.flex-1{-ms-flex:1!important;flex:1!important}.selft-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-middle{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.justified{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.justified>*{-ms-flex:auto!important;flex:auto!important}.justified>.flex-none{-ms-flex:none!important;flex:none!important}.column,.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-ms-flex:auto;flex:auto}.column.single,.row.single{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.flex-row,.row{flex-direction:row;-ms-flex-direction:row}.row-reverse{flex-direction:row-reverse;-ms-flex-direction:row-reverse}.column,.flex-column{flex-direction:column;-ms-flex-direction:column}.column-reverse{flex-direction:column-reverse;-ms-flex-direction:column-reverse}.cell,[class*=' cell-'],[class^=cell-]{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch}.cell:not(.fixed),.tile{max-width:100%;-ms-flex:auto;flex:auto}.cell.fixed,[class*=' cell-'],[class^=cell-]{-ms-flex:none;flex:none}.row>.cell-1{width:8.33333333%}.row>.cell-2{width:16.66666667%}.row>.cell-3{width:25%}.row>.cell-4{width:33.33333333%}.row>.cell-5{width:41.66666667%}.row>.cell-6{width:50%}.row>.cell-7{width:58.33333333%}.row>.cell-8{width:66.66666667%}.row>.cell-9{width:75%}.row>.cell-10{width:83.33333333%}.row>.cell-11{width:91.66666667%}.row>.cell-12{width:100%}.column>.cell-1{height:8.33333333%}.column>.cell-2{height:16.66666667%}.column>.cell-3{height:25%}.column>.cell-4{height:33.33333333%}.column>.cell-5{height:41.66666667%}.column>.cell-6{height:50%}.column>.cell-7{height:58.33333333%}.column>.cell-8{height:66.66666667%}.column>.cell-9{height:75%}.column>.cell-10{height:83.33333333%}.column>.cell-11{height:91.66666667%}.column>.cell-12{height:100%}.column,.row{margin:-.25rem -.25rem 0}.column:not(:last-child),.row:not(:last-child){margin-bottom:.25rem}.column .column,.column .row,.row .column,.row .row{margin:-.25rem}.column .cell,.column [class*=' cell-'],.column [class^=cell-],.row .cell,.row [class*=' cell-'],.row [class^=cell-]{padding:.25rem}.column.gutter-lg,.row.gutter-lg{margin:-.5rem -.5rem 0}.column.gutter-lg:not(:last-child),.row.gutter-lg:not(:last-child){margin-bottom:.5rem}.column.gutter-lg .column,.column.gutter-lg .row,.row.gutter-lg .column,.row.gutter-lg .row{margin:-.5rem}.column.gutter-lg .cell,.column.gutter-lg [class*=' cell-'],.column.gutter-lg [class^=cell-],.row.gutter-lg .cell,.row.gutter-lg [class*=' cell-'],.row.gutter-lg [class^=cell-]{padding:.5rem}.column.gutter-sm,.row.gutter-sm{margin:-.125rem -.125rem 0}.column.gutter-sm:not(:last-child),.row.gutter-sm:not(:last-child){margin-bottom:.125rem}.column.gutter-sm .column,.column.gutter-sm .row,.row.gutter-sm .column,.row.gutter-sm .row{margin:-.125rem}.column.gutter-sm .cell,.column.gutter-sm [class*=' cell-'],.column.gutter-sm [class^=cell-],.row.gutter-sm .cell,.row.gutter-sm [class*=' cell-'],.row.gutter-sm [class^=cell-]{padding:.125rem}.column.gutterless,.column.gutterless .column,.column.gutterless .row,.row.gutterless,.row.gutterless .column,.row.gutterless .row{margin:0!important}.column.gutterless .cell,.column.gutterless [class*=' cell-'],.column.gutterless [class^=cell-],.row.gutterless .cell,.row.gutterless [class*=' cell-'],.row.gutterless [class^=cell-]{padding:0!important}.scroll-x{overflow-x:auto}.scroll-y{overflow-y:auto}.scroll-none{overflow:hidden}.fade{transition:.2s cubic-bezier(.175,.885,.32,1);opacity:0}.fade.in{opacity:1}.scale{transition:.2s cubic-bezier(.175,.885,.32,1);transform:scale(.8)}.scale.in{transform:scale(1)}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;overflow:hidden;transition:ease height .2s}[class*=' scale-from-'],[class*=' enter-from-'],[class^=scale-from-],[class^=enter-from-]{transition:.2s cubic-bezier(.175,.885,.32,1)}[class*=' scale-from-'].in,[class*=' enter-from-'].in,[class^=scale-from-].in,[class^=enter-from-].in{transform:scale(1) translate(0,0);opacity:1}.scale-from-top{transform:scale(.8) translate(0,-30%);opacity:0}.scale-from-bottom{transform:scale(.8) translate(0,30%);opacity:0}.scale-from-left{transform:scale(.8) translate(-30%,0);opacity:0}.scale-from-right{transform:scale(.8) translate(30%,0);opacity:0}.scale-from-center{transform:scale(.8);opacity:0}.enter-from-top{transform:translate(0,-105%)}.enter-from-bottom{transform:translate(0,105%)}.enter-from-left{transform:translate(-105%,0)}.enter-from-right{transform:translate(105%,0)}.enter-from-center{transform:scale(.8) translate(0,50%);opacity:0}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.spin{animation:spin 2s infinite linear}.spin-fast{animation:spin 1s infinite linear}@font-face{font-family:ZenIcon;font-weight:400;font-style:normal;src:url(../fonts/zenicon.eot?v=1.3.0);src:url(../fonts/zenicon.eot?#iefix&v=1.3.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=1.3.0) format('woff'),url(../fonts/zenicon.ttf?v=1.3.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=1.3.0) format('svg')}[class*=' icon-'],[class^=icon-]{font-family:ZenIcon;font-size:.7rem;font-weight:400;font-style:normal;font-variant:normal;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:.7rem;text-align:center}.icon-3x{font-size:2.1rem}.icon-2x{font-size:1.4rem}a .icon.spin{display:inline-block;text-decoration:none}.icon.flip-h:before,.icon.flip-v:before,.icon.rotate-180:before,.icon.rotate-270:before,.icon.rotate-90:before{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-chanzhi:before{content:'\e906'}.icon-chanzhi-pro:before{content:'\e905'}.icon-zsite:before{content:'\e904'}.icon-zsite-pro:before{content:'\e903'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-plus-sign-alt:before{content:'\f0fe'}.icon-check-minus:before{content:'\e71d'}.icon-check-plus:before{content:'\f196'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}.avatar{display:-ms-inline-flexbox;display:inline-flex;overflow:hidden;flex-direction:column;width:1.5rem;height:1.5rem;vertical-align:middle;background-position:center;background-size:cover;-ms-flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.avatar img{display:block;width:100%;height:100%;margin:0}.avatar-sm{font-size:.6rem;width:1rem;height:1rem}.avatar-lg{font-size:1rem;width:2rem;height:2rem}.avatar-lg>.icon{font-size:1rem}.avatar-xl{font-size:1.75rem;width:3.5rem;height:3.5rem}.avatar-xl>.icon{font-size:1.75rem}.nav{display:-ms-flexbox;display:flex;overflow-x:auto;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.nav>a{display:-ms-flexbox;display:flex;min-width:2rem;height:2rem;padding:0 .5rem;opacity:.8;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.nav>a.active{font-weight:700;opacity:1}.nav-secondary{box-shadow:inset 0 -.05rem 0 rgba(0,0,0,.1)}.nav-secondary>.active{box-shadow:inset 0 -.1rem 0 #fff}.nav-secondary.primary-pale>.active{box-shadow:inset 0 -.1rem 0 #3280fc}.nav-secondary.success-pale>.active{box-shadow:inset 0 -.1rem 0 #38b03f}.nav-secondary.danger-pale>.active{box-shadow:inset 0 -.1rem 0 #ea644a}.nav-secondary.warning-pale>.active{box-shadow:inset 0 -.1rem 0 #f1a325}.nav-secondary.important-pale>.active{box-shadow:inset 0 -.1rem 0 #bd7b46}.nav-secondary.special-pale>.active{box-shadow:inset 0 -.1rem 0 #8666b8}.nav.circle{border-radius:1rem}.nav.outline>a{border-right:.05rem solid transparent;border-right-color:inherit}.nav.outline>a:last-child{border-right:none}.nav.outline>a.active{color:#333;background-color:#fff}.nav-lg>a,.nav.affix>a{height:2.4rem}.nav-sm>a{min-width:1.5rem;height:1.5rem;padding:0 .25rem}.nav.affix{background-color:#fff}.with-nav-top{padding-top:2.4rem}.with-nav-bottom{padding-bottom:2.4rem}.with-heading-top.with-nav-top{padding-top:4.8rem}.with-heading-top.with-nav-top>.nav.affix.dock-top{top:2.4rem}.in-scroll.scroll-down .with-heading-top>.nav.dock-top,.in-scroll.scroll-down.with-heading-top>.nav.dock-top{transform:translate(0,-100%)}.in-scroll.scroll-down .with-heading-top>.nav.dock-top.dock-auto,.in-scroll.scroll-down.with-heading-top>.nav.dock-top.dock-auto{transform:translate(0,-199%)}.in-scroll>.dock-top .nav-secondary{box-shadow:none}.btn{font-size:.7rem;font-weight:400;line-height:1.4rem;display:-ms-inline-flexbox;display:inline-flex;min-width:1.5rem;height:1.5rem;padding:0 .5rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;white-space:nowrap;white-space:pre-line;color:inherit;border:.05rem solid transparent;background:0 0;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.btn.circle,.btn.circle:after{border-radius:.75rem!important}.btn-lg{font-size:.9rem;line-height:1.9rem;min-width:2rem;height:2rem;padding:0 .5rem}.btn-lg.circle,.btn-lg.circle:after{border-radius:1rem!important}.btn-sm{font-size:.6rem;line-height:1.1rem;min-width:1.2rem;height:1.2rem;padding:0 .5rem}.btn-sm.circle,.btn-sm.circle:after{border-radius:.6rem!important}.btn-xs{font-size:.6rem;line-height:.9rem;min-width:1rem;height:1rem;padding:0 .5rem}.btn-xs.circle,.btn-xs.circle:after{border-radius:.5rem!important}.btn-icon{padding-right:0;padding-left:0}.btn-wide{min-width:4rem}.btn.block{width:100%}.btn.block+.btn.block{margin-top:.5rem}.btn>.label{position:relative;top:-.05rem}.label{font-size:.6rem;line-height:1;display:-ms-inline-flexbox;display:inline-flex;min-width:1rem;height:1rem;padding:0 .25rem;vertical-align:middle;border:.05rem solid transparent;background-color:rgba(0,0,0,.103);-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-align:center;align-items:center}.label>.icon{line-height:1}.label.circle{padding:.05rem .25rem;border-radius:.5rem}.label-sm{min-width:.9rem;height:.9rem;padding:0 .0625rem}.label-sm.circle{padding:0 .1rem;border-radius:.45rem}.label.badge{position:absolute;z-index:1;top:-.5rem;right:-.5rem}.heading{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.heading>.title{display:block;padding:.5rem .5rem;-ms-flex:1;flex:1}.heading>.nav{-ms-flex-item-align:start;align-self:flex-start}.heading>.avatar{margin-left:.25rem}.heading>.headline{font-size:.8rem;width:100%;padding:.5rem .5rem}.heading>.headline.indent{margin-left:2rem}.heading-lg>.nav,.heading.affix>.nav{margin:.2rem}.heading-lg>.title,.heading.affix>.title{font-size:.8rem;padding:.65rem .5rem}.heading.affix{background-color:#fff}.with-heading-top{padding-top:2.4rem}.with-heading-bottom{padding-bottom:2.4rem}.list-item,.list>.item{position:relative;display:-ms-flexbox;display:flex;padding:.5rem .5rem}.list-item>.icon,.list>.item>.icon{line-height:1.5rem;display:block;height:1.5rem}.list-item>*,.list>.item>*{margin-left:.5rem}.list-item>:first-child,.list>.item>:first-child{min-width:.7rem;margin-left:0}.list-item>.title,.list>.item>.title{padding:.25rem 0}.list-item>.content,.list-item>.title,.list>.item>.content,.list>.item>.title{-ms-flex:1;flex:1}.list-item>.label,.list>.item>.label{position:relative;top:.25rem}.list-item>.label+.label,.list>.item>.label+.label{margin-left:.25rem}.list-item>.content>.subtitle,.list>.item>.content>.subtitle{font-size:85.71428571%;opacity:.5!important}.list-item.multi-lines>*,.list>.item.multi-lines>*{margin-top:.125rem}.list-item.multi-lines>.content,.list>.item.multi-lines>.content{margin-top:0}.list-item.active:after,.list>.item.active:after{transform:scale(1);opacity:1;background-color:rgba(0,0,0,.09)}.list>.heading .title{font-size:.6rem;font-weight:bolder;text-transform:uppercase;opacity:.5}.list-item.compact,.list.compact>.item{padding:.25rem .5rem}.list.with-divider{border:.05rem solid rgba(0,0,0,.1);border-width:.05rem 0}.list.with-divider>.item:before{position:absolute;right:0;bottom:0;left:.5rem;display:block;height:.05rem;content:' ';background-color:rgba(0,0,0,.1)}.list.with-divider>.item:last-of-type:before{display:none}.list.with-divider .item.with-avatar:before,.list.with-divider.with-avatar>.item:before{left:2.5rem}.list-item+.divider,.list>.item+.divider{margin-left:.5rem}.list-item.with-avatar+.divider,.list>.item.with-avatar+.divider{margin-left:2.5rem}.list>.list{margin-left:2rem}.table{width:100%}.table td,.table th{padding:.5rem .5rem;vertical-align:top;border-bottom:.05rem solid rgba(0,0,0,.1)}.table th{font-weight:700;position:relative;opacity:.7}.table th:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;content:' ';background:rgba(0,0,0,.2)}.table tr:hover{background-color:rgba(50,128,252,.1)}.table tr.active{background-color:rgba(241,163,37,.1)}.table.compact td,.table.compact th{padding:.25rem .25rem}.table.striped tbody>tr:nth-child(odd){background-color:rgba(0,0,0,.035)}.table.striped tbody>tr:nth-child(odd):hover{background-color:rgba(50,128,252,.1)}.table.borderless td,.table.borderless th{border:none}.table.bordered td,.table.bordered th{border:.05rem solid rgba(0,0,0,.133)}.table-fixed{overflow:hidden;table-layout:fixed}.table-fixed td,.table-fixed th{overflow:inherit;white-space:nowrap}.table-fixed .no-table-fixed{overflow:visible}.input,.select>select,.textarea{line-height:1.42857143;display:block;width:100%;min-height:1.5rem;padding:.15rem .25rem;transition:border .2s cubic-bezier(.175,.885,.32,1),box-shadow .2s cubic-bezier(.175,.885,.32,1);color:inherit;border:.05rem solid #ccc;background-color:#fff;box-shadow:none;-webkit-appearance:none}.input:hover,.select>select:hover,.textarea:hover{border-color:#999}.input:focus,.select>select:focus,.textarea:focus{border-color:#2196f3;outline:0;box-shadow:0 0 0 .1rem rgba(33,150,243,.3)}.input .disabled,.input[disabled],.input[readonly],.select>select .disabled,.select>select[disabled],.select>select[readonly],.textarea .disabled,.textarea[disabled],.textarea[readonly]{opacity:1!important;background-color:#e6e6e6}.select{position:relative}.select>select{border-radius:0;outline:0}.select>select:not([multiple]){padding-right:1.25rem}.select>select[multiple]{overflow-y:auto;max-height:3.75rem}.select:not(.multiple):after{position:absolute;top:.55rem;right:.5rem;display:block;width:0;height:0;content:' ';border-width:.35rem .25rem 0 .25rem;border-style:solid;border-color:#ccc transparent transparent transparent}.help-text{font-size:.6rem;padding:.25rem 0;color:rgba(0,0,0,.5)}.help-text:empty{display:none}.checkbox,.radio{position:relative}.checkbox>input,.radio>input{position:absolute;z-index:1;top:0;left:0;display:block;width:100%;height:100%;opacity:0}.checkbox>input+label,.radio>input+label{position:relative;z-index:0;display:block;padding:.25rem 0 .25rem 1.25rem}.checkbox>input+label:after,.checkbox>input+label:before,.radio>input+label:after,.radio>input+label:before{position:absolute;top:.3rem;left:0;display:-ms-flexbox;display:flex;width:.9rem;height:.9rem;content:' ';transition:.2s cubic-bezier(.175,.885,.32,1);color:transparent;border:.1rem solid rgba(0,0,0,.5);-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.checkbox>input+label:after,.radio>input+label:after{transform:scale(0);opacity:0;color:rgba(0,0,0,.5)}.checkbox>input:focus+label:before,.radio>input:focus+label:before{border-color:#3280fc;box-shadow:inset 0 0 0 .05rem rgba(33,150,243,.3),0 0 0 .1rem rgba(33,150,243,.3)}.checkbox.checked>input+label:after,.checkbox>input:checked+label:after,.radio.checked>input+label:after,.radio>input:checked+label:after{transform:scale(1);opacity:1}.checkbox>input.disabled,.checkbox>input[disabled],.radio>input.disabled,.radio>input[disabled]{opacity:0!important}.checkbox>input.disabled+label,.checkbox>input[disabled]+label,.radio>input.disabled+label,.radio>input[disabled]+label{opacity:.5}.checkbox.inline-block+.inline-block,.radio.inline-block+.inline-block{margin-left:.05rem}.checkbox>input+label:before{border-radius:.1rem}.checkbox>input+label:after{font-family:ZenIcon;font-size:.7rem;font-weight:400;font-style:normal;font-variant:normal;content:'\e60d';text-transform:none;border:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox>input:focus+label:after{color:#3280fc}.checkbox>input:checked+label:after,.checkbox>input:checked+label:before{color:#fff;border-radius:.1rem;background-color:#3280fc}.radio>input+label:before{border-radius:50%}.radio>input+label:after{top:.55rem;left:.25rem;width:.4rem;height:.4rem;border:none;border-radius:.2rem;background-color:rgba(0,0,0,.5)}.radio>input:focus+label:after{background-color:#3280fc}.radio>input:checked+label:before{border-color:#3280fc}.radio>input:checked+label:after{background-color:#3280fc}.control>label{font-size:.6rem;display:block;padding:.25rem 0}.control:not(:last-child){margin-bottom:.5rem}::-webkit-input-placeholder{font-size:.6rem}.control.has-btn-right,.control.has-icon-right,.control.has-label-left{position:relative}.control.has-label-left>label{position:absolute;top:0;left:.25rem;min-width:.1rem;text-align:center;opacity:.5}.control.has-label-left .input,.control.has-label-left .select>select,.control.has-label-left .textarea{padding-left:1.25rem}.control.has-label-left .input:focus+label,.control.has-label-left .select>select:focus+label,.control.has-label-left .textarea:focus+label{opacity:1;color:#2196f3}.control.has-btn-right>.icon,.control.has-icon-right>.icon{position:absolute;top:.2rem;right:.25rem;min-width:1rem;text-align:center;opacity:.5}.control.has-btn-right .input,.control.has-btn-right .select>select,.control.has-btn-right .textarea,.control.has-icon-right .input,.control.has-icon-right .select>select,.control.has-icon-right .textarea{padding-right:1.25rem}.control.has-btn-right .input:focus+.icon,.control.has-btn-right .input:focus+label+.icon,.control.has-btn-right .select>select:focus+.icon,.control.has-btn-right .select>select:focus+label+.icon,.control.has-btn-right .textarea:focus+.icon,.control.has-btn-right .textarea:focus+label+.icon,.control.has-icon-right .input:focus+.icon,.control.has-icon-right .input:focus+label+.icon,.control.has-icon-right .select>select:focus+.icon,.control.has-icon-right .select>select:focus+label+.icon,.control.has-icon-right .textarea:focus+.icon,.control.has-icon-right .textarea:focus+label+.icon{opacity:1}.control.has-btn-right>.btn{position:absolute;top:0;right:0;min-width:1rem;text-align:center;opacity:.5}.column .control,.row .control{width:100%}.control.has-error .input,.control.has-error .select>select,.control.has-error .textarea{border-color:#ea644a}.control.has-error .help-text{color:#ea644a}.control.has-success .input,.control.has-success .select>select,.control.has-success .textarea{border-color:#38b03f}.control.has-success .help-text{color:#38b03f}.control.has-warning .input,.control.has-warning .select>select,.control.has-warning .textarea{border-color:#f1a325}.control.has-warning .help-text{color:#f1a325}.control.search{position:relative;margin:0}.control.search>label{line-height:1.5rem;position:absolute;min-width:1.5rem;height:1.5rem;padding:0;transition:transform .2s cubic-bezier(.175,.885,.32,1),opacity .2s cubic-bezier(.175,.885,.32,1);text-align:center;opacity:.6}.control.search>.input{padding-right:1.5rem;padding-left:1.5rem;transition:all .2s cubic-bezier(.175,.885,.32,1)}.control.search>.close{line-height:1.5rem;position:absolute;top:0;right:0;display:block;min-width:1.5rem;height:1.5rem;cursor:pointer;transition:transform .2s cubic-bezier(.175,.885,.32,1),opacity .2s cubic-bezier(.175,.885,.32,1);transform:scale(1);text-align:center;opacity:.6}.control.search.focus>.input,.control.search:not(.empty)>.input{padding-left:.25rem}.control.search.focus>label,.control.search:not(.empty)>label{transform:scale(0);opacity:0}.control.search.empty>.close{transform:scale(0);opacity:0}.control.flex{flex-direction:row;-ms-flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.control.flex>.input,.control.flex>.select,.control.flex>.textarea{width:auto;-ms-flex:auto;flex:auto}.control.flex>label{font-size:.7rem;font-weight:400;width:3rem;-ms-flex-item-align:start;align-self:flex-start}.control.flex>.addon,.control.flex>.btn,.control.flex>div,.control.flex>label,.control.flex>span{-ms-flex:none;flex:none}.control.flex>.block,.control.flex>.help-text{width:100%;margin-bottom:0;-ms-flex:auto;flex:auto}.control.flex>.addon{line-height:1.42857143;padding:.2rem .25rem;border:.05rem solid #ccc;background-color:rgba(0,0,0,.133)}.control.flex>:first-child{border-right:none}.control.flex>.btn:last-child{border-left:none!important}.clean.input[readonly]{line-height:inherit;min-height:inherit;padding:0;border-color:transparent}.article embed,.article iframe,.article img,.article object,.article video{max-width:100%;height:auto}.article ol ol,.article ol ul,.article ul ol,.article ul ul{margin-bottom:0}.article a{color:#3280fc}.article blockquote{margin:.5rem 0 .5rem 1rem;padding-top:0;padding-bottom:0}.display-backdrop,.display-layer{position:fixed;z-index:1040;top:0;right:0;bottom:0;left:0;background-color:#000}.display-backdrop.in{opacity:.5}.display-backdrop.loading:before{width:1.5rem;height:1.5rem;margin-top:-.75rem;margin-left:-.75rem;border-width:.25rem}.display-layer{z-index:1050;display:-ms-flexbox;display:flex;flex-direction:column;pointer-events:none;background:0 0;-ms-flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.display{pointer-events:auto}.display.invisible{transition:none!important}body[class*=' display-show-'],body[class^=display-show-]{overflow-y:hidden}.display-arrow:before{position:absolute;display:block;width:0;height:0;content:' ';border-style:solid}.arrow-top:before{top:-.4rem;left:50%;margin-left:-.4rem;border-width:0 .4rem .4rem .4rem;border-color:transparent transparent #fff transparent}.arrow-bottom:before{top:100%;left:50%;margin-left:-.4rem;border-width:.4rem .4rem 0 .4rem;border-color:#fff transparent transparent transparent}.arrow-right:before{top:50%;left:100%;margin-top:-.4rem;border-width:.4rem 0 .4rem .4rem;border-color:transparent transparent transparent #fff}.arrow-left:before{top:50%;left:-.4rem;margin-top:-.4rem;border-width:.4rem .4rem .4rem 0;border-color:transparent #fff transparent transparent}.dropdown-menu,.popover{display:none}.display>.dropdown-menu,.display>.popover{display:block}.dropdown-menu,.modal,.popover{overflow-y:auto;max-height:100%}.dropdown-menu{min-width:6rem}.messager{margin:1rem}.modal{display:-ms-flexbox;display:flex;flex-direction:column;-ms-flex-direction:column}.modal>.footer,.modal>.heading{z-index:1;-ms-flex:none;flex:none}.modal>.content{overflow-y:auto;-ms-flex:auto;flex:auto}.modal.in-scroll>.heading{border:none;box-shadow:rgba(0,0,0,.05) 0 .05rem .2rem,rgba(0,0,0,.12) 0 .05rem .1rem}.modal.can-scroll:not(.scroll-over)>.footer{box-shadow:rgba(0,0,0,.05) 0 -.05rem .2rem,rgba(0,0,0,.12) 0 -.05rem .1rem}.blur{filter:blur(.5rem)}.blur-lg{filter:blur(1rem)}.blur-sm{filter:blur(.25rem)}.grayscale{filter:grayscale(100%)}.rotate-90{transform:rotate(90deg)}.rotate-180{transform:rotate(180deg)}.rotate-270{transform:rotate(270deg)}.flip-h{transform:scale(-1,1)}.flip-v{transform:scale(1,-1)}.outline{border:.05rem solid rgba(0,0,0,.1)}.circle{border-radius:50%}.rounded{border-radius:.15rem}.rounded-sm{border-radius:.1rem}.rounded-lg{border-radius:.3rem}.borderless{border:none!important}.divider{border-bottom:.05rem solid rgba(0,0,0,.1)}.divider-top{border-top:.05rem solid rgba(0,0,0,.1)}.divider-left{border-left:.05rem solid rgba(0,0,0,.1)}.divider-right{border-right:.05rem solid rgba(0,0,0,.1)}.divider-all{border:.05rem solid rgba(0,0,0,.1)}.space{margin-bottom:1rem!important}.space-sm{margin-bottom:.5rem!important}.space-xs{margin-bottom:.25rem!important}.space-xl{margin-bottom:2rem!important}.space-lg{margin-bottom:1.5rem!important}.center-block{margin-right:auto;margin-left:auto}.no-padding{padding:0!important}.no-margin{margin:0!important}.has-margin{margin:1rem!important}.has-margin-sm{margin:.5rem!important}.has-padding{padding:.5rem .5rem!important}.has-padding-xs{padding:.25rem!important}.has-padding-sm{padding:.25rem .25rem!important}.has-padding-lg{padding:1rem 1rem!important}.has-padding-xl{padding:1.25rem 1.25rem!important}.has-padding-v{padding-top:.5rem!important;padding-bottom:.5rem!important}.has-padding-h{padding-right:.5rem!important;padding-left:.5rem!important}.canvas{background:#fff}.dropdown-menu,.layer,.modal,.popover{background:#fff;box-shadow:rgba(0,0,0,.15) 0 .15rem .5rem,rgba(0,0,0,.25) 0 .15rem .5rem}.section{margin-bottom:1rem;background:#fff;box-shadow:rgba(0,0,0,.05) 0 .05rem .2rem,rgba(0,0,0,.12) 0 .05rem .1rem}.box{padding:.5rem .5rem;border:.05rem solid transparent;background:#fff}.well{padding:.5rem .5rem;background-color:rgba(0,0,0,.05);box-shadow:inset rgba(0,0,0,.1) 0 .05rem .3rem,inset rgba(0,0,0,.12) 0 .05rem .2rem}.shadow-divider{box-shadow:inset 0 -.05rem 0 rgba(0,0,0,.1)}.shadow-divider-outside{box-shadow:0 .05rem 0 rgba(0,0,0,.1)}.shadow-none{box-shadow:none!important}.shadow,.shadow-1{box-shadow:rgba(0,0,0,.05) 0 .05rem .2rem,rgba(0,0,0,.12) 0 .05rem .1rem}.shadow-2{box-shadow:rgba(0,0,0,.12) 0 .05rem .3rem,rgba(0,0,0,.15) 0 .05rem .2rem}.shadow-3{box-shadow:rgba(0,0,0,.15) 0 .15rem .5rem,rgba(0,0,0,.25) 0 .15rem .5rem}.text-shadow-white{text-shadow:0 .05rem .1rem rgba(255,255,255,.5)}.text-shadow-black{text-shadow:0 .05rem .1rem rgba(0,0,0,.5)}.outline{border:.05rem solid rgba(0,0,0,.1);background-color:transparent!important}.primary{color:#fff!important;border-color:#3280fc!important;background-color:#3280fc!important}.primary.hover:hover,tr.primary:hover{background-color:#1970fc!important}.primary.outline{color:#3280fc!important;background-color:transparent!important}.primary.outline .active,.primary.outline.hover-solid:hover{color:#fff!important;background-color:#3280fc!important}.primary.long-shadow{text-shadow:#0a67fb 1px 1px,#0a67fb 2px 2px,#0a67fb 3px 3px,#0a67fb 4px 4px,#0a67fb 5px 5px,#0a67fb 6px 6px,#0a67fb 7px 7px,#0a67fb 8px 8px,#0a67fb 9px 9px,#0a67fb 10px 10px,#0a67fb 11px 11px,#0a67fb 12px 12px,#0a67fb 14px 14px,#0a67fb 15px 15px,#0a67fb 16px 16px,#0a67fb 17px 17px,#0a67fb 18px 18px,#0a67fb 19px 19px,#0a67fb 20px 20px,#0a67fb 21px 21px,#0a67fb 22px 22px,#0a67fb 23px 23px,#0a67fb 24px 24px,#0a67fb 25px 25px,#0a67fb 26px 26px,#0a67fb 27px 27px,#0a67fb 28px 28px,#0a67fb 29px 29px,#0a67fb 30px 30px,#0a67fb 31px 31px,#0a67fb 32px 32px,#0a67fb 33px 33px,#0a67fb 34px 34px,#0a67fb 35px 35px,#0a67fb 36px 36px,#0a67fb 37px 37px,#0a67fb 38px 38px,#0a67fb 39px 39px,#0a67fb 40px 40px}.secondary{color:#fff!important;border-color:#145ccd!important;background-color:#145ccd!important}.secondary.hover:hover,tr.secondary:hover{background-color:#1251b6!important}.secondary.outline{color:#145ccd!important;background-color:transparent!important}.secondary.outline .active,.secondary.outline.hover-solid:hover{color:#fff!important;background-color:#145ccd!important}.secondary.long-shadow{text-shadow:#114ba8 1px 1px,#114ba8 2px 2px,#114ba8 3px 3px,#114ba8 4px 4px,#114ba8 5px 5px,#114ba8 6px 6px,#114ba8 7px 7px,#114ba8 8px 8px,#114ba8 9px 9px,#114ba8 10px 10px,#114ba8 11px 11px,#114ba8 12px 12px,#114ba8 14px 14px,#114ba8 15px 15px,#114ba8 16px 16px,#114ba8 17px 17px,#114ba8 18px 18px,#114ba8 19px 19px,#114ba8 20px 20px,#114ba8 21px 21px,#114ba8 22px 22px,#114ba8 23px 23px,#114ba8 24px 24px,#114ba8 25px 25px,#114ba8 26px 26px,#114ba8 27px 27px,#114ba8 28px 28px,#114ba8 29px 29px,#114ba8 30px 30px,#114ba8 31px 31px,#114ba8 32px 32px,#114ba8 33px 33px,#114ba8 34px 34px,#114ba8 35px 35px,#114ba8 36px 36px,#114ba8 37px 37px,#114ba8 38px 38px,#114ba8 39px 39px,#114ba8 40px 40px}.accent{color:#fff!important;border-color:#fcae32!important;background-color:#fcae32!important}.accent.hover:hover,tr.accent:hover{background-color:#fca419!important}.accent.outline{color:#fcae32!important;background-color:transparent!important}.accent.outline .active,.accent.outline.hover-solid:hover{color:#fff!important;background-color:#fcae32!important}.accent.long-shadow{text-shadow:#fb9e0a 1px 1px,#fb9e0a 2px 2px,#fb9e0a 3px 3px,#fb9e0a 4px 4px,#fb9e0a 5px 5px,#fb9e0a 6px 6px,#fb9e0a 7px 7px,#fb9e0a 8px 8px,#fb9e0a 9px 9px,#fb9e0a 10px 10px,#fb9e0a 11px 11px,#fb9e0a 12px 12px,#fb9e0a 14px 14px,#fb9e0a 15px 15px,#fb9e0a 16px 16px,#fb9e0a 17px 17px,#fb9e0a 18px 18px,#fb9e0a 19px 19px,#fb9e0a 20px 20px,#fb9e0a 21px 21px,#fb9e0a 22px 22px,#fb9e0a 23px 23px,#fb9e0a 24px 24px,#fb9e0a 25px 25px,#fb9e0a 26px 26px,#fb9e0a 27px 27px,#fb9e0a 28px 28px,#fb9e0a 29px 29px,#fb9e0a 30px 30px,#fb9e0a 31px 31px,#fb9e0a 32px 32px,#fb9e0a 33px 33px,#fb9e0a 34px 34px,#fb9e0a 35px 35px,#fb9e0a 36px 36px,#fb9e0a 37px 37px,#fb9e0a 38px 38px,#fb9e0a 39px 39px,#fb9e0a 40px 40px}.green,.success{color:#fff!important;border-color:#38b03f!important;background-color:#38b03f!important}.green.hover:hover,.success.hover:hover,tr.green:hover,tr.success:hover{background-color:#329d38!important}.green.outline,.success.outline{color:#38b03f!important;background-color:transparent!important}.green.outline .active,.green.outline.hover-solid:hover,.success.outline .active,.success.outline.hover-solid:hover{color:#fff!important;background-color:#38b03f!important}.green.long-shadow,.success.long-shadow{text-shadow:#2e9134 1px 1px,#2e9134 2px 2px,#2e9134 3px 3px,#2e9134 4px 4px,#2e9134 5px 5px,#2e9134 6px 6px,#2e9134 7px 7px,#2e9134 8px 8px,#2e9134 9px 9px,#2e9134 10px 10px,#2e9134 11px 11px,#2e9134 12px 12px,#2e9134 14px 14px,#2e9134 15px 15px,#2e9134 16px 16px,#2e9134 17px 17px,#2e9134 18px 18px,#2e9134 19px 19px,#2e9134 20px 20px,#2e9134 21px 21px,#2e9134 22px 22px,#2e9134 23px 23px,#2e9134 24px 24px,#2e9134 25px 25px,#2e9134 26px 26px,#2e9134 27px 27px,#2e9134 28px 28px,#2e9134 29px 29px,#2e9134 30px 30px,#2e9134 31px 31px,#2e9134 32px 32px,#2e9134 33px 33px,#2e9134 34px 34px,#2e9134 35px 35px,#2e9134 36px 36px,#2e9134 37px 37px,#2e9134 38px 38px,#2e9134 39px 39px,#2e9134 40px 40px}.blue,.info{color:#fff!important;border-color:#03b8cf!important;background-color:#03b8cf!important}.blue.hover:hover,.info.hover:hover,tr.blue:hover,tr.info:hover{background-color:#03a2b6!important}.blue.outline,.info.outline{color:#03b8cf!important;background-color:transparent!important}.blue.outline .active,.blue.outline.hover-solid:hover,.info.outline .active,.info.outline.hover-solid:hover{color:#fff!important;background-color:#03b8cf!important}.blue.long-shadow,.info.long-shadow{text-shadow:#0294a7 1px 1px,#0294a7 2px 2px,#0294a7 3px 3px,#0294a7 4px 4px,#0294a7 5px 5px,#0294a7 6px 6px,#0294a7 7px 7px,#0294a7 8px 8px,#0294a7 9px 9px,#0294a7 10px 10px,#0294a7 11px 11px,#0294a7 12px 12px,#0294a7 14px 14px,#0294a7 15px 15px,#0294a7 16px 16px,#0294a7 17px 17px,#0294a7 18px 18px,#0294a7 19px 19px,#0294a7 20px 20px,#0294a7 21px 21px,#0294a7 22px 22px,#0294a7 23px 23px,#0294a7 24px 24px,#0294a7 25px 25px,#0294a7 26px 26px,#0294a7 27px 27px,#0294a7 28px 28px,#0294a7 29px 29px,#0294a7 30px 30px,#0294a7 31px 31px,#0294a7 32px 32px,#0294a7 33px 33px,#0294a7 34px 34px,#0294a7 35px 35px,#0294a7 36px 36px,#0294a7 37px 37px,#0294a7 38px 38px,#0294a7 39px 39px,#0294a7 40px 40px}.warning,.yellow{color:#fff!important;border-color:#f1a325!important;background-color:#f1a325!important}.warning.hover:hover,.yellow.hover:hover,tr.warning:hover,tr.yellow:hover{background-color:#ed980f!important}.warning.outline,.yellow.outline{color:#f1a325!important;background-color:transparent!important}.warning.outline .active,.warning.outline.hover-solid:hover,.yellow.outline .active,.yellow.outline.hover-solid:hover{color:#fff!important;background-color:#f1a325!important}.warning.long-shadow,.yellow.long-shadow{text-shadow:#df8f0e 1px 1px,#df8f0e 2px 2px,#df8f0e 3px 3px,#df8f0e 4px 4px,#df8f0e 5px 5px,#df8f0e 6px 6px,#df8f0e 7px 7px,#df8f0e 8px 8px,#df8f0e 9px 9px,#df8f0e 10px 10px,#df8f0e 11px 11px,#df8f0e 12px 12px,#df8f0e 14px 14px,#df8f0e 15px 15px,#df8f0e 16px 16px,#df8f0e 17px 17px,#df8f0e 18px 18px,#df8f0e 19px 19px,#df8f0e 20px 20px,#df8f0e 21px 21px,#df8f0e 22px 22px,#df8f0e 23px 23px,#df8f0e 24px 24px,#df8f0e 25px 25px,#df8f0e 26px 26px,#df8f0e 27px 27px,#df8f0e 28px 28px,#df8f0e 29px 29px,#df8f0e 30px 30px,#df8f0e 31px 31px,#df8f0e 32px 32px,#df8f0e 33px 33px,#df8f0e 34px 34px,#df8f0e 35px 35px,#df8f0e 36px 36px,#df8f0e 37px 37px,#df8f0e 38px 38px,#df8f0e 39px 39px,#df8f0e 40px 40px}.danger,.red{color:#fff!important;border-color:#ea644a!important;background-color:#ea644a!important}.danger.hover:hover,.red.hover:hover,tr.danger:hover,tr.red:hover{background-color:#e75033!important}.danger.outline,.red.outline{color:#ea644a!important;background-color:transparent!important}.danger.outline .active,.danger.outline.hover-solid:hover,.red.outline .active,.red.outline.hover-solid:hover{color:#fff!important;background-color:#ea644a!important}.danger.long-shadow,.red.long-shadow{text-shadow:#e64525 1px 1px,#e64525 2px 2px,#e64525 3px 3px,#e64525 4px 4px,#e64525 5px 5px,#e64525 6px 6px,#e64525 7px 7px,#e64525 8px 8px,#e64525 9px 9px,#e64525 10px 10px,#e64525 11px 11px,#e64525 12px 12px,#e64525 14px 14px,#e64525 15px 15px,#e64525 16px 16px,#e64525 17px 17px,#e64525 18px 18px,#e64525 19px 19px,#e64525 20px 20px,#e64525 21px 21px,#e64525 22px 22px,#e64525 23px 23px,#e64525 24px 24px,#e64525 25px 25px,#e64525 26px 26px,#e64525 27px 27px,#e64525 28px 28px,#e64525 29px 29px,#e64525 30px 30px,#e64525 31px 31px,#e64525 32px 32px,#e64525 33px 33px,#e64525 34px 34px,#e64525 35px 35px,#e64525 36px 36px,#e64525 37px 37px,#e64525 38px 38px,#e64525 39px 39px,#e64525 40px 40px}.brown,.important{color:#fff!important;border-color:#bd7b46!important;background-color:#bd7b46!important}.brown.hover:hover,.important.hover:hover,tr.brown:hover,tr.important:hover{background-color:#ac6f3d!important}.brown.outline,.important.outline{color:#bd7b46!important;background-color:transparent!important}.brown.outline .active,.brown.outline.hover-solid:hover,.important.outline .active,.important.outline.hover-solid:hover{color:#fff!important;background-color:#bd7b46!important}.brown.long-shadow,.important.long-shadow{text-shadow:#a16739 1px 1px,#a16739 2px 2px,#a16739 3px 3px,#a16739 4px 4px,#a16739 5px 5px,#a16739 6px 6px,#a16739 7px 7px,#a16739 8px 8px,#a16739 9px 9px,#a16739 10px 10px,#a16739 11px 11px,#a16739 12px 12px,#a16739 14px 14px,#a16739 15px 15px,#a16739 16px 16px,#a16739 17px 17px,#a16739 18px 18px,#a16739 19px 19px,#a16739 20px 20px,#a16739 21px 21px,#a16739 22px 22px,#a16739 23px 23px,#a16739 24px 24px,#a16739 25px 25px,#a16739 26px 26px,#a16739 27px 27px,#a16739 28px 28px,#a16739 29px 29px,#a16739 30px 30px,#a16739 31px 31px,#a16739 32px 32px,#a16739 33px 33px,#a16739 34px 34px,#a16739 35px 35px,#a16739 36px 36px,#a16739 37px 37px,#a16739 38px 38px,#a16739 39px 39px,#a16739 40px 40px}.purple,.special{color:#fff!important;border-color:#8666b8!important;background-color:#8666b8!important}.purple.hover:hover,.special.hover:hover,tr.purple:hover,tr.special:hover{background-color:#7855b0!important}.purple.outline,.special.outline{color:#8666b8!important;background-color:transparent!important}.purple.outline .active,.purple.outline.hover-solid:hover,.special.outline .active,.special.outline.hover-solid:hover{color:#fff!important;background-color:#8666b8!important}.purple.long-shadow,.special.long-shadow{text-shadow:#714ea7 1px 1px,#714ea7 2px 2px,#714ea7 3px 3px,#714ea7 4px 4px,#714ea7 5px 5px,#714ea7 6px 6px,#714ea7 7px 7px,#714ea7 8px 8px,#714ea7 9px 9px,#714ea7 10px 10px,#714ea7 11px 11px,#714ea7 12px 12px,#714ea7 14px 14px,#714ea7 15px 15px,#714ea7 16px 16px,#714ea7 17px 17px,#714ea7 18px 18px,#714ea7 19px 19px,#714ea7 20px 20px,#714ea7 21px 21px,#714ea7 22px 22px,#714ea7 23px 23px,#714ea7 24px 24px,#714ea7 25px 25px,#714ea7 26px 26px,#714ea7 27px 27px,#714ea7 28px 28px,#714ea7 29px 29px,#714ea7 30px 30px,#714ea7 31px 31px,#714ea7 32px 32px,#714ea7 33px 33px,#714ea7 34px 34px,#714ea7 35px 35px,#714ea7 36px 36px,#714ea7 37px 37px,#714ea7 38px 38px,#714ea7 39px 39px,#714ea7 40px 40px}.dark{color:#fff!important;border-color:#333!important;background-color:#333!important}.dark.hover:hover,tr.dark:hover{background-color:#262626!important}.dark.outline{color:#333!important;background-color:transparent!important}.dark.outline .active,.dark.outline.hover-solid:hover{color:#fff!important;background-color:#333!important}.dark.long-shadow{text-shadow:#1f1f1f 1px 1px,#1f1f1f 2px 2px,#1f1f1f 3px 3px,#1f1f1f 4px 4px,#1f1f1f 5px 5px,#1f1f1f 6px 6px,#1f1f1f 7px 7px,#1f1f1f 8px 8px,#1f1f1f 9px 9px,#1f1f1f 10px 10px,#1f1f1f 11px 11px,#1f1f1f 12px 12px,#1f1f1f 14px 14px,#1f1f1f 15px 15px,#1f1f1f 16px 16px,#1f1f1f 17px 17px,#1f1f1f 18px 18px,#1f1f1f 19px 19px,#1f1f1f 20px 20px,#1f1f1f 21px 21px,#1f1f1f 22px 22px,#1f1f1f 23px 23px,#1f1f1f 24px 24px,#1f1f1f 25px 25px,#1f1f1f 26px 26px,#1f1f1f 27px 27px,#1f1f1f 28px 28px,#1f1f1f 29px 29px,#1f1f1f 30px 30px,#1f1f1f 31px 31px,#1f1f1f 32px 32px,#1f1f1f 33px 33px,#1f1f1f 34px 34px,#1f1f1f 35px 35px,#1f1f1f 36px 36px,#1f1f1f 37px 37px,#1f1f1f 38px 38px,#1f1f1f 39px 39px,#1f1f1f 40px 40px}.black,.inverse{color:#fff!important;border-color:#000!important;background-color:#000!important}.black.hover:hover,.inverse.hover:hover,tr.black:hover,tr.inverse:hover{background-color:#000!important}.black.outline,.inverse.outline{color:#000!important;background-color:transparent!important}.black.outline .active,.black.outline.hover-solid:hover,.inverse.outline .active,.inverse.outline.hover-solid:hover{color:#fff!important;background-color:#000!important}.black.long-shadow,.inverse.long-shadow{text-shadow:#000 1px 1px,#000 2px 2px,#000 3px 3px,#000 4px 4px,#000 5px 5px,#000 6px 6px,#000 7px 7px,#000 8px 8px,#000 9px 9px,#000 10px 10px,#000 11px 11px,#000 12px 12px,#000 14px 14px,#000 15px 15px,#000 16px 16px,#000 17px 17px,#000 18px 18px,#000 19px 19px,#000 20px 20px,#000 21px 21px,#000 22px 22px,#000 23px 23px,#000 24px 24px,#000 25px 25px,#000 26px 26px,#000 27px 27px,#000 28px 28px,#000 29px 29px,#000 30px 30px,#000 31px 31px,#000 32px 32px,#000 33px 33px,#000 34px 34px,#000 35px 35px,#000 36px 36px,#000 37px 37px,#000 38px 38px,#000 39px 39px,#000 40px 40px}.primary-pale{border-color:#ebf2f9!important;background-color:#ebf2f9!important}.primary-pale.hover-solid:hover,tr.primary-pale:hover{background-color:#d7e5f3!important}.primary-pale.outline{color:#ebf2f9!important;border-color:#ebf2f9!important;background-color:transparent!important}.primary-pale.outline.hover-solid:hover{color:#ebf2f9;background-color:#3280fc!important}.primary-pale .active,.primary-pale.text-tint{color:#3280fc}.primary-pale.long-shadow{text-shadow:#ccdef0 1px 1px,#ccdef0 2px 2px,#ccdef0 3px 3px,#ccdef0 4px 4px,#ccdef0 5px 5px,#ccdef0 6px 6px,#ccdef0 7px 7px,#ccdef0 8px 8px,#ccdef0 9px 9px,#ccdef0 10px 10px,#ccdef0 11px 11px,#ccdef0 12px 12px,#ccdef0 14px 14px,#ccdef0 15px 15px,#ccdef0 16px 16px,#ccdef0 17px 17px,#ccdef0 18px 18px,#ccdef0 19px 19px,#ccdef0 20px 20px,#ccdef0 21px 21px,#ccdef0 22px 22px,#ccdef0 23px 23px,#ccdef0 24px 24px,#ccdef0 25px 25px,#ccdef0 26px 26px,#ccdef0 27px 27px,#ccdef0 28px 28px,#ccdef0 29px 29px,#ccdef0 30px 30px,#ccdef0 31px 31px,#ccdef0 32px 32px,#ccdef0 33px 33px,#ccdef0 34px 34px,#ccdef0 35px 35px,#ccdef0 36px 36px,#ccdef0 37px 37px,#ccdef0 38px 38px,#ccdef0 39px 39px,#ccdef0 40px 40px}.secondary-pale{border-color:#e1f5fe!important;background-color:#e1f5fe!important}.secondary-pale.hover-solid:hover,tr.secondary-pale:hover{background-color:#c8edfd!important}.secondary-pale.outline{color:#e1f5fe!important;border-color:#e1f5fe!important;background-color:transparent!important}.secondary-pale.outline.hover-solid:hover{color:#e1f5fe;background-color:#145ccd!important}.secondary-pale .active,.secondary-pale.text-tint{color:#145ccd}.secondary-pale.long-shadow{text-shadow:#bae8fd 1px 1px,#bae8fd 2px 2px,#bae8fd 3px 3px,#bae8fd 4px 4px,#bae8fd 5px 5px,#bae8fd 6px 6px,#bae8fd 7px 7px,#bae8fd 8px 8px,#bae8fd 9px 9px,#bae8fd 10px 10px,#bae8fd 11px 11px,#bae8fd 12px 12px,#bae8fd 14px 14px,#bae8fd 15px 15px,#bae8fd 16px 16px,#bae8fd 17px 17px,#bae8fd 18px 18px,#bae8fd 19px 19px,#bae8fd 20px 20px,#bae8fd 21px 21px,#bae8fd 22px 22px,#bae8fd 23px 23px,#bae8fd 24px 24px,#bae8fd 25px 25px,#bae8fd 26px 26px,#bae8fd 27px 27px,#bae8fd 28px 28px,#bae8fd 29px 29px,#bae8fd 30px 30px,#bae8fd 31px 31px,#bae8fd 32px 32px,#bae8fd 33px 33px,#bae8fd 34px 34px,#bae8fd 35px 35px,#bae8fd 36px 36px,#bae8fd 37px 37px,#bae8fd 38px 38px,#bae8fd 39px 39px,#bae8fd 40px 40px}.accent-pale{border-color:#fff8e1!important;background-color:#fff8e1!important}.accent-pale.hover-solid:hover,tr.accent-pale:hover{background-color:#fff2c7!important}.accent-pale.outline{color:#fff8e1!important;border-color:#fff8e1!important;background-color:transparent!important}.accent-pale.outline.hover-solid:hover{color:#fff8e1;background-color:#fcae32!important}.accent-pale .active,.accent-pale.text-tint{color:#fcae32}.accent-pale.long-shadow{text-shadow:#ffeeb8 1px 1px,#ffeeb8 2px 2px,#ffeeb8 3px 3px,#ffeeb8 4px 4px,#ffeeb8 5px 5px,#ffeeb8 6px 6px,#ffeeb8 7px 7px,#ffeeb8 8px 8px,#ffeeb8 9px 9px,#ffeeb8 10px 10px,#ffeeb8 11px 11px,#ffeeb8 12px 12px,#ffeeb8 14px 14px,#ffeeb8 15px 15px,#ffeeb8 16px 16px,#ffeeb8 17px 17px,#ffeeb8 18px 18px,#ffeeb8 19px 19px,#ffeeb8 20px 20px,#ffeeb8 21px 21px,#ffeeb8 22px 22px,#ffeeb8 23px 23px,#ffeeb8 24px 24px,#ffeeb8 25px 25px,#ffeeb8 26px 26px,#ffeeb8 27px 27px,#ffeeb8 28px 28px,#ffeeb8 29px 29px,#ffeeb8 30px 30px,#ffeeb8 31px 31px,#ffeeb8 32px 32px,#ffeeb8 33px 33px,#ffeeb8 34px 34px,#ffeeb8 35px 35px,#ffeeb8 36px 36px,#ffeeb8 37px 37px,#ffeeb8 38px 38px,#ffeeb8 39px 39px,#ffeeb8 40px 40px}.green-pale,.success-pale{border-color:#ddf4df!important;background-color:#ddf4df!important}.green-pale.hover-solid:hover,.success-pale.hover-solid:hover,tr.green-pale:hover,tr.success-pale:hover{background-color:#caeecd!important}.green-pale.outline,.success-pale.outline{color:#ddf4df!important;border-color:#ddf4df!important;background-color:transparent!important}.green-pale.outline.hover-solid:hover,.success-pale.outline.hover-solid:hover{color:#ddf4df;background-color:#38b03f!important}.green-pale .active,.green-pale.text-tint,.success-pale .active,.success-pale.text-tint{color:#38b03f}.green-pale.long-shadow,.success-pale.long-shadow{text-shadow:#beeac2 1px 1px,#beeac2 2px 2px,#beeac2 3px 3px,#beeac2 4px 4px,#beeac2 5px 5px,#beeac2 6px 6px,#beeac2 7px 7px,#beeac2 8px 8px,#beeac2 9px 9px,#beeac2 10px 10px,#beeac2 11px 11px,#beeac2 12px 12px,#beeac2 14px 14px,#beeac2 15px 15px,#beeac2 16px 16px,#beeac2 17px 17px,#beeac2 18px 18px,#beeac2 19px 19px,#beeac2 20px 20px,#beeac2 21px 21px,#beeac2 22px 22px,#beeac2 23px 23px,#beeac2 24px 24px,#beeac2 25px 25px,#beeac2 26px 26px,#beeac2 27px 27px,#beeac2 28px 28px,#beeac2 29px 29px,#beeac2 30px 30px,#beeac2 31px 31px,#beeac2 32px 32px,#beeac2 33px 33px,#beeac2 34px 34px,#beeac2 35px 35px,#beeac2 36px 36px,#beeac2 37px 37px,#beeac2 38px 38px,#beeac2 39px 39px,#beeac2 40px 40px}.blue-pale,.info-pale{border-color:#ddf3f5!important;background-color:#ddf3f5!important}.blue-pale.hover-solid:hover,.info-pale.hover-solid:hover,tr.blue-pale:hover,tr.info-pale:hover{background-color:#c9ecef!important}.blue-pale.outline,.info-pale.outline{color:#ddf3f5!important;border-color:#ddf3f5!important;background-color:transparent!important}.blue-pale.outline.hover-solid:hover,.info-pale.outline.hover-solid:hover{color:#ddf3f5;background-color:#03b8cf!important}.blue-pale .active,.blue-pale.text-tint,.info-pale .active,.info-pale.text-tint{color:#03b8cf}.blue-pale.long-shadow,.info-pale.long-shadow{text-shadow:#bde8ec 1px 1px,#bde8ec 2px 2px,#bde8ec 3px 3px,#bde8ec 4px 4px,#bde8ec 5px 5px,#bde8ec 6px 6px,#bde8ec 7px 7px,#bde8ec 8px 8px,#bde8ec 9px 9px,#bde8ec 10px 10px,#bde8ec 11px 11px,#bde8ec 12px 12px,#bde8ec 14px 14px,#bde8ec 15px 15px,#bde8ec 16px 16px,#bde8ec 17px 17px,#bde8ec 18px 18px,#bde8ec 19px 19px,#bde8ec 20px 20px,#bde8ec 21px 21px,#bde8ec 22px 22px,#bde8ec 23px 23px,#bde8ec 24px 24px,#bde8ec 25px 25px,#bde8ec 26px 26px,#bde8ec 27px 27px,#bde8ec 28px 28px,#bde8ec 29px 29px,#bde8ec 30px 30px,#bde8ec 31px 31px,#bde8ec 32px 32px,#bde8ec 33px 33px,#bde8ec 34px 34px,#bde8ec 35px 35px,#bde8ec 36px 36px,#bde8ec 37px 37px,#bde8ec 38px 38px,#bde8ec 39px 39px,#bde8ec 40px 40px}.warning-pale,.yellow-pale{border-color:#fff0d5!important;background-color:#fff0d5!important}.warning-pale.hover-solid:hover,.yellow-pale.hover-solid:hover,tr.warning-pale:hover,tr.yellow-pale:hover{background-color:#ffe7bc!important}.warning-pale.outline,.yellow-pale.outline{color:#fff0d5!important;border-color:#fff0d5!important;background-color:transparent!important}.warning-pale.outline.hover-solid:hover,.yellow-pale.outline.hover-solid:hover{color:#fff0d5;background-color:#f1a325!important}.warning-pale .active,.warning-pale.text-tint,.yellow-pale .active,.yellow-pale.text-tint{color:#f1a325}.warning-pale.long-shadow,.yellow-pale.long-shadow{text-shadow:#ffe1ac 1px 1px,#ffe1ac 2px 2px,#ffe1ac 3px 3px,#ffe1ac 4px 4px,#ffe1ac 5px 5px,#ffe1ac 6px 6px,#ffe1ac 7px 7px,#ffe1ac 8px 8px,#ffe1ac 9px 9px,#ffe1ac 10px 10px,#ffe1ac 11px 11px,#ffe1ac 12px 12px,#ffe1ac 14px 14px,#ffe1ac 15px 15px,#ffe1ac 16px 16px,#ffe1ac 17px 17px,#ffe1ac 18px 18px,#ffe1ac 19px 19px,#ffe1ac 20px 20px,#ffe1ac 21px 21px,#ffe1ac 22px 22px,#ffe1ac 23px 23px,#ffe1ac 24px 24px,#ffe1ac 25px 25px,#ffe1ac 26px 26px,#ffe1ac 27px 27px,#ffe1ac 28px 28px,#ffe1ac 29px 29px,#ffe1ac 30px 30px,#ffe1ac 31px 31px,#ffe1ac 32px 32px,#ffe1ac 33px 33px,#ffe1ac 34px 34px,#ffe1ac 35px 35px,#ffe1ac 36px 36px,#ffe1ac 37px 37px,#ffe1ac 38px 38px,#ffe1ac 39px 39px,#ffe1ac 40px 40px}.danger-pale,.red-pale{border-color:#ffe5e0!important;background-color:#ffe5e0!important}.danger-pale.hover-solid:hover,.red-pale.hover-solid:hover,tr.danger-pale:hover,tr.red-pale:hover{background-color:#ffd0c6!important}.danger-pale.outline,.red-pale.outline{color:#ffe5e0!important;border-color:#ffe5e0!important;background-color:transparent!important}.danger-pale.outline.hover-solid:hover,.red-pale.outline.hover-solid:hover{color:#ffe5e0;background-color:#ea644a!important}.danger-pale .active,.danger-pale.text-tint,.red-pale .active,.red-pale.text-tint{color:#ea644a}.danger-pale.long-shadow,.red-pale.long-shadow{text-shadow:#ffc3b7 1px 1px,#ffc3b7 2px 2px,#ffc3b7 3px 3px,#ffc3b7 4px 4px,#ffc3b7 5px 5px,#ffc3b7 6px 6px,#ffc3b7 7px 7px,#ffc3b7 8px 8px,#ffc3b7 9px 9px,#ffc3b7 10px 10px,#ffc3b7 11px 11px,#ffc3b7 12px 12px,#ffc3b7 14px 14px,#ffc3b7 15px 15px,#ffc3b7 16px 16px,#ffc3b7 17px 17px,#ffc3b7 18px 18px,#ffc3b7 19px 19px,#ffc3b7 20px 20px,#ffc3b7 21px 21px,#ffc3b7 22px 22px,#ffc3b7 23px 23px,#ffc3b7 24px 24px,#ffc3b7 25px 25px,#ffc3b7 26px 26px,#ffc3b7 27px 27px,#ffc3b7 28px 28px,#ffc3b7 29px 29px,#ffc3b7 30px 30px,#ffc3b7 31px 31px,#ffc3b7 32px 32px,#ffc3b7 33px 33px,#ffc3b7 34px 34px,#ffc3b7 35px 35px,#ffc3b7 36px 36px,#ffc3b7 37px 37px,#ffc3b7 38px 38px,#ffc3b7 39px 39px,#ffc3b7 40px 40px}.brown-pale,.important-pale{border-color:#f7ebe1!important;background-color:#f7ebe1!important}.brown-pale.hover-solid:hover,.important-pale.hover-solid:hover,tr.brown-pale:hover,tr.important-pale:hover{background-color:#f2decd!important}.brown-pale.outline,.important-pale.outline{color:#f7ebe1!important;border-color:#f7ebe1!important;background-color:transparent!important}.brown-pale.outline.hover-solid:hover,.important-pale.outline.hover-solid:hover{color:#f7ebe1;background-color:#bd7b46!important}.brown-pale .active,.brown-pale.text-tint,.important-pale .active,.important-pale.text-tint{color:#bd7b46}.brown-pale.long-shadow,.important-pale.long-shadow{text-shadow:#eed6c1 1px 1px,#eed6c1 2px 2px,#eed6c1 3px 3px,#eed6c1 4px 4px,#eed6c1 5px 5px,#eed6c1 6px 6px,#eed6c1 7px 7px,#eed6c1 8px 8px,#eed6c1 9px 9px,#eed6c1 10px 10px,#eed6c1 11px 11px,#eed6c1 12px 12px,#eed6c1 14px 14px,#eed6c1 15px 15px,#eed6c1 16px 16px,#eed6c1 17px 17px,#eed6c1 18px 18px,#eed6c1 19px 19px,#eed6c1 20px 20px,#eed6c1 21px 21px,#eed6c1 22px 22px,#eed6c1 23px 23px,#eed6c1 24px 24px,#eed6c1 25px 25px,#eed6c1 26px 26px,#eed6c1 27px 27px,#eed6c1 28px 28px,#eed6c1 29px 29px,#eed6c1 30px 30px,#eed6c1 31px 31px,#eed6c1 32px 32px,#eed6c1 33px 33px,#eed6c1 34px 34px,#eed6c1 35px 35px,#eed6c1 36px 36px,#eed6c1 37px 37px,#eed6c1 38px 38px,#eed6c1 39px 39px,#eed6c1 40px 40px}.purple-pale,.special-pale{border-color:#f5eeff!important;background-color:#f5eeff!important}.purple-pale.hover-solid:hover,.special-pale.hover-solid:hover,tr.purple-pale:hover,tr.special-pale:hover{background-color:#e6d5ff!important}.purple-pale.outline,.special-pale.outline{color:#f5eeff!important;border-color:#f5eeff!important;background-color:transparent!important}.purple-pale.outline.hover-solid:hover,.special-pale.outline.hover-solid:hover{color:#f5eeff;background-color:#8666b8!important}.purple-pale .active,.purple-pale.text-tint,.special-pale .active,.special-pale.text-tint{color:#8666b8}.purple-pale.long-shadow,.special-pale.long-shadow{text-shadow:#ddc5ff 1px 1px,#ddc5ff 2px 2px,#ddc5ff 3px 3px,#ddc5ff 4px 4px,#ddc5ff 5px 5px,#ddc5ff 6px 6px,#ddc5ff 7px 7px,#ddc5ff 8px 8px,#ddc5ff 9px 9px,#ddc5ff 10px 10px,#ddc5ff 11px 11px,#ddc5ff 12px 12px,#ddc5ff 14px 14px,#ddc5ff 15px 15px,#ddc5ff 16px 16px,#ddc5ff 17px 17px,#ddc5ff 18px 18px,#ddc5ff 19px 19px,#ddc5ff 20px 20px,#ddc5ff 21px 21px,#ddc5ff 22px 22px,#ddc5ff 23px 23px,#ddc5ff 24px 24px,#ddc5ff 25px 25px,#ddc5ff 26px 26px,#ddc5ff 27px 27px,#ddc5ff 28px 28px,#ddc5ff 29px 29px,#ddc5ff 30px 30px,#ddc5ff 31px 31px,#ddc5ff 32px 32px,#ddc5ff 33px 33px,#ddc5ff 34px 34px,#ddc5ff 35px 35px,#ddc5ff 36px 36px,#ddc5ff 37px 37px,#ddc5ff 38px 38px,#ddc5ff 39px 39px,#ddc5ff 40px 40px}.gray{border-color:rgba(0,0,0,.055)!important;background-color:rgba(0,0,0,.055)!important}.gray.hover-solid:hover,tr.gray:hover{background-color:rgba(0,0,0,.055)!important}.gray.outline{color:rgba(0,0,0,.055)!important;border-color:rgba(0,0,0,.055)!important;background-color:transparent!important}.gray.outline.hover-solid:hover{color:rgba(0,0,0,.055);background-color:#333!important}.gray .active,.gray.text-tint{color:#333}.gray.long-shadow{text-shadow:rgba(0,0,0,.055) 1px 1px,rgba(0,0,0,.055) 2px 2px,rgba(0,0,0,.055) 3px 3px,rgba(0,0,0,.055) 4px 4px,rgba(0,0,0,.055) 5px 5px,rgba(0,0,0,.055) 6px 6px,rgba(0,0,0,.055) 7px 7px,rgba(0,0,0,.055) 8px 8px,rgba(0,0,0,.055) 9px 9px,rgba(0,0,0,.055) 10px 10px,rgba(0,0,0,.055) 11px 11px,rgba(0,0,0,.055) 12px 12px,rgba(0,0,0,.055) 14px 14px,rgba(0,0,0,.055) 15px 15px,rgba(0,0,0,.055) 16px 16px,rgba(0,0,0,.055) 17px 17px,rgba(0,0,0,.055) 18px 18px,rgba(0,0,0,.055) 19px 19px,rgba(0,0,0,.055) 20px 20px,rgba(0,0,0,.055) 21px 21px,rgba(0,0,0,.055) 22px 22px,rgba(0,0,0,.055) 23px 23px,rgba(0,0,0,.055) 24px 24px,rgba(0,0,0,.055) 25px 25px,rgba(0,0,0,.055) 26px 26px,rgba(0,0,0,.055) 27px 27px,rgba(0,0,0,.055) 28px 28px,rgba(0,0,0,.055) 29px 29px,rgba(0,0,0,.055) 30px 30px,rgba(0,0,0,.055) 31px 31px,rgba(0,0,0,.055) 32px 32px,rgba(0,0,0,.055) 33px 33px,rgba(0,0,0,.055) 34px 34px,rgba(0,0,0,.055) 35px 35px,rgba(0,0,0,.055) 36px 36px,rgba(0,0,0,.055) 37px 37px,rgba(0,0,0,.055) 38px 38px,rgba(0,0,0,.055) 39px 39px,rgba(0,0,0,.055) 40px 40px}.white{border-color:#fff!important;background-color:#fff!important}.white.hover-solid:hover,tr.white:hover{background-color:#f2f2f2!important}.white.outline{color:#fff!important;border-color:#fff!important;background-color:transparent!important}.white.outline.hover-solid:hover{color:#fff;background-color:#333!important}.white .active,.white.text-tint{color:#333}.white.long-shadow{text-shadow:#ebebeb 1px 1px,#ebebeb 2px 2px,#ebebeb 3px 3px,#ebebeb 4px 4px,#ebebeb 5px 5px,#ebebeb 6px 6px,#ebebeb 7px 7px,#ebebeb 8px 8px,#ebebeb 9px 9px,#ebebeb 10px 10px,#ebebeb 11px 11px,#ebebeb 12px 12px,#ebebeb 14px 14px,#ebebeb 15px 15px,#ebebeb 16px 16px,#ebebeb 17px 17px,#ebebeb 18px 18px,#ebebeb 19px 19px,#ebebeb 20px 20px,#ebebeb 21px 21px,#ebebeb 22px 22px,#ebebeb 23px 23px,#ebebeb 24px 24px,#ebebeb 25px 25px,#ebebeb 26px 26px,#ebebeb 27px 27px,#ebebeb 28px 28px,#ebebeb 29px 29px,#ebebeb 30px 30px,#ebebeb 31px 31px,#ebebeb 32px 32px,#ebebeb 33px 33px,#ebebeb 34px 34px,#ebebeb 35px 35px,#ebebeb 36px 36px,#ebebeb 37px 37px,#ebebeb 38px 38px,#ebebeb 39px 39px,#ebebeb 40px 40px}.highlight{background-color:#c6ff00!important}.text-primary{color:#3280fc}.text-secondary{color:#145ccd}.text-green,.text-success{color:#38b03f}.text-blue,.text-info{color:#03b8cf}.text-warning,.text-yellow{color:#f1a325}.text-danger,.text-red{color:#ea644a}.text-brown,.text-important{color:#bd7b46}.text-purple,.text-special{color:#8666b8}.text-gray{color:rgba(0,0,0,.5)}.text-black{color:#000}.text-white{color:#fff}.text-dark{color:#333}.text-accent{color:#fcae32}.clean{background-color:transparent!important}.muted{opacity:.5!important}.muted-light{opacity:.75!important}.muted-dark{opacity:.25!important}.long-shadow{overflow:hidden}.outline-cover{border:.05rem solid rgba(0,0,0,.1)!important}.darken{background-color:rgba(0,0,0,.1)!important}.darken-2{background-color:rgba(0,0,0,.2)!important}.darken-3{background-color:rgba(0,0,0,.3)!important}.lighten{background-color:rgba(255,255,255,.1)!important}.lighten-2{background-color:rgba(255,255,255,.2)!important}.lighten-3{background-color:rgba(255,255,255,.3)!important}.btn,.state,a{position:relative}.btn:after,.state:after,a:after{position:absolute;top:0;right:0;bottom:0;left:0;display:block;content:' ';transition:.2s cubic-bezier(.175,.885,.32,1);transform:scale(.6);pointer-events:none;opacity:0;background-color:transparent;box-shadow:0 0 0 .05rem rgba(0,0,0,.09)}.btn.circle:after,.state.circle:after,a.circle:after{border-radius:50%}.btn.rounded:after,.state.rounded:after,a.rounded:after{border-radius:.15rem}.btn.hover:after,.btn:hover:after,.state.hover:after,.state:hover:after,a.hover:after,a:hover:after{transform:scale(1);opacity:1;background-color:rgba(0,0,0,.07);box-shadow:0 0 0 .05rem rgba(0,0,0,.07)}.btn.focus,.btn:focus,.state.focus,.state:focus,a.focus,a:focus{outline:0}.btn.focus:after,.btn:focus:after,.state.focus:after,.state:focus:after,a.focus:after,a:focus:after{transform:scale(1);opacity:1;background-color:rgba(0,0,0,.07);box-shadow:inset 0 0 0 .05rem rgba(33,150,243,.4),0 0 0 .1rem rgba(33,150,243,.4)}.btn.active:after,.btn.open:after,.btn:active:after,.open>.btn:after,.open>.state:after,.open>a:after,.state.active:after,.state.open:after,.state:active:after,a.active:after,a.open:after,a:active:after{transform:scale(1);opacity:1;background-color:rgba(0,0,0,.07);box-shadow:none}.btn:active:after,.state:active:after,a:active:after{transform:scale(.95);background-color:rgba(0,0,0,.09);box-shadow:inset 0 0 0 .05rem rgba(33,150,243,.2),0 0 0 .1rem rgba(33,150,243,.2)}.disabled,.disabled>a,[disabled]{cursor:not-allowed!important;pointer-events:none!important;opacity:.5!important;box-shadow:none!important;filter:grayscale(100%)}.disabled:after,.disabled>a:after,[disabled]:after{display:none!important}.as-load-indicator,.loading{color:transparent!important}.as-load-indicator>*,.loading>*{visibility:hidden}.as-load-indicator:before,.loading:before{position:absolute;top:50%;left:50%;display:block;width:.9rem;height:.9rem;margin-top:-.45rem;margin-left:-.45rem;content:' ';transition:opacity .2s cubic-bezier(.175,.885,.32,1);animation:spin 2s infinite linear;border:.15rem dotted rgba(255,255,255,.5);border-color:rgba(255,255,255,.1) rgba(255,255,255,.4) rgba(255,255,255,.5) rgba(255,255,255,.6);border-radius:50%}.as-load-indicator.loading-light:before,.loading.loading-light:before{border-color:rgba(0,0,0,.1) rgba(0,0,0,.2) rgba(0,0,0,.3) rgba(0,0,0,.4)}.as-load-indicator:before{animation:none;opacity:0}.as-load-indicator.loading:before{animation:spin 2s infinite linear;opacity:1}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,'Courier New',monospace}code,kbd{font-size:.6rem;padding:.1rem .25rem;color:#ea644a;background-color:rgba(0,0,0,.05)}kbd{font-weight:700;color:#666;border:.05rem solid rgba(0,0,0,.1);border-bottom-width:.1rem;border-radius:.1rem}pre{font-size:.6rem;display:block;overflow:auto;max-width:100%;padding:.5rem;word-wrap:normal;word-break:normal;border:.05rem solid transparent;background-color:rgba(0,0,0,.05)}pre code{font-size:inherit;padding:0;color:inherit;border-radius:0;background-color:transparent}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{padding:.25rem .5rem .25rem 0;word-wrap:break-word;word-break:break-all;border:.05rem solid rgba(0,0,0,.1);box-shadow:inset 2rem 0 0 #fbfbfc,inset 2.05rem 0 0 #ececf0}.prettyprint.linenums code{white-space:pre-wrap}.prettyprint ol.linenums{line-height:1rem;margin-bottom:0;padding-left:2.25rem;color:#bebec5;text-shadow:0 .05rem 0 #fff} \ No newline at end of file diff --git a/public/static/fonts/zenicon.eot b/public/static/fonts/zenicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..4b8840927a74123ad6fb0796fee77349407dd988 GIT binary patch literal 85080 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 + + + + + +{ + "fontFamily": "ZenIcon", + "majorVersion": 2, + "minorVersion": 5, + "designerURL": "", + "fontURL": "https://zui.sexy/#control-icons", + "designer": "", + "license": "", + "licenseURL": "", + "description": "base on fontawesome\nFont generated by IcoMoon.", + "version": "Version 2.5", + "fontId": "ZenIcon", + "psName": "ZenIcon", + "subFamily": "Regular", + "fullName": "ZenIcon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/static/fonts/zenicon.ttf b/public/static/fonts/zenicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d3d5e009272302b8d2aaa448640e30da508122a GIT binary patch literal 84916 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 1) { + var reg; + if(arguments.length == 2 && typeof(args) == "object") { + for(var key in args) { + if(args[key] !== undefined) { + reg = new RegExp("({" + key + "})", "g"); + str = str.replace(reg, args[key]); + } + } + } else { + for(var i = 1; i < arguments.length; i++) { + if(arguments[i] !== undefined) { + reg = new RegExp("({[" + (i - 1) + "]})", "g"); + str = str.replace(reg, arguments[i]); + } + } + } + } + return str; + }; + + $.calValue = function(anything, proxy, params) { + return $.isFunction(anything) ? anything.apply(proxy, $.isArray(params) ? params : [params]) : anything; + }; + + $.is$ = function(obj) { + return window.jQuery === $ ? (obj instanceof jQuery) : $.zepto.isZ(obj) + }; + + $.isStr = function(x) { + return typeof x == 'string'; + }; + + $.isNum = function(x) { + return typeof x == 'number'; + }; + + $.TapName = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click'; + + if(!$.uuid) $.uuid = 0; +}(CoreLib)); + +/* ======================================================================== + * MZUI: display.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + +!(function($, undefined, window, document){ + 'use strict'; + + var uuid = 1200, + TAP_EVENT_NAME = $.TapName, + STR_DISPLAY = 'display', + STR_ORIGINAL_CLASS = 'orginalClass', + STR_HIDDEN = 'hidden', + STR_LOADING = 'loading', + STR_BODY = 'body', + TARGET_EVENT_SUFFIX = '.' + STR_DISPLAY + '.oneTarget', + NAME = 'mzui.' + STR_DISPLAY, + inverseSide = {left: 'right', bottom: 'top', top: 'bottom', right: 'left'}; + + // Display constructor([$element], options) + // $element is optional + var Display = function($element, options) { + var that = this; + if($.isPlainObject($element)) { + options = $element; + $element = null; + } + options = $.extend({element: $element}, Display.DEFAULT, $element ? $element.data() : null, options); + + var display = options.display; + if(display && Display.plugs['_' + display]) { + options = $.calValue(Display.plugs['_' + display], that, options); + } + + var selector = options.selector; + + if(!$element) options.trigger = null; + if(!options.name) options.name = STR_DISPLAY + uuid++; + + var triggerCallback = function(e) { + if(options.stopPropagation) e.stopPropagation(); + var $this = $(this); + var thisOptions = $this.data() || {}; + thisOptions.element = this; + + if($this.is('a')) { + var href = $this.data('url') || $this.attr('href'); + if(href && href !== '#' && href.indexOf('##') < 0) { + if(!options.target && /^#[a-z]/i.test(href)) { + thisOptions.target = href; + } else if(!thisOptions.remote) { + thisOptions.remote = href; + } + } + if(e && options.preventDefault !== false) e.preventDefault(); + } + that[options.triggerMethod](thisOptions); + }; + + if(options.trigger) { + selector ? $element.on(options.trigger, selector, triggerCallback) : $element.on(options.trigger, triggerCallback); + } + + that.$ = $element; + that.options = options; + + if(options.displayAuto !== undefined && options.displayAuto !== false) { + if(selector && $element) { + $element.find(selector).each(triggerCallback); + } else that.show(); + } else if(selector && $element) { + var activeClass = options.activeClass; + $element.find(selector).filter('[data-display-auto]' + (activeClass ? (',.' + activeClass) : '')).each(triggerCallback); + } + }; + + Display.prototype._getTarget = function(options) { + var that = this; + + var target = $.calValue(options.target, that, options); + if(target === '!new' || target === '#' + STR_DISPLAY + 'Target') { + var targetId = STR_DISPLAY + 'Target-' + options.name, + layerId = STR_DISPLAY + 'Layer-' + options.name; + $('#' + targetId).remove(); + target = $('

').attr({id: targetId}); + var $layer = $('#' + layerId); + if(!$layer.length) $layer = $('
').attr({id: layerId}).appendTo(STR_BODY); + options.layer = options.container = $layer.append(target); + } else if(target === '!self') { + target = options.element || that.$; + } + + target = $(target).addClass(STR_DISPLAY).attr('data-' + STR_DISPLAY + '-name', options.name); + if(!target.parent().length) { + target.appendTo(options.container); + } + if(!target.data(STR_ORIGINAL_CLASS)) target.data(STR_ORIGINAL_CLASS, target.attr('class')); + return target; + }; + + Display.prototype.update = function($target, options, callback, readyCallback) { + var that = this; + var fillContent = function(content) { + var template = options.template; + if($.isFunction(template)) { + content = template(content, options); + } else if($.isStr(template)) { + content = $.format(template, content); + } + + if(content !== false) { + if($.is$(content)) { + $target.empty().append(content); + } else { + $target[options.contentType === 'text' ? 'text' : 'html'](content); + } + } + }; + + var remote = $.calValue(options.remote, that, options); + if(remote) { + var remoteCall = $.uuid++, + loadingClass = options.loadingClass; + $target.removeClass(options.showInClass).addClass(loadingClass); + $(STR_BODY).addClass('has-' + STR_DISPLAY + '-' + STR_LOADING); + if(options.$backdrop) options.$backdrop.addClass(loadingClass); + + var ajaxOptions = $.isStr(remote) ? {url: remote} : remote; + if(that.xhr) that.xhr.abort(); + that.remoteCall = remoteCall; + that.xhr = $.ajax($.extend({ + dataType: options.remoteType || 'html', + error: options.remoteError + }, ajaxOptions, { + success: function(data, status, xhr) { + fillContent(data); + ajaxOptions.success && ajaxOptions.success(data, status, xhr); + }, + complete: function(xhr, status) { + that.xhr = 0; + if(that.remoteCall !== remoteCall) return; + if(that.lastRemote !== remote) { + $(options.container).scrollTop(0); + that.lastRemote = remote; + } + $target.removeClass(loadingClass).addClass(options.showInClass); + $(STR_BODY).removeClass('has-' + STR_DISPLAY + '-' + STR_LOADING); + if(options.$backdrop) options.$backdrop.removeClass(loadingClass); + $.callEvent('loaded', options['loaded'], that, that.$, options); + $(document).triggerHandler(STR_DISPLAY + '.loaded', [that, that.$, options]); + ajaxOptions.complete && ajaxOptions.complete(xhr, status); + readyCallback && readyCallback(); + } + })); + } else { + var content = $.calValue(options.content, that, options), + source = options.source; + if(source) { + source = $($.calValue(source, that, options)); + source = source.parent().length ? source.clone() : source; + content = content ? source.html(content) : source; + } + fillContent(content); + readyCallback && readyCallback(); + } + callback && callback(remote); + }; + + Display.prototype._getOptions = function(extraOptions) { + var that = this; + var options = $.extend({}, that.options, extraOptions); + + var display = options.display; + if(display && Display.plugs[display]) { + options = $.calValue(Display.plugs[display], that, options); + } + + if(!options.$target) options.$target = that._getTarget(options); + + return options; + }; + + Display.prototype.show = function(extraOptions, callback) { + if($.isFunction(extraOptions)) { + callback = extraOptions; + extraOptions = null; + } + + var that = this; + var options = that._getOptions(extraOptions); + that.last = options; + + var $target = options.$target, + activeClass = options.activeClass, + animate = options.animate, + element = options.element, + placement = options.placement, + $layer = options.layer, + suggestAnimate = '', + suggestArrow = '', + displayName = options.name, + arrow = options.arrow, + backdrop = options.backdrop, + $element = $(element); + + $target.attr('class', 'invisible ' + $target.data(STR_ORIGINAL_CLASS) + ' ' + (options.targetClass || '')).removeClass(STR_HIDDEN); + + if($.callEvent('show', options.show, that, that.$, options) === false) { + $target.attr('class', STR_ORIGINAL_CLASS); + if(options.layer) options.layer.remove(); + return callback && callback(); + } + + if(options.showSingle) { + (options.showSingle === true ? $target.parent().children() : $(options.showSingle)).not($target).removeClass(options.showInClass).addClass(STR_HIDDEN); + } + + if($layer) $layer.removeClass(STR_HIDDEN); + + if(backdrop) { + var backdropId = 'backdrop-' + displayName; + $('#' + backdropId).remove(); + var $backdrop = options.$backdrop = $('
').attr({ + id: backdropId, + type: options.display, + 'data-display-name': displayName + }).appendTo(STR_BODY).css('zIndex', uuid++); + if(backdrop === true) backdrop = 'fade'; + if($.isStr(backdrop)) $backdrop.addClass(backdrop); + $(STR_BODY).addClass('display-show-' + options.name); + setTimeout(function(){$backdrop.addClass('in');}, 10); + + if(options.backdropDismiss) { + $backdrop.attr('data-dismiss', STR_DISPLAY); + } + } + + if(options.targetZIndex !== 'none') ($layer || $target).css('zIndex', options.targetZIndex || uuid++); + + if(activeClass && element) { + if(options.activeSingle) $element.parent().children().removeClass(activeClass); + $element.addClass(activeClass); + } + + that.update($target, options, function(isRemoteContent) { + if(options.scrollTop) $(options.container).scrollTop(0); + placement = $.calValue(placement, that, options); + if(placement) { + if($.isStr(placement) && placement[0] == '{') { + placement = $.parseJSON(placement); + } + var $body = $('body'); + if($.isPlainObject(placement)) { + $target.css(placement); + } else if(placement === 'overlay') { + var bounding = $element[0].getBoundingClientRect(); + $target.css({position: 'absolute', left: bounding.left, top: bounding.top, width: bounding.width, height: bounding.height}); + } else if(placement.indexOf('beside') === 0) { + $target.css({position: 'fixed'}); + placement = placement.split('-'); + var $win = $(window); + var beside = placement[1] || 'auto', + float = placement[2] || 'center', + offset = $element.offset(), + bounding = $element[0].getBoundingClientRect(), + width = $target.width(), + height = $target.height(), + wWidth = $win.width(), + wHeight = $win.height(), + floatStart = float === 'start', + floatEnd = float === 'end', + top, left; + var eTop = bounding.top, + eLeft = bounding.left, + eWidth = bounding.width, + eHeight = bounding.height; + + if(beside === 'auto') { + if(eTop + eHeight + height <= wHeight) { + beside = 'bottom'; + } else if(height <= eTop) { + beside = 'top'; + } else if(eLeft + eWidth + width <= wWidth) { + beside = 'right'; + } else if(width <= eLeft) { + beside = 'left'; + } else beside = 'bottom' + } + + var bestLeft = floatStart ? eLeft : (floatEnd ? (eLeft + eWidth) : (eLeft + eWidth/2 - width/2)), + bestTop = floatStart ? eTop : (floatEnd ? (eTop + eHeight) : (eTop + eHeight/2 - height/2)); + + if(beside === 'bottom') { + top = eTop + eHeight; + left = bestLeft; + } else if(beside === 'top') { + top = eTop - height; + left = bestLeft; + } else if(beside === 'right') { + top = bestTop; + left = eLeft + eWidth; + } else { + top = bestTop; + left = eLeft - width; + } + + $target.css({ + top: Math.max(0, Math.min(top, wHeight - height)), + left: Math.max(0, Math.min(left, wWidth - width)) + }); + + suggestArrow = inverseSide[beside]; + suggestAnimate = 'fade scale-from-' + suggestArrow; + } else { + placement = placement.split('-'); + var justify = placement[0], + align = placement[1], + layerCss = {}; + if(justify == 'top' || justify == 'bottom' || justify == 'left' || justify == 'right') { + layerCss.justifyContent = 'flex-' + ((justify === 'top' || justify == 'left') ? 'start' : 'end'); + layerCss.flexDirection = (justify == 'top' || justify == 'bottom') ? 'column' : 'row'; + layerCss.alignItems = align ? (align == 'center' ? 'center' : (align == 'left' ? 'flex-start' : 'flex-end')) : 'stretch'; + } + + if($layer) $layer.css(layerCss); + suggestAnimate = justify; + suggestArrow = inverseSide[suggestAnimate]; + suggestAnimate = 'from-' + suggestAnimate; + } + } + + if(arrow) { + var arrowClass = 'display-arrow arrow-' + suggestArrow; + if($.isStr(arrow)) arrowClass += ' ' + arrow; + $target.addClass(arrowClass); + } + + var afterShow = function() { + $target.removeClass('invisible'); + if(!isRemoteContent) $target.addClass(options.showInClass); + + callback && callback(); + + var autoHide = options.autoHide; + if(autoHide) { + that.animateCall = setTimeout(function(){that.hide()}, $.isNum(autoHide) ? autoHide : 5000); + } + + that.animateCall = setTimeout(function() { + $.callEvent('shown', options.shown, that, that.$, options); + $(document).triggerHandler(STR_DISPLAY + '.shown', [that, that.$, options]); + }, options.duration + 50); + + if(options.targetDismiss) { + $target.one((options.targetDismiss === true ? TAP_EVENT_NAME : options.targetDismiss) + TARGET_EVENT_SUFFIX, function(){that.hide();}); + } + }; + + if(animate) { + if(animate === true) { + $target.addClass(suggestAnimate ? ('enter-' + suggestAnimate) : 'fade'); + } else { + if($.isStr(animate)) { + $target.addClass(animate.replace('suggest', suggestAnimate)); + } else if($.isNum(animate)) { + options.duration = animate; + } + } + + clearTimeout(that.animateCall); + that.animateCall = setTimeout(afterShow, 10); + } else { + afterShow(); + } + }, function() { + $.callEvent('displayed', options.displayed, that, that.$, options); + $(document).triggerHandler(STR_DISPLAY + '.displayed', [that, that.$, options]); + + if(options.plugSkin) { + $target.find('[data-skin]').skin(); + } + + if(options.plugDisplay) { + $target.find('[data-' + STR_DISPLAY + ']').display(); + } + + if($.fn.listenScroll) { + $target.find('.listen-scroll').listenScroll(); + } + }); + + Display.last = displayName; + Display.all[displayName] = that; + }; + + Display.prototype.hide = function(extraOptions, callback) { + if($.isFunction(extraOptions)) { + callback = extraOptions; + extraOptions = null; + } + + var that = this; + var options = that.last || that._getOptions(extraOptions); + if($.callEvent('hide', options.hide, that, that.$, options) === false) return callback && callback(); + + that.last = false; + + var $target = options.$target.off(TARGET_EVENT_SUFFIX), + $backdrop = $('#backdrop-' + options.name); + var afterHide = function() { + if(options.layer) options.layer.addClass(STR_HIDDEN); + $.callEvent(STR_HIDDEN, options[STR_HIDDEN], that, that.$, options); + $(document).triggerHandler(STR_DISPLAY + '.' + STR_HIDDEN, [that, that.$, options]); + $target.addClass(STR_HIDDEN); + $backdrop.remove(); + $(STR_BODY).removeClass(STR_DISPLAY + '-show-' + options.name); + if(options.layer) options.layer.remove(); + }; + + if(options.activeClass && options.element) { + $(options.element).removeClass(options.activeClass); + } + + $target.removeClass(options.showInClass); + $backdrop.removeClass('in'); + if(options.animate) { + clearTimeout(that.animateCall); + that.animateCall = setTimeout(afterHide, options.duration + 50); + } else { + afterHide(); + } + }; + + Display.prototype.isShow = function(options) { + options = this._getOptions(options); + return options.checkShow ? $.calValue(options.checkShow, this, options) : (options.$target ? options.$target.hasClass(options.showInClass) : options.last); + }; + + Display.prototype.toggle = function(options, callback) { + var toggle; + if(options === true || options === false) { + toggle = options; + options = $.isPlainObject(callback) ? callback : null; + if(options) callback = null; + } else { + toggle = this.isShow(options); + } + this[toggle ? 'hide' : 'show'](options, callback); + }; + + Display.NAME = NAME; + Display.DEFAULT = { + // display: '', // the display type + + trigger: TAP_EVENT_NAME, // trigger event name + // name: '', // unique name + triggerMethod: 'show', // trigger method: show, toggle, hide + + // target: null, // page, tooltip, + // selector: null, // trigger event selector, + // targetClass: null // CSS class be add to the target element + // targetGroup: '', + container: STR_BODY, + // arrow: false, // Display arrow beside target edge + // scrollTop: false, + plugSkin: true, + plugDisplay: true, + // targetDismiss: false, + + content: false, // content source + // remote: '', // remote source + // remoteType: 'html', // html or json + // remoteError: '', // content or function for remote error + // contentType: 'html', // Content type: html or text + // source: '', // function or jquery selector + // template: null, // string to format content, + loadingClass: STR_LOADING, // CSS class to append to target and body element + + showInClass: 'in', // CSS class to be add after show target + // showSingle: false, // + animate: true, // boolean, CSS classes or number for duration + duration: 300, // animation duration + // backdrop: false, // show backdrop or not, + // placement: false, // target placement, 'screen-center', 'screen-top-left'... + keyboard: true, // if true then hide target on press ESC + backdropDismiss: true, // if true then dismiss display on tab backdrop + // autoHide: 0, // if set a number then auto hide the target after the given millionseconds + + // activeClass: '', // active class add to the trigger element after target show and remove it after the target hide + activeSingle: true, // make sure active class only be add to a single trigger element + + // events callback + // show: null, // callback before show target + // shown: null, // callback after show target + // hide: null, // callback before hide target + // hidden: null, // callback after hide target + // loaded: null, // callback after load target + }; + + Display.plugs = function(name, func, fnName) { + if($.isPlainObject(name)) { + $.each(name, Display.plugs); + } else if(func) { + Display.plugs[name] = func; + name = name.indexOf('_') === 0 ? name.substr(1) : name; + if(!$.fn[name] && fnName !== false) { + $.bindFn(fnName || name, Display, {display: name}); + } + } else { + return Display.plugs[name]; + } + }; + + Display.all = {}; + + Display.dismiss = function(name, callback) { + if($.isFunction(name)) { + callback = name; + name = ''; + } + name = name || Display.last; + var display = Display.all[name]; + if(display) display.hide(callback); + }; + + $.bindFn(STR_DISPLAY, Display); + $.Display = Display; + + $(function() { + $('[data-' + STR_DISPLAY + ']').display(); + + $(document).on(TAP_EVENT_NAME, '[data-dismiss="' + STR_DISPLAY + '"]', function() { + var $this = $(this), dataName = 'data-' + STR_DISPLAY + '-name'; + name = $this.attr(dataName); + if(!name || name == 'null' || name == 'undefined') name = $this.closest('.' + STR_DISPLAY).attr(dataName); + Display.dismiss(name); + }); + }); +}(CoreLib, undefined, window, document)); + +/* ======================================================================== + * MZUI: display.plugs.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + +!(function($, undefined){ + 'use strict'; + + if(!$.Display) { + console.error('display.plugs.js requires display.js'); + return; + } + + var getSourceElement = function(name, element, oldSource, extraClass, nameClass) { + var $element = $(element).next('.' + name); + if(!$element.length) $element = oldSource; + return $element || '
'; + }; + + var isUndefinedThen = function(x, y) { + return x === undefined ? y : x; + }; + + $.Display.plugs({ + dropdown: function(options) { + var that = this, + oldSource = options.source; + return $.extend(options, { + backdrop: isUndefinedThen(options.backdrop, 'clean'), + source: options.target ? null : function() { + return getSourceElement('dropdown-menu', options.element, oldSource); + }, + target: isUndefinedThen(options.target, '!new'), + placement: isUndefinedThen(options.placement, 'beside'), + activeClass: isUndefinedThen(options.activeClass, 'open'), + targetDismiss: isUndefinedThen(options.targetDismiss, true) + }); + }, + popover: function(options) { + var that = this, + oldSource = options.source; + return $.extend(options, { + arrow: isUndefinedThen(options.arrow, true), + backdrop: isUndefinedThen(options.backdrop, 'clean'), + source: options.target ? null : function() { + return getSourceElement('popover', options.element, oldSource, 'canvas with-padding'); + }, + target: isUndefinedThen(options.target, '!new'), + placement: isUndefinedThen(options.placement, 'beside'), + activeClass: isUndefinedThen(options.activeClass, 'open') + }); + }, + messager: function(options) { + var that = this; + return $.extend(options, { + autoHide: isUndefinedThen(options.autoHide, true), + animate: (options.animate === undefined || options.animate === true) ? 'scale-suggest fade' : options.animate, + // backdrop: isUndefinedThen(options.backdrop, 'clean'), + closeButton: isUndefinedThen(options.closeButton, true), + template: function(content, options) { + var $messager = $(options.source || '
'); + if(options.icon) $messager.append('
'); + $messager.append('
' + content + '
'); + if(options.closeButton) { + $messager.append(''); + } + return $messager.addClass(options.type || 'gray'); + }, + target: '!new', + placement: isUndefinedThen(options.placement, 'bottom-center'), + activeClass: isUndefinedThen(options.activeClass, 'open') + }); + }, + modal: function(options) { + var that = this, + oldSource = options.source; + return $.extend(options, { + backdrop: isUndefinedThen(options.backdrop, 'modal-backdrop fade'), + source: options.target ? null : function() { + return getSourceElement('modal', options.element, oldSource, '', 'content'); + }, + target: isUndefinedThen(options.target, '!new'), + targetClass: 'modal ' + (options.targetClass || ''), + placement: isUndefinedThen(options.placement, $.TapName === 'tap' ? 'bottom' : 'center'), + activeClass: isUndefinedThen(options.activeClass, 'open') + }); + }, + _collapse: function(options) { + return $.extend(options, { + triggerMethod: 'toggle', + animate: false, + showInClass: 'in', + activeClass: 'collapse-open', + showSingle: isUndefinedThen(options.group || options.showSingle, options.selector ? ('collapse-group-' + (++$.uuid)) : false) + }); + } + }); + + $.Display.plugs('_self', function(options) { + return $.extend(options, { + trigger: false, + target: '!self', + targetZIndex: 'none', + displayAuto: isUndefinedThen(options.displayAuto, true) + }); + }, 'displaySelf'); + + var messager = new $.Display({display: 'messager'}); + messager._show = messager.show; + messager.show = function(content, options) { + messager._show($.extend({content: content}, options)); + }; + $.each({ + primary : 0, + success : 'ok-sign', + info : 'info-sign', + warning : 'warning-sign', + danger : 'exclamation-sign', + important: 0, + special : 0 + }, function(name, icon){ + messager[name] = function(content, options) { + messager._show($.extend({content: content, icon: icon || null, type: name}, options)); + }; + }); + $.messager = messager; +}(CoreLib, undefined)); + +/* ======================================================================== + * MZUI: scroll-listener.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +!(function($){ + 'use strict'; + + var NAME = 'mzui.scrollListener'; + + var ScrollListener = function($element, options) { + var that = this; + that.options = options = $.extend({}, ScrollListener.DEFAULT, $element.data(), options); + that.$ = $element; + that.$container = options.container ? (options.container == 'parent' ? that.$.parent() : $(options.container)) : that.$; + that.lastScrollTop = 0; + that.lastCallTime = 0; + var lastScrollCall = 0; + + $element.on('scroll.' + NAME, function() { + clearTimeout(lastScrollCall); + var time = new Date().getTime(); + lastScrollCall = setTimeout(function() { + that.onScroll(); + that.lastCallTime = time; + }, (time - that.lastCallTime) > options.handleInterval ? 0 : options.handleInterval); + }); + + if(options.canScrollClass) { + var scrollHeight = (that.$[0] === window ? $('body') : that.$)[0].scrollHeight; + that.$container.toggleClass(options.canScrollClass, scrollHeight > that.$.height()); + } + }; + + ScrollListener.prototype.onScroll = function() { + var that = this; + var options = that.options; + var scrollTop = that.$.scrollTop(); + var isInScroll = scrollTop > 0; + var scrollDirection = scrollTop > that.lastScrollTop ? 'down' : 'up'; + var directionClass = options.directionClass; + + that.$container.toggleClass(options.inScrollClass, isInScroll) + .toggleClass(directionClass + '-down', scrollDirection === 'down') + .toggleClass(directionClass + '-up', scrollDirection === 'up') + .toggleClass(directionClass + '-over', scrollTop + that.$.height() >= that.$[0].scrollHeight); + + that.$container.callEvent(that, 'listenScroll', [isInScroll, scrollDirection, scrollTop]); + + that.isInScroll = isInScroll; + that.scrollDirection = scrollDirection; + that.lastScrollTop = scrollTop; + }; + + ScrollListener.NAME = NAME; + ScrollListener.DEFAULT = { + minDelta : 20, + handleInterval: 100, + inScrollClass : 'in-scroll', + directionClass: 'scroll', + canScrollClass: 'can-scroll' + }; + + $.bindFn('listenScroll', ScrollListener); + + $(function() { + $(window).listenScroll({container: 'body'}); + $('.listen-scroll').listenScroll(); + }); +}(CoreLib)); + +/* ======================================================================== + * MZUI: color.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +!(function($, Math, undefined) { + 'use strict'; + + var hexReg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/, + N255 = 255, + N360 = 360, + N100 = 100, + STR_STRING = 'string', + STR_OBJECT = 'object'; + + var isUndefined = function(x) { + return x === undefined; + }; + + var isNotUndefined = function(x) { + return !isUndefined(x); + }; + + var convertToInt = function(x) { + return parseInt(x); + }; + + var clampNumber = function(x, max) { + return clamp(number(x), max); + }; + + var convertToRgbInt = function(x) { + return convertToInt(clampNumber(x, N255)); + }; + + /* color */ + var Color = function(r, g, b, a) { + var that = this; + that.r = that.g = that.b = 0; + that.a = 1; + + if(isNotUndefined(a)) that.a = clampNumber(a, 1); + if(isNotUndefined(r) && isNotUndefined(g) && isNotUndefined(b)) { + that.r = convertToRgbInt(r); + that.g = convertToRgbInt(g); + that.b = convertToRgbInt(b); + } else if(isNotUndefined(r)) { + var type = typeof(r); + if(type == STR_STRING) { + r = r.toLowerCase(); + if(r === 'transparent') { + that.a = 0; + } else { + that.rgb(hexToRgb(r)); + } + } else if(type == 'number' && isUndefined(g)) { + that.r = that.g = that.b = convertToRgbInt(r); + } else if(type == STR_OBJECT && isNotUndefined(r.r)) { + that.r = convertToRgbInt(r.r); + if(isNotUndefined(r.g)) that.g = convertToRgbInt(r.g); + if(isNotUndefined(r.b)) that.b = convertToRgbInt(r.b); + if(isNotUndefined(r.a)) that.a = clampNumber(r.a, 1); + } else if(type == STR_OBJECT && isNotUndefined(r.h)) { + var hsl = { + h: clampNumber(r.h, N360), + s: 1, + l: 1, + a: 1 + }; + if(isNotUndefined(r.s)) hsl.s = clampNumber(r.s, 1); + if(isNotUndefined(r.l)) hsl.l = clampNumber(r.l, 1); + if(isNotUndefined(r.a)) hsl.a = clampNumber(r.a, 1); + + that.rgb(hslToRgb(hsl)); + } + } + }; + + Color.prototype.rgb = function(rgb) { + var that = this; + if(isNotUndefined(rgb)) { + if(typeof(rgb) == STR_OBJECT) { + if(isNotUndefined(rgb.r)) that.r = convertToRgbInt(rgb.r); + if(isNotUndefined(rgb.g)) that.g = convertToRgbInt(rgb.g); + if(isNotUndefined(rgb.b)) that.b = convertToRgbInt(rgb.b); + if(isNotUndefined(rgb.a)) that.a = clampNumber(rgb.a, 1); + } else { + var v = convertToInt(number(rgb)); + that.r = v; + that.g = v; + that.b = v; + } + return that; + } else return { + r: that.r, + g: that.g, + b: that.b, + a: that.a + }; + }; + + Color.prototype.hue = function(hue) { + var that = this; + var hsl = that.toHsl(); + + if(isUndefined(hue)) return hsl.h; + else { + hsl.h = clampNumber(hue, N360); + that.rgb(hslToRgb(hsl)); + return that; + } + }; + + Color.prototype.darken = function(amount) { + var that = this; + var hsl = that.toHsl(); + + hsl.l -= amount / N100; + hsl.l = clamp(hsl.l, 1); + + that.rgb(hslToRgb(hsl)); + return that; + }; + + Color.prototype.clone = function() { + var that = this; + return new Color(that.r, that.g, that.b, that.a); + }; + + Color.prototype.lighten = function(amount) { + return this.darken(-amount); + }; + + Color.prototype.fade = function(amount) { + this.a = clamp(amount / N100, 1); + + return this; + }; + + // Color.prototype.spin = function(amount) { + // var hsl = this.toHsl(); + // var hue = (hsl.h + amount) % N360; + + // hsl.h = hue < 0 ? N360 + hue : hue; + // return this.rgb(hslToRgb(hsl)); + // }; + + Color.prototype.toHsl = function() { + var that = this; + var r = that.r / N255, + g = that.g / N255, + b = that.b / N255, + a = that.a; + + var max = Math.max(r, g, b), + min = Math.min(r, g, b); + var h, s, l = (max + min) / 2, + d = max - min; + + if(max === min) { + h = s = 0; + } else { + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + + switch(max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return { + h: h * N360, + s: s, + l: l, + a: a + }; + }; + + Color.prototype.luma = function() { + var r = this.r / N255, + g = this.g / N255, + b = this.b / N255; + + r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4); + g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4); + b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4); + + return 0.2126 * r + 0.7152 * g + 0.0722 * b; + }; + + Color.prototype.saturate = function(amount) { + var hsl = this.toHsl(); + + hsl.s += amount / N100; + hsl.s = clamp(hsl.s); + + return this.rgb(hslToRgb(hsl)); + }; + + // Color.prototype.desaturate = function(amount) { + // return this.saturate(-amount); + // }; + + Color.prototype.contrast = function(dark, light, threshold) { + if(isUndefined(light)) light = new Color(N255, N255, N255, 1); + else light = new Color(light); + if(isUndefined(dark)) dark = new Color(0, 0, 0, 1); + else dark = new Color(dark); + + if(dark.luma() > light.luma()) { + var t = light; + light = dark; + dark = t; + } + + if(this.a < 0.5) return dark; + + if(isUndefined(threshold)) threshold = 0.43; + else threshold = number(threshold); + + if(this.luma() < threshold) { + return light; + } else { + return dark; + } + }; + + Color.prototype.hexStr = function() { + var toHexValue = function(x) { + x = x.toString(16); + return x.length == 1 ? ('0' + x) : x; + }; + return '#' + toHexValue(this.r) + toHexValue(this.g) + toHexValue(this.b); + }; + + Color.prototype.toCssStr = function() { + var that = this; + if(that.a > 0) { + if(that.a < 1) { + return 'rgba(' + that.r + ',' + that.g + ',' + that.b + ',' + that.a + ')'; + } else { + return that.hexStr(); + } + } else { + return 'transparent'; + } + }; + + Color.isColor = isColor; + + /* helpers */ + function hexToRgb(hex) { + hex = hex.toLowerCase(); + if(hex && hexReg.test(hex)) { + var i; + if(hex.length === 4) { + var hexNew = '#'; + for(i = 1; i < 4; i += 1) { + hexNew += hex.slice(i, i + 1).concat(hex.slice(i, i + 1)); + } + hex = hexNew; + } + + var hexChange = []; + for(i = 1; i < 7; i += 2) { + hexChange.push(convertToInt('0x' + hex.slice(i, i + 2))); + } + return { + r: hexChange[0], + g: hexChange[1], + b: hexChange[2], + a: 1 + }; + } else { + throw new Error('Wrong hex string! (hex: ' + hex + ')'); + } + } + + function isColor(hex) { + return typeof(hex) === STR_STRING && (hex.toLowerCase() === 'transparent' || hexReg.test($.trim(hex.toLowerCase()))); + } + + function hslToRgb(hsl) { + var h = hsl.h, + s = hsl.s, + l = hsl.l, + a = hsl.a; + + h = (number(h) % N360) / N360; + s = clampNumber(s); + l = clampNumber(l); + a = clampNumber(a); + + var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + var m1 = l * 2 - m2; + + var r = { + r: hue(h + 1 / 3) * N255, + g: hue(h) * N255, + b: hue(h - 1 / 3) * N255, + a: a + }; + + return r; + + function hue(h) { + h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h); + if(h * 6 < 1) { + return m1 + (m2 - m1) * h * 6; + } else if(h * 2 < 1) { + return m2; + } else if(h * 3 < 2) { + return m1 + (m2 - m1) * (2 / 3 - h) * 6; + } else { + return m1; + } + } + } + + function fit(n, end, start) { + if(isUndefined(start)) start = 0; + if(isUndefined(end)) end = N255; + + return Math.min(Math.max(n, start), end); + } + + function clamp(v, max) { + return fit(v, max); + } + + function number(n) { + if(typeof(n) == 'number') return n; + return parseFloat(n); + } + + $.Color = Color; + +}(CoreLib, Math, undefined)); + + +/* ======================================================================== + * MZUI: skin.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +(function($, undefined, Math){ + 'use strict'; + + var NAME = 'mzui.skin', + allSkins = {}; + + var Skin = function($element, options) { + var that = this; + that.options = options = $.extend({}, Skin.DEFAULT, $element.data(), options); + that.$ = $element; + + that.paint(); + }; + + Skin.prototype.paint = function(skin) { + var that = this; + var options = that.options, + $e = that.$; + var isPale = that.$.hasClass('pale') || options.pale, + isOutline = options.outline || $e.hasClass('outline'), + isTextTint = options.tint || $e.hasClass('text-tint'), + color, skinName; + + skin = skin === undefined ? options.skin : skin; + if(isPale === undefined && (that.$.hasClass('dark') || options.dark)) isPale = false; + + if($.isStr(skin) && skin.indexOf(':') > 0) { + skin = skin.split(':'); + skinName = skin[0]; + skin = skin[1]; + var skinNum = parseInt(skin); + if(skinNum !== NaN) skin = skinNum; + } + + if(skin === '' || skin === undefined || skin === 'random') { + skin = Math.round(Math.random() * 360); + } else if(allSkins[skin]) { + skin = allSkins[skin]; + } else if($.isStr(skin) && skin.indexOf('random') === 0) { + allSkins[skin] = skin = Math.round(Math.random() * 360); + } else if($.isStr(skin) && skin.indexOf('@') === 0) { + var val = 0; + for(var i = skin.length - 1; i > 0; --i) { + val += Math.pow(3, (i - 1)) * skin.charCodeAt(i); + } + skin = val; + } + + if(skinName) allSkins[skinName] = skin; + + if(typeof skin === 'number') { + color = new $.Color({h: (skin * options.hueSpace) % 360, s: options.saturation, l: options.lightness}); + } else { + color = new $.Color(skin); + } + + that.color = color; + if(color.luma() < options.threshold) { // color is dark color + if(isPale) { + that.darkColor = color; + that.color = new $.Color($.extend(color.toHsl(), {l: options.paleLight})); + } + } else { + if(isPale === false) { + that.paleColor = color; + that.color = new $.Color($.extend(color.toHsl(), {l: options.darkLight})); + } else { + isPale = true; + if(isTextTint) that.darkColor = new $.Color($.extend(color.toHsl(), {l: options.darkLight})); + } + } + + var colorCss = that.color.toCssStr(); + var cssStyle = { + backgroundColor: isOutline ? 'transparent' : colorCss, + borderColor: colorCss, + color: isOutline ? colorCss : (!isPale ? '#fff' : (isTextTint ? that.darkColor.toCssStr() : '')) + }; + + if(that.$.callEvent(that, 'paint', cssStyle) !== false) $e.css(cssStyle); + }; + + Skin.NAME = NAME; + Skin.DEFAULT = { + skin: 'random', + hueSpace: 47, + saturation: 0.7, + lightness: 0.6, + threshold: 0.5, + darkLight: 0.4, + paleLight: 0.92 + }; + + Skin.all = allSkins; + Skin.set = function(name, skin) { + if($.isPlainObject(name)) { + $.extend(Skin.all, name, skin); + } else { + Skin.all[name] = skin; + } + $('[data-skin]').skin('paint'); + }; + + $.bindFn('skin', Skin); + $.Skin = Skin; + + $(function() { + $('[data-skin]').skin(); + }); +}(CoreLib, undefined, Math)); + +/* ======================================================================== + * MZUI: ajaxform.js + * https://github.com/easysoft/mzui + * ======================================================================== + * Copyright (c) 2016 cnezsoft.com; Licensed MIT + * ======================================================================== */ + + +!(function ($, window, undefined) { + 'use strict'; + + var NAME = 'mzui.ajaxform'; + + var setAjaxForm = function ($form, options) { + if (!$form.length || $form.data(NAME)) return; + $form.data(NAME, 1); + + var callEvent = function (name, data) { + var result; + var event = $.Event(name); + if (!$.isArray(data)) data = [data]; + $form.trigger(event, data); + result = event.result; + if (options && $.isFunction(options[name])) { + result = options[name].apply($form, data); + } + return result; + }; + + var showMessage = function (message) { + var $message = $form.find('.form-message'); + if ($message.length) { + var $content = $message.find('.content'); + ($content.length ? $content : $message).html(message); + $message.show(); + } else { + $.messager.warning(message, { time: 10000 }); + } + }; + + $form.on('submit', function (e) { + e.preventDefault(); + + var form = $form[0]; + var _formData = {}; + $.each($form.serializeArray(), function (idx, item) { + var _name = item.name, + _val = item.value, + _formVal = _formData[_name]; + if (_val instanceof FileList) { + var _fileVal = []; + for (var i = _val.length - 1; i >= 0; --i) { + _fileVal.push(_val[i]); + } + _val = _fileVal; + } + if ($.isArray(_val)) { + if (_formVal === undefined) { + _formVal = _val; + } else if ($.isArray(_formVal)) { + _formVal.push.apply(_formVal, _val); + } else { + _val.push(_formVal); + _formVal = _val; + } + } else if (_name.lastIndexOf(']') === _name.length - 1) { + if (_formVal === undefined) { + _formVal = [_val]; + } else { + _formVal.push(_val); + } + } else { + _formVal = _val; + } + _formData[_name] = _formVal; + }); + + var userSubmitData = callEvent('onSubmit', _formData); + if (userSubmitData === false) return; + if (userSubmitData !== undefined) { + _formData = userSubmitData; + } + + if (options.dataConverter) { + _formData = options.dataConverter(_formData); + } + + var formData = new FormData(); + for (var key in _formData) { + var _val = _formData[key]; + if ($.isArray(_val)) { + for (var i = _val.length - 1; i >= 0; --i) { + formData.append(key, _val[i]); + } + } else formData.append(key, _val); + } + + var $submitBtn = $form.find('[type="submit"]').attr('disabled', 'disabled').addClass('disabled loading'); + $.ajax({ + url: options.url || form.action, + type: options.type || form.method, + processData: false, + contentType: false, + dataType: options.dataType || $form.data('type') || 'json', + data: formData, + success: function (response, status) { + var userResponse = callEvent('onResponse', [response, status]); + if (userResponse === false) return; + if (userResponse !== undefined) { + response = userResponse; + } + try { + if (typeof response === 'string') response = $.parseJSON(response); + if (callEvent('onSuccess', response) !== false) { + if (response.result === 'success') { + if (response.message) { + $.messager.success(response.message); + if (response.locate) { + setTimeout(function () { location.href = response.locate; }, 1200); + } + } else { + if (response.locate) location.href = response.locate; + } + } else { + var message = response.message || response.reason || response.error; + if (message) { + if ($.isPlainObject(message)) { + $.each(message, function (msgId, msg) { + if ($.isArray(msg) && msg.length) { + msg = msg.length > 1 ? ('
  • ' + msg.join('
  • ') + '
') : msg[0]; + } + var $group = $form.find('#' + msgId + ', [name="' + msgId + '"]').closest('.control'); + if ($group.length) { + var $msg = $group.find('.help-text'); + if (!$msg.length) { + $group.append('
' + msg + '
'); + } else { + $msg.html(msg); + } + $group.addClass('has-error'); + } else { + showMessage(msg); + } + }); + } else { + showMessage(message); + } + } + } + } + } catch (e) { + if (callEvent('onError', ['Error response.']) !== false) { + showMessage(response || 'No response.'); + } + } + callEvent('onResult', response); + }, + error: function (xhr, errorType, error) { + if (callEvent('onError', [error, errorType, xhr]) !== false) { + showMessage('error: ' + error); + if (window.v && window.v.lang.timeout) { + $.messager.danger(window.v.lang.timeout); + } + } + }, + complete: function (xhr, status) { + $submitBtn.attr('disabled', null).removeClass('disabled loading'); + callEvent('onComplete', { xhr: xhr, status: status }); + } + }); + }).on('change', function (e) { + $form.find('.form-message').hide(); + $(e.target).closest('.control').removeClass('has-error'); + }); + + callEvent('init'); + }; + + $.ajaxForm = setAjaxForm; + + $.fn.ajaxform = function (options) { + return $(this).each(function () { + var $form = $(this); + setAjaxForm($form, $.extend($form.data(), options)); + }); + }; + + $(function () { $('.ajaxform').ajaxform(); }); + +}(CoreLib, window, undefined)); diff --git a/public/static/js/mzui.min.js b/public/static/js/mzui.min.js new file mode 100644 index 0000000..793e07c --- /dev/null +++ b/public/static/js/mzui.min.js @@ -0,0 +1,5 @@ +/*! + * MZUI: standard - v1.0.1 - 2018-01-09 + * Copyright (c) 2018 cnezsoft.com; Licensed MIT + */ +window.CoreLib=window.jQuery||window.Zepto,!function(t){"use strict";t.callEvent=function(e,a,n,r,s){var o,i=t.Event(e);return r&&(t(r).trigger(i,s),o=i.result),t.isFunction(a)&&(o=a.apply(n,t.isArray(s)?s:[s])),o},t.fn.callEvent=function(e,a,n){return t.callEvent(a,e.options?e.options[a]:null,e,this,n)},t.bindFn=function(e,a,n){var r=t.fn[e],s=a.NAME||"mzui."+e;t.fn[e]=function(e,r){return this.each(function(){var o=t(this),i=o.data(s),l="object"==typeof e&&e;n&&(l=t.extend(l,n)),i||o.data(s,i=new a(o,l)),"string"==typeof e&&i[e].apply(i,t.isArray(r)?r:[r])})},t.fn[e].Constructor=a,t.fn[e].noConflict=function(){return t.fn[e]=r,this}},t.formatDate=function(t,e){t instanceof Date||(t=new Date(t));var a={"M+":t.getMonth()+1,"d+":t.getDate(),"h+":t.getHours(),"m+":t.getMinutes(),"s+":t.getSeconds(),"S+":t.getMilliseconds()};/(y+)/i.test(e)&&(e=e.replace(RegExp.$1,(t.getFullYear()+"").substr(4-RegExp.$1.length)));for(var n in a)new RegExp("("+n+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?a[n]:("00"+a[n]).substr((""+a[n]).length)));return e},t.format=function(e,a){if(e instanceof Date)return t.formatDate(e,a);if(arguments.length>1){var n;if(2==arguments.length&&"object"==typeof a)for(var r in a)void 0!==a[r]&&(n=new RegExp("({"+r+"})","g"),e=e.replace(n,a[r]));else for(var s=1;s').attr({id:r});var c=t("#"+s);c.length||(c=t('
').attr({id:s}).appendTo(u)),e.layer=e.container=c.append(n)}else"!self"===n&&(n=e.element||a.$);return n=t(n).addClass(o).attr("data-"+o+"-name",e.name),n.parent().length||n.appendTo(e.container),n.data(i)||n.data(i,n.attr("class")),n},g.prototype.update=function(e,a,r,s){var i=this,l=function(n){var r=a.template;t.isFunction(r)?n=r(n,a):t.isStr(r)&&(n=t.format(r,n)),n!==!1&&(t.is$(n)?e.empty().append(n):e["text"===a.contentType?"text":"html"](n))},d=t.calValue(a.remote,i,a);if(d){var p=t.uuid++,f=a.loadingClass;e.removeClass(a.showInClass).addClass(f),t(u).addClass("has-"+o+"-"+c),a.$backdrop&&a.$backdrop.addClass(f);var g=t.isStr(d)?{url:d}:d;i.xhr&&i.xhr.abort(),i.remoteCall=p,i.xhr=t.ajax(t.extend({dataType:a.remoteType||"html",error:a.remoteError},g,{success:function(t,e,a){l(t),g.success&&g.success(t,e,a)},complete:function(r,l){i.xhr=0,i.remoteCall===p&&(i.lastRemote!==d&&(t(a.container).scrollTop(0),i.lastRemote=d),e.removeClass(f).addClass(a.showInClass),t(u).removeClass("has-"+o+"-"+c),a.$backdrop&&a.$backdrop.removeClass(f),t.callEvent("loaded",a.loaded,i,i.$,a),t(n).triggerHandler(o+".loaded",[i,i.$,a]),g.complete&&g.complete(r,l),s&&s())}}))}else{var h=t.calValue(a.content,i,a),m=a.source;m&&(m=t(t.calValue(m,i,a)),m=m.parent().length?m.clone():m,h=h?m.html(h):m),l(h),s&&s()}r&&r(d)},g.prototype._getOptions=function(e){var a=this,n=t.extend({},a.options,e),r=n.display;return r&&g.plugs[r]&&(n=t.calValue(g.plugs[r],a,n)),n.$target||(n.$target=a._getTarget(n)),n},g.prototype.show=function(e,c){t.isFunction(e)&&(c=e,e=null);var p=this,h=p._getOptions(e);p.last=h;var m=h.$target,v=h.activeClass,C=h.animate,y=h.element,b=h.placement,w=h.layer,x="",S="",k=h.name,$=h.arrow,T=h.backdrop,E=t(y);if(m.attr("class","invisible "+m.data(i)+" "+(h.targetClass||"")).removeClass(l),t.callEvent("show",h.show,p,p.$,h)===!1)return m.attr("class",i),h.layer&&h.layer.remove(),c&&c();if(h.showSingle&&(h.showSingle===!0?m.parent().children():t(h.showSingle)).not(m).removeClass(h.showInClass).addClass(l),w&&w.removeClass(l),T){var D="backdrop-"+k;t("#"+D).remove();var A=h.$backdrop=t('
').attr({id:D,type:h.display,"data-display-name":k}).appendTo(u).css("zIndex",r++);T===!0&&(T="fade"),t.isStr(T)&&A.addClass(T),t(u).addClass("display-show-"+h.name),setTimeout(function(){A.addClass("in")},10),h.backdropDismiss&&A.attr("data-dismiss",o)}"none"!==h.targetZIndex&&(w||m).css("zIndex",h.targetZIndex||r++),v&&y&&(h.activeSingle&&E.parent().children().removeClass(v),E.addClass(v)),p.update(m,h,function(e){if(h.scrollTop&&t(h.container).scrollTop(0),b=t.calValue(b,p,h)){t.isStr(b)&&"{"==b[0]&&(b=t.parseJSON(b));t("body");if(t.isPlainObject(b))m.css(b);else if("overlay"===b){var r=E[0].getBoundingClientRect();m.css({position:"absolute",left:r.left,top:r.top,width:r.width,height:r.height})}else if(0===b.indexOf("beside")){m.css({position:"fixed"}),b=b.split("-");var i,l,u=t(a),g=b[1]||"auto",v=b[2]||"center",r=(E.offset(),E[0].getBoundingClientRect()),y=m.width(),k=m.height(),T=u.width(),D=u.height(),A="start"===v,L="end"===v,j=r.top,F=r.left,I=r.width,O=r.height;"auto"===g&&(g=j+O+k<=D?"bottom":k<=j?"top":F+I+y<=T?"right":y<=F?"left":"bottom");var H=A?F:L?F+I:F+I/2-y/2,M=A?j:L?j+O:j+O/2-k/2;"bottom"===g?(i=j+O,l=H):"top"===g?(i=j-k,l=H):"right"===g?(i=M,l=F+I):(i=M,l=F-y),m.css({top:Math.max(0,Math.min(i,D-k)),left:Math.max(0,Math.min(l,T-y))}),S=f[g],x="fade scale-from-"+S}else{b=b.split("-");var N=b[0],_=b[1],R={};"top"!=N&&"bottom"!=N&&"left"!=N&&"right"!=N||(R.justifyContent="flex-"+("top"===N||"left"==N?"start":"end"),R.flexDirection="top"==N||"bottom"==N?"column":"row",R.alignItems=_?"center"==_?"center":"left"==_?"flex-start":"flex-end":"stretch"),w&&w.css(R),x=N,S=f[x],x="from-"+x}}if($){var z="display-arrow arrow-"+S;t.isStr($)&&(z+=" "+$),m.addClass(z)}var V=function(){m.removeClass("invisible"),e||m.addClass(h.showInClass),c&&c();var a=h.autoHide;a&&(p.animateCall=setTimeout(function(){p.hide()},t.isNum(a)?a:5e3)),p.animateCall=setTimeout(function(){t.callEvent("shown",h.shown,p,p.$,h),t(n).triggerHandler(o+".shown",[p,p.$,h])},h.duration+50),h.targetDismiss&&m.one((h.targetDismiss===!0?s:h.targetDismiss)+d,function(){p.hide()})};C?(C===!0?m.addClass(x?"enter-"+x:"fade"):t.isStr(C)?m.addClass(C.replace("suggest",x)):t.isNum(C)&&(h.duration=C),clearTimeout(p.animateCall),p.animateCall=setTimeout(V,10)):V()},function(){t.callEvent("displayed",h.displayed,p,p.$,h),t(n).triggerHandler(o+".displayed",[p,p.$,h]),h.plugSkin&&m.find("[data-skin]").skin(),h.plugDisplay&&m.find("[data-"+o+"]").display(),t.fn.listenScroll&&m.find(".listen-scroll").listenScroll()}),g.last=k,g.all[k]=p},g.prototype.hide=function(e,a){t.isFunction(e)&&(a=e,e=null);var r=this,s=r.last||r._getOptions(e);if(t.callEvent("hide",s.hide,r,r.$,s)===!1)return a&&a();r.last=!1;var i=s.$target.off(d),c=t("#backdrop-"+s.name),p=function(){s.layer&&s.layer.addClass(l),t.callEvent(l,s[l],r,r.$,s),t(n).triggerHandler(o+"."+l,[r,r.$,s]),i.addClass(l),c.remove(),t(u).removeClass(o+"-show-"+s.name),s.layer&&s.layer.remove()};s.activeClass&&s.element&&t(s.element).removeClass(s.activeClass),i.removeClass(s.showInClass),c.removeClass("in"),s.animate?(clearTimeout(r.animateCall),r.animateCall=setTimeout(p,s.duration+50)):p()},g.prototype.isShow=function(e){return e=this._getOptions(e),e.checkShow?t.calValue(e.checkShow,this,e):e.$target?e.$target.hasClass(e.showInClass):e.last},g.prototype.toggle=function(e,a){var n;e===!0||e===!1?(n=e,e=t.isPlainObject(a)?a:null,e&&(a=null)):n=this.isShow(e),this[n?"hide":"show"](e,a)},g.NAME=p,g.DEFAULT={trigger:s,triggerMethod:"show",container:u,plugSkin:!0,plugDisplay:!0,content:!1,loadingClass:c,showInClass:"in",animate:!0,duration:300,keyboard:!0,backdropDismiss:!0,activeSingle:!0},g.plugs=function(e,a,n){if(t.isPlainObject(e))t.each(e,g.plugs);else{if(!a)return g.plugs[e];g.plugs[e]=a,e=0===e.indexOf("_")?e.substr(1):e,t.fn[e]||n===!1||t.bindFn(n||e,g,{display:e})}},g.all={},g.dismiss=function(e,a){t.isFunction(e)&&(a=e,e=""),e=e||g.last;var n=g.all[e];n&&n.hide(a)},t.bindFn(o,g),t.Display=g,t(function(){t("[data-"+o+"]").display(),t(n).on(s,'[data-dismiss="'+o+'"]',function(){var e=t(this),a="data-"+o+"-name";name=e.attr(a),name&&"null"!=name&&"undefined"!=name||(name=e.closest("."+o).attr(a)),g.dismiss(name)})})}(CoreLib,void 0,window,document),!function(t,e){"use strict";if(!t.Display)return void console.error("display.plugs.js requires display.js");var a=function(e,a,n,r,s){var o=t(a).next("."+e);return o.length||(o=n),o||'
'},n=function(t,a){return t===e?a:t};t.Display.plugs({dropdown:function(e){var r=e.source;return t.extend(e,{backdrop:n(e.backdrop,"clean"),source:e.target?null:function(){return a("dropdown-menu",e.element,r)},target:n(e.target,"!new"),placement:n(e.placement,"beside"),activeClass:n(e.activeClass,"open"),targetDismiss:n(e.targetDismiss,!0)})},popover:function(e){var r=e.source;return t.extend(e,{arrow:n(e.arrow,!0),backdrop:n(e.backdrop,"clean"),source:e.target?null:function(){return a("popover",e.element,r,"canvas with-padding")},target:n(e.target,"!new"),placement:n(e.placement,"beside"),activeClass:n(e.activeClass,"open")})},messager:function(a){return t.extend(a,{autoHide:n(a.autoHide,!0),animate:a.animate===e||a.animate===!0?"scale-suggest fade":a.animate,closeButton:n(a.closeButton,!0),template:function(e,a){var n=t(a.source||'
');return a.icon&&n.append('
'),n.append('
'+e+"
"),a.closeButton&&n.append(''),n.addClass(a.type||"gray")},target:"!new",placement:n(a.placement,"bottom-center"),activeClass:n(a.activeClass,"open")})},modal:function(e){var r=e.source;return t.extend(e,{backdrop:n(e.backdrop,"modal-backdrop fade"),source:e.target?null:function(){return a("modal",e.element,r,"","content")},target:n(e.target,"!new"),targetClass:"modal "+(e.targetClass||""),placement:n(e.placement,"tap"===t.TapName?"bottom":"center"),activeClass:n(e.activeClass,"open")})},_collapse:function(e){return t.extend(e,{triggerMethod:"toggle",animate:!1,showInClass:"in",activeClass:"collapse-open",showSingle:n(e.group||e.showSingle,!!e.selector&&"collapse-group-"+ ++t.uuid)})}}),t.Display.plugs("_self",function(e){return t.extend(e,{trigger:!1,target:"!self",targetZIndex:"none",displayAuto:n(e.displayAuto,!0)})},"displaySelf");var r=new t.Display({display:"messager"});r._show=r.show,r.show=function(e,a){r._show(t.extend({content:e},a))},t.each({primary:0,success:"ok-sign",info:"info-sign",warning:"warning-sign",danger:"exclamation-sign",important:0,special:0},function(e,a){r[e]=function(n,s){r._show(t.extend({content:n,icon:a||null,type:e},s))}}),t.messager=r}(CoreLib,void 0),!function(t){"use strict";var e="mzui.scrollListener",a=function(n,r){var s=this;s.options=r=t.extend({},a.DEFAULT,n.data(),r),s.$=n,s.$container=r.container?"parent"==r.container?s.$.parent():t(r.container):s.$,s.lastScrollTop=0,s.lastCallTime=0;var o=0;if(n.on("scroll."+e,function(){clearTimeout(o);var t=(new Date).getTime();o=setTimeout(function(){s.onScroll(),s.lastCallTime=t},t-s.lastCallTime>r.handleInterval?0:r.handleInterval)}),r.canScrollClass){var i=(s.$[0]===window?t("body"):s.$)[0].scrollHeight;s.$container.toggleClass(r.canScrollClass,i>s.$.height())}};a.prototype.onScroll=function(){var t=this,e=t.options,a=t.$.scrollTop(),n=a>0,r=a>t.lastScrollTop?"down":"up",s=e.directionClass;t.$container.toggleClass(e.inScrollClass,n).toggleClass(s+"-down","down"===r).toggleClass(s+"-up","up"===r).toggleClass(s+"-over",a+t.$.height()>=t.$[0].scrollHeight),t.$container.callEvent(t,"listenScroll",[n,r,a]),t.isInScroll=n,t.scrollDirection=r,t.lastScrollTop=a},a.NAME=e,a.DEFAULT={minDelta:20,handleInterval:100,inScrollClass:"in-scroll",directionClass:"scroll",canScrollClass:"can-scroll"},t.bindFn("listenScroll",a),t(function(){t(window).listenScroll({container:"body"}),t(".listen-scroll").listenScroll()})}(CoreLib),!function(t,e,a){"use strict";function n(t){if(t=t.toLowerCase(),t&&c.test(t)){var e;if(4===t.length){var a="#";for(e=1;e<4;e+=1)a+=t.slice(e,e+1).concat(t.slice(e,e+1));t=a}var n=[];for(e=1;e<7;e+=2)n.push(v("0x"+t.slice(e,e+2)));return{r:n[0],g:n[1],b:n[2],a:1}}throw new Error("Wrong hex string! (hex: "+t+")")}function r(e){return typeof e===f&&("transparent"===e.toLowerCase()||c.test(t.trim(e.toLowerCase())))}function s(t){function e(t){return t=t<0?t+1:t>1?t-1:t,6*t<1?i+(o-i)*t*6:2*t<1?o:3*t<2?i+(o-i)*(2/3-t)*6:i}var a=t.h,n=t.s,r=t.l,s=t.a;a=l(a)%d/d,n=C(n),r=C(r),s=C(s);var o=r<=.5?r*(n+1):r+n-r*n,i=2*r-o,c={r:e(a+1/3)*u,g:e(a)*u,b:e(a-1/3)*u,a:s};return c}function o(t,a,n){return h(n)&&(n=0),h(a)&&(a=u),e.min(e.max(t,n),a)}function i(t,e){return o(t,e)}function l(t){return"number"==typeof t?t:parseFloat(t)}var c=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,u=255,d=360,p=100,f="string",g="object",h=function(t){return t===a},m=function(t){return!h(t)},v=function(t){return parseInt(t)},C=function(t,e){return i(l(t),e)},y=function(t){return v(C(t,u))},b=function(t,e,a,r){var o=this;if(o.r=o.g=o.b=0,o.a=1,m(r)&&(o.a=C(r,1)),m(t)&&m(e)&&m(a))o.r=y(t),o.g=y(e),o.b=y(a);else if(m(t)){var i=typeof t;if(i==f)t=t.toLowerCase(),"transparent"===t?o.a=0:o.rgb(n(t));else if("number"==i&&h(e))o.r=o.g=o.b=y(t);else if(i==g&&m(t.r))o.r=y(t.r),m(t.g)&&(o.g=y(t.g)),m(t.b)&&(o.b=y(t.b)),m(t.a)&&(o.a=C(t.a,1));else if(i==g&&m(t.h)){var l={h:C(t.h,d),s:1,l:1,a:1};m(t.s)&&(l.s=C(t.s,1)),m(t.l)&&(l.l=C(t.l,1)),m(t.a)&&(l.a=C(t.a,1)),o.rgb(s(l))}}};b.prototype.rgb=function(t){var e=this;if(m(t)){if(typeof t==g)m(t.r)&&(e.r=y(t.r)),m(t.g)&&(e.g=y(t.g)),m(t.b)&&(e.b=y(t.b)),m(t.a)&&(e.a=C(t.a,1));else{var a=v(l(t));e.r=a,e.g=a,e.b=a}return e}return{r:e.r,g:e.g,b:e.b,a:e.a}},b.prototype.hue=function(t){var e=this,a=e.toHsl();return h(t)?a.h:(a.h=C(t,d),e.rgb(s(a)),e)},b.prototype.darken=function(t){var e=this,a=e.toHsl();return a.l-=t/p,a.l=i(a.l,1),e.rgb(s(a)),e},b.prototype.clone=function(){var t=this;return new b(t.r,t.g,t.b,t.a)},b.prototype.lighten=function(t){return this.darken(-t)},b.prototype.fade=function(t){return this.a=i(t/p,1),this},b.prototype.toHsl=function(){var t,a,n=this,r=n.r/u,s=n.g/u,o=n.b/u,i=n.a,l=e.max(r,s,o),c=e.min(r,s,o),p=(l+c)/2,f=l-c;if(l===c)t=a=0;else{switch(a=p>.5?f/(2-l-c):f/(l+c),l){case r:t=(s-o)/f+(se.luma()){var n=e;e=t,t=n}return this.a<.5?t:(a=h(a)?.43:l(a),this.luma()0?t.a<1?"rgba("+t.r+","+t.g+","+t.b+","+t.a+")":t.hexStr():"transparent"},b.isColor=r,t.Color=b}(CoreLib,Math,void 0),function(t,e,a){"use strict";var n="mzui.skin",r={},s=function(e,a){var n=this;n.options=a=t.extend({},s.DEFAULT,e.data(),a),n.$=e,n.paint()};s.prototype.paint=function(n){var s,o,i=this,l=i.options,c=i.$,u=i.$.hasClass("pale")||l.pale,d=l.outline||c.hasClass("outline"),p=l.tint||c.hasClass("text-tint");if(n=n===e?l.skin:n,u===e&&(i.$.hasClass("dark")||l.dark)&&(u=!1),t.isStr(n)&&n.indexOf(":")>0){n=n.split(":"),o=n[0],n=n[1];var f=parseInt(n);NaN!==f&&(n=f)}if(""===n||n===e||"random"===n)n=a.round(360*a.random());else if(r[n])n=r[n];else if(t.isStr(n)&&0===n.indexOf("random"))r[n]=n=a.round(360*a.random());else if(t.isStr(n)&&0===n.indexOf("@")){for(var g=0,h=n.length-1;h>0;--h)g+=a.pow(3,h-1)*n.charCodeAt(h);n=g}o&&(r[o]=n),s="number"==typeof n?new t.Color({h:n*l.hueSpace%360,s:l.saturation,l:l.lightness}):new t.Color(n),i.color=s,s.luma()=0;--l)i.push(s[l]);s=i}t.isArray(s)?o===a?o=s:t.isArray(o)?o.push.apply(o,s):(s.push(o),o=s):r.lastIndexOf("]")===r.length-1?o===a?o=[s]:o.push(s):o=s,c[r]=o});var u=o("onSubmit",c);if(u!==!1){u!==a&&(c=u),s.dataConverter&&(c=s.dataConverter(c));var d=new FormData;for(var p in c){var f=c[p];if(t.isArray(f))for(var g=f.length-1;g>=0;--g)d.append(p,f[g]);else d.append(p,f)}var h=r.find('[type="submit"]').attr("disabled","disabled").addClass("disabled loading");t.ajax({url:s.url||l.action,type:s.type||l.method,processData:!1,contentType:!1,dataType:s.dataType||r.data("type")||"json",data:d,success:function(e,n){var s=o("onResponse",[e,n]);if(s!==!1){s!==a&&(e=s);try{if("string"==typeof e&&(e=t.parseJSON(e)),o("onSuccess",e)!==!1)if("success"===e.result)e.message?(t.messager.success(e.message),e.locate&&setTimeout(function(){location.href=e.locate},1200)):e.locate&&(location.href=e.locate);else{var l=e.message||e.reason||e.error;l&&(t.isPlainObject(l)?t.each(l,function(e,a){t.isArray(a)&&a.length&&(a=a.length>1?"
  • "+a.join("
  • ")+"
":a[0]);var n=r.find("#"+e+', [name="'+e+'"]').closest(".control");if(n.length){var s=n.find(".help-text");s.length?s.html(a):n.append('
'+a+"
"),n.addClass("has-error")}else i(a)}):i(l))}}catch(c){o("onError",["Error response."])!==!1&&i(e||"No response.")}o("onResult",e)}},error:function(a,n,r){o("onError",[r,n,a])!==!1&&(i("error: "+r),e.v&&e.v.lang.timeout&&t.messager.danger(e.v.lang.timeout))},complete:function(t,e){h.attr("disabled",null).removeClass("disabled loading"),o("onComplete",{xhr:t,status:e})}})}}).on("change",function(e){r.find(".form-message").hide(),t(e.target).closest(".control").removeClass("has-error")}),o("init")}};t.ajaxForm=r,t.fn.ajaxform=function(e){return t(this).each(function(){var a=t(this);r(a,t.extend(a.data(),e))})},t(function(){t(".ajaxform").ajaxform()})}(CoreLib,window,void 0); \ No newline at end of file diff --git a/public/static/lib/jquery/jquery-3.2.1.min.js b/public/static/lib/jquery/jquery-3.2.1.min.js new file mode 100644 index 0000000..644d35e --- /dev/null +++ b/public/static/lib/jquery/jquery-3.2.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/attachment/attachment.css b/public/vendor/ueditor/dialogs/attachment/attachment.css new file mode 100644 index 0000000..548b428 --- /dev/null +++ b/public/vendor/ueditor/dialogs/attachment/attachment.css @@ -0,0 +1,681 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 上传附件 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(./images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(./images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(./images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} +#upload .filelist li p.imgWrap.notimage { + margin-top: 0; + width: 111px; + height: 111px; + border: 1px #eeeeee solid; +} +#upload .filelist li p.imgWrap.notimage i.file-preview { + margin-top: 15px; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(./images/success.png) no-repeat right bottom; + background-image: url(./images/success.gif) \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(./images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(./images/icons.png) no-repeat; + background: url(./images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #fileList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li div.file-wrapper { + cursor: pointer; + position: absolute; + display: block; + width: 111px; + height: 111px; + border: 1px solid #eee; + background: url("./images/bg.png") repeat; +} +#online li div span.file-title{ + display: block; + padding: 0 3px; + margin: 3px 0 0 0; + font-size: 12px; + height: 13px; + color: #555555; + text-align: center; + width: 107px; + white-space: nowrap; + word-break: break-all; + overflow: hidden; + text-overflow: ellipsis; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif) \9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} + + +/* 在线文件的文件预览图标 */ +i.file-preview { + display: block; + margin: 10px auto; + width: 70px; + height: 70px; + background-image: url("./images/file-icons.png"); + background-image: url("./images/file-icons.gif") \9; + background-position: -140px center; + background-repeat: no-repeat; +} +i.file-preview.file-type-dir{ + background-position: 0 center; +} +i.file-preview.file-type-file{ + background-position: -140px center; +} +i.file-preview.file-type-filelist{ + background-position: -210px center; +} +i.file-preview.file-type-zip, +i.file-preview.file-type-rar, +i.file-preview.file-type-7z, +i.file-preview.file-type-tar, +i.file-preview.file-type-gz, +i.file-preview.file-type-bz2{ + background-position: -280px center; +} +i.file-preview.file-type-xls, +i.file-preview.file-type-xlsx{ + background-position: -350px center; +} +i.file-preview.file-type-doc, +i.file-preview.file-type-docx{ + background-position: -420px center; +} +i.file-preview.file-type-ppt, +i.file-preview.file-type-pptx{ + background-position: -490px center; +} +i.file-preview.file-type-vsd{ + background-position: -560px center; +} +i.file-preview.file-type-pdf{ + background-position: -630px center; +} +i.file-preview.file-type-txt, +i.file-preview.file-type-md, +i.file-preview.file-type-json, +i.file-preview.file-type-htm, +i.file-preview.file-type-xml, +i.file-preview.file-type-html, +i.file-preview.file-type-js, +i.file-preview.file-type-css, +i.file-preview.file-type-php, +i.file-preview.file-type-jsp, +i.file-preview.file-type-asp{ + background-position: -700px center; +} +i.file-preview.file-type-apk{ + background-position: -770px center; +} +i.file-preview.file-type-exe{ + background-position: -840px center; +} +i.file-preview.file-type-ipa{ + background-position: -910px center; +} +i.file-preview.file-type-mp4, +i.file-preview.file-type-swf, +i.file-preview.file-type-mkv, +i.file-preview.file-type-avi, +i.file-preview.file-type-flv, +i.file-preview.file-type-mov, +i.file-preview.file-type-mpg, +i.file-preview.file-type-mpeg, +i.file-preview.file-type-ogv, +i.file-preview.file-type-webm, +i.file-preview.file-type-rm, +i.file-preview.file-type-rmvb{ + background-position: -980px center; +} +i.file-preview.file-type-ogg, +i.file-preview.file-type-wav, +i.file-preview.file-type-wmv, +i.file-preview.file-type-mid, +i.file-preview.file-type-mp3{ + background-position: -1050px center; +} +i.file-preview.file-type-jpg, +i.file-preview.file-type-jpeg, +i.file-preview.file-type-gif, +i.file-preview.file-type-bmp, +i.file-preview.file-type-png, +i.file-preview.file-type-psd{ + background-position: -140px center; +} \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/attachment/attachment.html b/public/vendor/ueditor/dialogs/attachment/attachment.html new file mode 100644 index 0000000..2ae9282 --- /dev/null +++ b/public/vendor/ueditor/dialogs/attachment/attachment.html @@ -0,0 +1,60 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
+
+ + +
+
+ +
+
+
+
+ 0% + +
+
+
+
+
+
+
+
+
+
+
+
    +
  • +
+
+
+ + +
+
+
+ +
+
+ + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/attachment/attachment.js b/public/vendor/ueditor/dialogs/attachment/attachment.js new file mode 100644 index 0000000..ce3be63 --- /dev/null +++ b/public/vendor/ueditor/dialogs/attachment/attachment.js @@ -0,0 +1,754 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var uploadFile, + onlineFile; + + window.onload = function () { + initTabs(); + initButtons(); + }; + + /* 初始化tab标签 */ + function initTabs() { + var tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + setTabFocus(target.getAttribute('data-content-id')); + }); + } + + setTabFocus('upload'); + } + + /* 初始化tabbody */ + function setTabFocus(id) { + if(!id) return; + var i, bodyId, tabs = $G('tabhead').children; + for (i = 0; i < tabs.length; i++) { + bodyId = tabs[i].getAttribute('data-content-id') + if (bodyId == id) { + domUtils.addClass(tabs[i], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[i], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + switch (id) { + case 'upload': + uploadFile = uploadFile || new UploadFile('queueList'); + break; + case 'online': + onlineFile = onlineFile || new OnlineFile('fileList'); + break; + } + } + + /* 初始化onok事件 */ + function initButtons() { + + dialog.onok = function () { + var list = [], id, tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + if (domUtils.hasClass(tabs[i], 'focus')) { + id = tabs[i].getAttribute('data-content-id'); + break; + } + } + + switch (id) { + case 'upload': + list = uploadFile.getInsertList(); + var count = uploadFile.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } + break; + case 'online': + list = onlineFile.getInsertList(); + break; + } + + editor.execCommand('insertfile', list); + }; + } + + + /* 上传附件 */ + function UploadFile(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadFile.prototype = { + init: function () { + this.fileList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')), + fileMaxSize = editor.getOpt('fileMaxSize'), + acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');; + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('fileActionName')) { + $('#filePickerReady').after($('
').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('fileFieldName'), + duplicate: true, + fileSingleSizeLimit: fileMaxSize, + compress: false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

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

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

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

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

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

    +
    +

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

    +
    +
    +
    + +
    + +

    +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/charts/charts.js b/public/vendor/ueditor/dialogs/charts/charts.js new file mode 100644 index 0000000..37344fd --- /dev/null +++ b/public/vendor/ueditor/dialogs/charts/charts.js @@ -0,0 +1,519 @@ +/* + * 图片转换对话框脚本 + **/ + +var tableData = [], + //编辑器页面table + editorTable = null, + chartsConfig = window.typeConfig, + resizeTimer = null, + //初始默认图表类型 + currentChartType = 0; + +window.onload = function () { + + editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true); + + //未找到表格, 显示错误页面 + if ( !editorTable ) { + document.body.innerHTML = "
    未找到数据
    "; + return; + } + + //初始化图表类型选择 + initChartsTypeView(); + renderTable( editorTable ); + initEvent(); + initUserConfig( editorTable.getAttribute( "data-chart" ) ); + $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" ); + updateViewType( currentChartType ); + + dialog.addListener( "resize", function () { + + if ( resizeTimer != null ) { + window.clearTimeout( resizeTimer ); + } + + resizeTimer = window.setTimeout( function () { + + resizeTimer = null; + + renderCharts(); + + }, 500 ); + + } ); + +}; + +function initChartsTypeView () { + + var contents = []; + + for ( var i = 0, len = chartsConfig.length; i
    ' ); + + } + + $( "#scrollBed" ).html( contents.join( "" ) ); + +} + +//渲染table, 以便用户修改数据 +function renderTable ( table ) { + + var tableHtml = []; + + //构造数据 + for ( var i = 0, row; row = table.rows[ i ]; i++ ) { + + tableData[ i ] = []; + tableHtml[ i ] = []; + + for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) { + + var value = getCellValue( cell ); + + if ( i > 0 && j > 0 ) { + value = +value; + } + + if ( i === 0 || j === 0 ) { + tableHtml[ i ].push( ''+ value +'' ); + } else { + tableHtml[ i ].push( '' ); + } + + tableData[ i ][ j ] = value; + + } + + tableHtml[ i ] = tableHtml[ i ].join( "" ); + + } + + //draw 表格 + $( "#tableContainer" ).html( ''+ tableHtml.join( "" ) +'
    ' ); + +} + +/* + * 根据表格已有的图表属性初始化当前图表属性 + */ +function initUserConfig ( config ) { + + var parsedConfig = {}; + + if ( !config ) { + return; + } + + config = config.split( ";" ); + + $.each( config, function ( index, item ) { + + item = item.split( ":" ); + parsedConfig[ item[ 0 ] ] = item[ 1 ]; + + } ); + + setUserConfig( parsedConfig ); + +} + +function initEvent () { + + var cacheValue = null, + //图表类型数 + typeViewCount = chartsConfig.length- 1, + $chartsTypeViewBox = $( '#scrollBed .view-box' ); + + $( ".charts-format" ).delegate( ".format-ctrl", "change", function () { + + renderCharts(); + + } ) + + $( ".table-view" ).delegate( ".data-item", "focus", function () { + + cacheValue = this.value; + + } ).delegate( ".data-item", "blur", function () { + + if ( this.value !== cacheValue ) { + renderCharts(); + } + + cacheValue = null; + + } ); + + $( "#buttonContainer" ).delegate( "a", "click", function (e) { + + e.preventDefault(); + + if ( this.getAttribute( "data-title" ) === 'prev' ) { + + if ( currentChartType > 0 ) { + currentChartType--; + updateViewType( currentChartType ); + } + + } else { + + if ( currentChartType < typeViewCount ) { + currentChartType++; + updateViewType( currentChartType ); + } + + } + + } ); + + //图表类型变化 + $( '#scrollBed' ).delegate( ".view-box", "click", function (e) { + + var index = $( this ).attr( "data-chart-type" ); + $chartsTypeViewBox.removeClass( "selected" ); + $( $chartsTypeViewBox[ index ] ).addClass( "selected" ); + + currentChartType = index | 0; + + //饼图, 禁用部分配置 + if ( currentChartType === chartsConfig.length - 1 ) { + + disableNotPieConfig(); + + //启用完整配置 + } else { + + enableNotPieConfig(); + + } + + renderCharts(); + + } ); + +} + +function renderCharts () { + + var data = collectData(); + + $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], { + + credits: { + enabled: false + }, + exporting: { + enabled: false + }, + title: { + text: data.title, + x: -20 //center + }, + subtitle: { + text: data.subTitle, + x: -20 + }, + xAxis: { + title: { + text: data.xTitle + }, + categories: data.categories + }, + yAxis: { + title: { + text: data.yTitle + }, + plotLines: [{ + value: 0, + width: 1, + color: '#808080' + }] + }, + tooltip: { + enabled: true, + valueSuffix: data.suffix + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle', + borderWidth: 1 + }, + series: data.series + + } )); + +} + +function updateViewType ( index ) { + + $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' ); + +} + +function collectData () { + + var form = document.forms[ 'data-form' ], + data = null; + + if ( currentChartType !== chartsConfig.length - 1 ) { + + data = getSeriesAndCategories(); + $.extend( data, getUserConfig() ); + + //饼图数据格式 + } else { + data = getSeriesForPieChart(); + data.title = form[ 'title' ].value; + data.suffix = form[ 'unit' ].value; + } + + return data; + +} + +/** + * 获取用户配置信息 + */ +function getUserConfig () { + + var form = document.forms[ 'data-form' ], + info = { + title: form[ 'title' ].value, + subTitle: form[ 'sub-title' ].value, + xTitle: form[ 'x-title' ].value, + yTitle: form[ 'y-title' ].value, + suffix: form[ 'unit' ].value, + //数据对齐方式 + tableDataFormat: getTableDataFormat (), + //饼图提示文字 + tip: $( "#tipInput" ).val() + }; + + return info; + +} + +function setUserConfig ( config ) { + + var form = document.forms[ 'data-form' ]; + + config.title && ( form[ 'title' ].value = config.title ); + config.subTitle && ( form[ 'sub-title' ].value = config.subTitle ); + config.xTitle && ( form[ 'x-title' ].value = config.xTitle ); + config.yTitle && ( form[ 'y-title' ].value = config.yTitle ); + config.suffix && ( form[ 'unit' ].value = config.suffix ); + config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true ); + config.tip && ( form[ 'tip' ].value = config.tip ); + currentChartType = config.chartType || 0; + +} + +function getSeriesAndCategories () { + + var form = document.forms[ 'data-form' ], + series = [], + categories = [], + tmp = [], + tableData = getTableData(); + + //反转数据 + if ( getTableDataFormat() === "-1" ) { + + for ( var i = 0, len = tableData.length; i < len; i++ ) { + + for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) { + + if ( !tmp[ j ] ) { + tmp[ j ] = []; + } + + tmp[ j ][ i ] = tableData[ i ][ j ]; + + } + + } + + tableData = tmp; + + } + + categories = tableData[0].slice( 1 ); + + for ( var i = 1, data; data = tableData[ i ]; i++ ) { + + series.push( { + name: data[ 0 ], + data: data.slice( 1 ) + } ); + + } + + return { + series: series, + categories: categories + }; + +} + +/* + * 获取数据源数据对齐方式 + */ +function getTableDataFormat () { + + var form = document.forms[ 'data-form' ], + items = form['charts-format']; + + return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value; + +} + +/* + * 禁用非饼图类型的配置项 + */ +function disableNotPieConfig() { + + updateConfigItem( 'disable' ); + +} + +/* + * 启用非饼图类型的配置项 + */ +function enableNotPieConfig() { + + updateConfigItem( 'enable' ); + +} + +function updateConfigItem ( value ) { + + var table = $( "#showTable" )[ 0 ], + isDisable = value === 'disable' ? true : false; + + //table中的input处理 + for ( var i = 2 , row; row = table.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + $( "input", cell ).attr( "disabled", isDisable ); + + } + + } + + //其他项处理 + $( "input.not-pie-item" ).attr( "disabled", isDisable ); + $( "#tipInput" ).attr( "disabled", !isDisable ) + +} + +/* + * 获取饼图数据 + * 饼图的数据只取第一行的 + **/ +function getSeriesForPieChart () { + + var series = { + type: 'pie', + name: $("#tipInput").val(), + data: [] + }, + tableData = getTableData(); + + + for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) { + + var title = tableData[ 0 ][ j ], + val = tableData[ 1 ][ j ]; + + series.data.push( [ title, val ] ); + + } + + return { + series: [ series ] + }; + +} + +function getTableData () { + + var table = document.getElementById( "showTable" ), + xCount = table.rows[0].cells.length - 1, + values = getTableInputValue(); + + for ( var i = 0, value; value = values[ i ]; i++ ) { + + tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ]; + + } + + return tableData; + +} + +function getTableInputValue () { + + var table = document.getElementById( "showTable" ), + inputs = table.getElementsByTagName( "input" ), + values = []; + + for ( var i = 0, input; input = inputs[ i ]; i++ ) { + values.push( input.value | 0 ); + } + + return values; + +} + +function getCellValue ( cell ) { + + var value = utils.trim( ( cell.innerText || cell.textContent || '' ) ); + + return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' ); + +} + + +//dialog确认事件 +dialog.onok = function () { + + //收集信息 + var form = document.forms[ 'data-form' ], + info = getUserConfig(); + + //添加图表类型 + info.chartType = currentChartType; + + //同步表格数据到编辑器 + syncTableData(); + + //执行图表命令 + editor.execCommand( 'charts', info ); + +}; + +/* + * 同步图表编辑视图的表格数据到编辑器里的原始表格 + */ +function syncTableData () { + + var tableData = getTableData(); + + for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) { + + for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) { + + cell.innerHTML = tableData[ i ] [ j ]; + + } + + } + +} \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/charts/images/charts0.png b/public/vendor/ueditor/dialogs/charts/images/charts0.png new file mode 100644 index 0000000000000000000000000000000000000000..9485e5ed8f83888e782eafae6f7505c79671a985 GIT binary patch literal 25306 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/charts/images/charts2.png b/public/vendor/ueditor/dialogs/charts/images/charts2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c91a39ffac43e0867bec1df89b73e10e0b28c43 GIT binary patch literal 23016 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 PFatGZEv0+~v#0+BCDM7e literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/charts/images/charts4.png b/public/vendor/ueditor/dialogs/charts/images/charts4.png new file mode 100644 index 0000000000000000000000000000000000000000..742006adc9cee3c07b1a390da6991a84d1da99d6 GIT binary patch literal 8344 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/charts/images/charts5.png b/public/vendor/ueditor/dialogs/charts/images/charts5.png new file mode 100644 index 0000000000000000000000000000000000000000..c49a29609d8e8f9bdf101e91021d40c1cb3d4175 GIT binary patch literal 47084 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'*4h4^s0#X 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 g*Z&=uhxp + + + + + + + + + +
    +
    + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/emotion/emotion.js b/public/vendor/ueditor/dialogs/emotion/emotion.js new file mode 100644 index 0000000..6e158a9 --- /dev/null +++ b/public/vendor/ueditor/dialogs/emotion/emotion.js @@ -0,0 +1,186 @@ +window.onload = function () { + editor.setOpt({ + emotionLocalization:false + }); + + emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/"; + emotion.SmileyBox = createTabList( emotion.tabNum ); + emotion.tabExist = createArr( emotion.tabNum ); + + initImgName(); + initEvtHandler( "tabHeads" ); +}; + +function initImgName() { + for ( var pro in emotion.SmilmgName ) { + var tempName = emotion.SmilmgName[pro], + tempBox = emotion.SmileyBox[pro], + tempStr = ""; + + if ( tempBox.length ) return; + for ( var i = 1; i <= tempName[1]; i++ ) { + tempStr = tempName[0]; + if ( i < 10 ) tempStr = tempStr + '0'; + tempStr = tempStr + i + '.gif'; + tempBox.push( tempStr ); + } + } +} + +function initEvtHandler( conId ) { + var tabHeads = $G( conId ); + for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) { + var tabObj = tabHeads.childNodes[i]; + if ( tabObj.nodeType == 1 ) { + domUtils.on( tabObj, "click", (function ( index ) { + return function () { + switchTab( index ); + }; + })( j ) ); + j++; + } + } + switchTab( 0 ); + $G( "tabIconReview" ).style.display = 'none'; +} + +function InsertSmiley( url, evt ) { + var obj = { + src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url + }; + obj._src = obj.src; + editor.execCommand( 'insertimage', obj ); + if ( !evt.ctrlKey ) { + dialog.popup.hide(); + } +} + +function switchTab( index ) { + + autoHeight( index ); + if ( emotion.tabExist[index] == 0 ) { + emotion.tabExist[index] = 1; + createTab( 'tab' + index ); + } + //获取呈现元素句柄数组 + var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ), + tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ), + i = 0, L = tabHeads.length; + //隐藏所有呈现元素 + for ( ; i < L; i++ ) { + tabHeads[i].className = ""; + tabBodys[i].style.display = "none"; + } + //显示对应呈现元素 + tabHeads[index].className = "focus"; + tabBodys[index].style.display = "block"; +} + +function autoHeight( index ) { + var iframe = dialog.getDom( "iframe" ), + parent = iframe.parentNode.parentNode; + switch ( index ) { + case 0: + iframe.style.height = "380px"; + parent.style.height = "392px"; + break; + case 1: + iframe.style.height = "220px"; + parent.style.height = "232px"; + break; + case 2: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 3: + iframe.style.height = "300px"; + parent.style.height = "312px"; + break; + case 4: + iframe.style.height = "140px"; + parent.style.height = "152px"; + break; + case 5: + iframe.style.height = "260px"; + parent.style.height = "272px"; + break; + case 6: + iframe.style.height = "230px"; + parent.style.height = "242px"; + break; + default: + + } +} + + +function createTab( tabName ) { + var faceVersion = "?v=1.1", //版本号 + tab = $G( tabName ), //获取将要生成的Div句柄 + imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径 + positionLine = 11 / 2, //中间数 + iWidth = iHeight = 35, //图片长宽 + iColWidth = 3, //表格剩余空间的显示比例 + tableCss = emotion.imageCss[tabName], + cssOffset = emotion.imageCssOffset[tabName], + textHTML = [''], + i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage, + sUrl, realUrl, posflag, offset, infor; + + for ( ; i < imgNum; ) { + textHTML.push( '' ); + for ( var j = 0; j < imgColNum; j++, i++ ) { + faceImage = emotion.SmileyBox[tabName][i]; + if ( faceImage ) { + sUrl = imagePath + faceImage + faceVersion; + realUrl = imagePath + faceImage; + posflag = j < positionLine ? 0 : 1; + offset = cssOffset * i * (-1) - 1; + infor = emotion.SmileyInfor[tabName][i]; + + textHTML.push( '' ); + } + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML.push( '' ); + textHTML.push( '' ); + textHTML.push( '' ); + } else { + textHTML.push( '' ); + } + textHTML.push( '
    ' ); + textHTML = textHTML.join( "" ); + tab.innerHTML = textHTML; +} + +function over( td, srcPath, posFlag ) { + td.style.backgroundColor = "#ACCD3C"; + $G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")"; + if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show"; + $G( "tabIconReview" ).style.display = 'block'; +} + +function out( td ) { + td.style.backgroundColor = "transparent"; + var tabIconRevew = $G( "tabIconReview" ); + tabIconRevew.className = ""; + tabIconRevew.style.display = 'none'; +} + +function createTabList( tabNum ) { + var obj = {}; + for ( var i = 0; i < tabNum; i++ ) { + obj["tab" + i] = []; + } + return obj; +} + +function createArr( tabNum ) { + var arr = []; + for ( var i = 0; i < tabNum; i++ ) { + arr[i] = 0; + } + return arr; +} + diff --git a/public/vendor/ueditor/dialogs/emotion/images/0.gif b/public/vendor/ueditor/dialogs/emotion/images/0.gif new file mode 100644 index 0000000000000000000000000000000000000000..6964168b947afc2cf76780a85f43d4f77c257b77 GIT binary patch literal 43 qcmZ?wbhEHbWMp7uXkcLY4+e@qSs2-Y0y+#p0Fq%~V)9{Rum%7ZDGCMv literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/bface.gif b/public/vendor/ueditor/dialogs/emotion/images/bface.gif new file mode 100644 index 0000000000000000000000000000000000000000..14fe618ab58a9d46fee90074386b5581d47b92c9 GIT binary patch literal 27167 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/cface.gif b/public/vendor/ueditor/dialogs/emotion/images/cface.gif new file mode 100644 index 0000000000000000000000000000000000000000..bff947f5216a49d8cd7fdd8d4e825808b3d14f6e GIT binary patch literal 8603 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/fface.gif b/public/vendor/ueditor/dialogs/emotion/images/fface.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d8a6afeb1cb2cc40c5d76f90630d8a9c1323ffe GIT binary patch literal 18479 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 Z1*(9jYzjdPQwkU=rV+{lAZZd106V&Waa;fZ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/jxface2.gif b/public/vendor/ueditor/dialogs/emotion/images/jxface2.gif new file mode 100644 index 0000000000000000000000000000000000000000..a959c90f7eb17adc455982b040244fd583eed888 GIT binary patch literal 40706 zcmW)ncRUr2_y6y{mwR!!cE-K-cFk<}+T+T#ciE#TBFV^Iwz5M>W=7Gq%Bt?QvWg@m z6;jcgB9!L+eZIf*IDeh?QIMUgJc1z$R8ZQ|Kfb_r_e{Z9w5lq*XQcc z9jVL6+Z7d@0e-Xx^soxJ!g&+_IKmeR_|x)cG)v5|>2%*>(b9OMU6b@q|En{{Mc>Fd zmAqBv=v4OHAng6n6B89pNx4*7QZPUF^6&SRMFNih3@mB5qAAnw?U?%>hx72^!5P}kmX;QMmWJ{1@n2Fw;g#Vtu4MMN(f#!H zXB|_tz)fkBO&l>)6C=DtUUmnTxRQsRw8{4rwUKskKS!E-V3Yyezf=Q#gm%1l#kzM{%aVio9lmP6|zV{ z1>aIGIoEb=%4a$p@b5!lSs=M}SM$_elk9Q7Pd`3|-f`NRs_Yo;XG}(LcK#b)n`mro zc=hFtX1?5;H*e0de0q9%6fTQ6HAO7|U>CR{?Y22qj_J`i2Al)bFf* z%b&fIpP%>d!Fx0s&A40oHE-%GXT_*Sd2V;IxFfr8y!=A<*=c$|4u|{jZRFn({oDOu z#lT}ad9r9O{_DX;*uC7&U-eFzj_4dp{K1_Vu`H_*4oEL+fHy*QC6WZWL|i`n(4p{rUnS@N2ks{X2mo*ZYX7H%|I-8j!2$f`lCWd0 zvV0`lMg5P?;n>>$E)UW-3x-P+LCQwaoA`QjV=E)8jn#r|i*#|G^Zs^wa2wvPaGw1i zRzZ`c|2z}bx~8PnFkb`9*h_IWC$h}5OD{c%@NR2JY+qGNn#aMVyArt$KLv>b&D^dC z3vE&?F;Kv^JG`a$R>JLKw!=nNx#hDQ&gj%jE?s+kXuubtR5(7Hy|`URc$!jY>Ab7MVNQ;8V&Gr&(FwV2RfwG{=fYoxhVN(QR05?( z?8A)q?$mD3!vWocD)5;OTjRS1;l}^2=+6ob{5j;a?pn!wg?HWzd!kWI6kJFR=CQJ( z{M;$N8pRux08KXfxhmodidzj3OFXzwrZ)?@JECT}KAut+&;2y(tZudegrgVgZV{Zf z>lQU~)i->v!UBS5Tn=TxsmuT7wM#6e&>kK{CsS%|;A`~*`b95+4NH_YZ^MTZc18)e zi9Pdro)uzofLn3h7ZOJCL2Q_!gH?ik#C7Du_n&U1{A-yr&sJ#NtjpJ5Zmx}-yY|VO zE)|MxkVJGi`dT%VTusmDbgzcbBp5oP(r64{F|QVWef%Q&>E}*h6I=nXsecH5%kzg^-JTi#qgd&_tt%giqOt#R5{gEGDy*K*`I}~d zM3FT!<=1Zsy}t_GF*E2?@%s>y_W>hfmu9U3bj|ijqU777R4(R{-Em*3NbUz?QvAA( zMg|#Nd0SfvtCkKPDmPDzdtFCc-kyn$O;+#1i`^qC+)ikOZ%qeB!v_#+2Jqj{Pn%ki z=_mbA1535K7FvKRPn03}*DM`VJ{XhqW2eVaT|8s*G|2)zfL41(l!yj+mr5gW>0`>^ z@!a#~_4siakxLdv-$&cytqZ}!2r#q}%2w<>O9)sBM4>DwJo-3!X~A)b@)4@)ZtN-G zA0Xh5Vh>Lu@GOXb2=-TT81LSSnpwg=;#?=Nd6b-dxwT)wT&@*izufVJ6a|U≶_= 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/neweditor-tab-bg.png b/public/vendor/ueditor/dialogs/emotion/images/neweditor-tab-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8f398b0958cdc5136a23b9745becc23a833aa325 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^96&72!3HGF`uUCmDVAa<&kznEsNqQI0P;BtJR*x3 z7^L@rFypT63w8qqANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/emotion/images/tface.gif b/public/vendor/ueditor/dialogs/emotion/images/tface.gif new file mode 100644 index 0000000000000000000000000000000000000000..1354f54b961211fb0253ccbd27a81da5dab5a639 GIT binary patch literal 19805 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
    Q#B)e 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℞!!p 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 Yl`jGz%R9~u(Lcw{+`;~ZL;$@14{R%g2><{9 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/gmap/gmap.html b/public/vendor/ueditor/dialogs/gmap/gmap.html new file mode 100644 index 0000000..c4cbfe6 --- /dev/null +++ b/public/vendor/ueditor/dialogs/gmap/gmap.html @@ -0,0 +1,89 @@ + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/help/help.css b/public/vendor/ueditor/dialogs/help/help.css new file mode 100644 index 0000000..4478475 --- /dev/null +++ b/public/vendor/ueditor/dialogs/help/help.css @@ -0,0 +1,7 @@ +.wrapper{width: 370px;margin: 10px auto;zoom: 1;} +.tabbody{height: 360px;} +.tabbody .panel{width:100%;height: 360px;position: absolute;background: #fff;} +.tabbody .panel h1{font-size:26px;margin: 5px 0 0 5px;} +.tabbody .panel p{font-size:12px;margin: 5px 0 0 5px;} +.tabbody table{width:90%;line-height: 20px;margin: 5px 0 0 5px;;} +.tabbody table thead{font-weight: bold;line-height: 25px;} \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/help/help.html b/public/vendor/ueditor/dialogs/help/help.html new file mode 100644 index 0000000..9e50060 --- /dev/null +++ b/public/vendor/ueditor/dialogs/help/help.html @@ -0,0 +1,82 @@ + + + + 帮助 + + + + + +
    +
    + + +
    +
    +
    +

    UEditor

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ctrl+b
    ctrl+c
    ctrl+x
    ctrl+v
    ctrl+y
    ctrl+z
    ctrl+i
    ctrl+u
    ctrl+a
    shift+enter
    alt+z
    +
    +
    +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/help/help.js b/public/vendor/ueditor/dialogs/help/help.js new file mode 100644 index 0000000..9a2272e --- /dev/null +++ b/public/vendor/ueditor/dialogs/help/help.js @@ -0,0 +1,56 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午1:06 + * To change this template use File | Settings | File Templates. + */ +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + body.onclick = function(){ + this.style.zoom = 1; + }; + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +switchTab("helptab"); + +document.getElementById('version').innerHTML = parent.UE.version; \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/image/image.css b/public/vendor/ueditor/dialogs/image/image.css new file mode 100644 index 0000000..52c2295 --- /dev/null +++ b/public/vendor/ueditor/dialogs/image/image.css @@ -0,0 +1,894 @@ +@charset "utf-8"; +/* dialog样式 */ +.wrapper { + zoom: 1; + width: 630px; + *width: 626px; + height: 380px; + margin: 0 auto; + padding: 10px; + position: relative; + font-family: sans-serif; +} + +/*tab样式框大小*/ +.tabhead { + float:left; +} +.tabbody { + width: 100%; + height: 346px; + position: relative; + clear: both; +} + +.tabbody .panel { + position: absolute; + width: 0; + height: 0; + background: #fff; + overflow: hidden; + display: none; +} + +.tabbody .panel.focus { + width: 100%; + height: 346px; + display: block; +} + +/* 图片对齐方式 */ +.alignBar{ + float:right; + margin-top: 5px; + position: relative; +} + +.alignBar .algnLabel{ + float:left; + height: 20px; + line-height: 20px; +} + +.alignBar #alignIcon{ + zoom:1; + _display: inline; + display: inline-block; + position: relative; +} +.alignBar #alignIcon span{ + float: left; + cursor: pointer; + display: block; + width: 19px; + height: 17px; + margin-right: 3px; + margin-left: 3px; + background-image: url(./images/alignicon.jpg); +} +.alignBar #alignIcon .none-align{ + background-position: 0 -18px; +} +.alignBar #alignIcon .left-align{ + background-position: -20px -18px; +} +.alignBar #alignIcon .right-align{ + background-position: -40px -18px; +} +.alignBar #alignIcon .center-align{ + background-position: -60px -18px; +} +.alignBar #alignIcon .none-align.focus{ + background-position: 0 0; +} +.alignBar #alignIcon .left-align.focus{ + background-position: -20px 0; +} +.alignBar #alignIcon .right-align.focus{ + background-position: -40px 0; +} +.alignBar #alignIcon .center-align.focus{ + background-position: -60px 0; +} + + + + +/* 远程图片样式 */ +#remote { + z-index: 200; +} + +#remote .top{ + width: 100%; + margin-top: 25px; +} +#remote .left{ + display: block; + float: left; + width: 300px; + height:10px; +} +#remote .right{ + display: block; + float: right; + width: 300px; + height:10px; +} +#remote .row{ + margin-left: 20px; + clear: both; + height: 40px; +} + +#remote .row label{ + text-align: center; + width: 50px; + zoom:1; + _display: inline; + display:inline-block; + vertical-align: middle; +} +#remote .row label.algnLabel{ + float: left; + +} + +#remote input.text{ + width: 150px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +#remote input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#remote #url{ + width: 500px; + margin-bottom: 2px; +} +#remote #width, +#remote #height{ + width: 20px; + margin-left: 2px; + margin-right: 2px; +} +#remote #border, +#remote #vhSpace, +#remote #title{ + width: 180px; + margin-right: 5px; +} +#remote #lock{ +} +#remote #lockicon{ + zoom: 1; + _display:inline; + display: inline-block; + width: 20px; + height: 20px; + background: url("../../themes/default/images/lock.gif") -13px -13px no-repeat; + vertical-align: middle; +} +#remote #preview{ + clear: both; + width: 260px; + height: 240px; + z-index: 9999; + margin-top: 10px; + background-color: #eee; + overflow: hidden; +} + +/* 上传图片 */ +.tabbody #upload.panel { + width: 0; + height: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + background: #fff; + display: block; +} + +.tabbody #upload.panel.focus { + width: 100%; + height: 346px; + display: block; + clip: auto; +} + +#upload .queueList { + margin: 0; + width: 100%; + height: 100%; + position: absolute; + overflow: hidden; +} + +#upload p { + margin: 0; +} + +.element-invisible { + width: 0 !important; + height: 0 !important; + border: 0; + padding: 0; + margin: 0; + overflow: hidden; + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); +} + +#upload .placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + *border: 0px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url(./images/image.png) center 70px no-repeat; + color: #cccccc; + font-size: 18px; + position: relative; + top:0; + *top: 10px; +} + +#upload .placeholder .webuploader-pick { + font-size: 18px; + background: #00b7ee; + border-radius: 3px; + line-height: 44px; + padding: 0 30px; + *width: 120px; + color: #fff; + display: inline-block; + margin: 0 auto 20px auto; + cursor: pointer; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} + +#upload .placeholder .webuploader-pick-hover { + background: #00a2d4; +} + + +#filePickerContainer { + text-align: center; +} + +#upload .placeholder .flashTip { + color: #666666; + font-size: 12px; + position: absolute; + width: 100%; + text-align: center; + bottom: 20px; +} + +#upload .placeholder .flashTip a { + color: #0785d1; + text-decoration: none; +} + +#upload .placeholder .flashTip a:hover { + text-decoration: underline; +} + +#upload .placeholder.webuploader-dnd-over { + border-color: #999999; +} + +#upload .filelist { + list-style: none; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; +} + +#upload .filelist:after { + content: ''; + display: block; + width: 0; + height: 0; + overflow: hidden; + clear: both; + position: relative; +} + +#upload .filelist li { + width: 113px; + height: 113px; + background: url(./images/bg.png); + text-align: center; + margin: 9px 0 0 9px; + *margin: 6px 0 0 6px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; +} + +#upload .filelist li p.log { + position: relative; + top: -45px; +} + +#upload .filelist li p.title { + position: absolute; + top: 0; + left: 0; + width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + top: 5px; + text-indent: 5px; + text-align: left; +} + +#upload .filelist li p.progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; +} + +#upload .filelist li p.progress span { + display: none; + overflow: hidden; + width: 0; + height: 100%; + background: #1483d8 url(./images/progress.png) repeat-x; + + -webit-transition: width 200ms linear; + -moz-transition: width 200ms linear; + -o-transition: width 200ms linear; + -ms-transition: width 200ms linear; + transition: width 200ms linear; + + -webkit-animation: progressmove 2s linear infinite; + -moz-animation: progressmove 2s linear infinite; + -o-animation: progressmove 2s linear infinite; + -ms-animation: progressmove 2s linear infinite; + animation: progressmove 2s linear infinite; + + -webkit-transform: translateZ(0); +} + +@-webkit-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@-moz-keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +@keyframes progressmove { + 0% { + background-position: 0 0; + } + 100% { + background-position: 17px 0; + } +} + +#upload .filelist li p.imgWrap { + position: relative; + z-index: 2; + line-height: 113px; + vertical-align: middle; + overflow: hidden; + width: 113px; + height: 113px; + + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + + -webit-transition: 200ms ease-out; + -moz-transition: 200ms ease-out; + -o-transition: 200ms ease-out; + -ms-transition: 200ms ease-out; + transition: 200ms ease-out; +} + +#upload .filelist li img { + width: 100%; +} + +#upload .filelist li p.error { + background: #f43838; + color: #fff; + position: absolute; + bottom: 0; + left: 0; + height: 28px; + line-height: 28px; + width: 100%; + z-index: 100; + display:none; +} + +#upload .filelist li .success { + display: block; + position: absolute; + left: 0; + bottom: 0; + height: 40px; + width: 100%; + z-index: 200; + background: url(./images/success.png) no-repeat right bottom; + background: url(./images/success.gif) no-repeat right bottom \9; +} + +#upload .filelist li.filePickerBlock { + width: 113px; + height: 113px; + background: url(./images/image.png) no-repeat center 12px; + border: 1px solid #eeeeee; + border-radius: 0; +} +#upload .filelist li.filePickerBlock div.webuploader-pick { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + opacity: 0; + background: none; + font-size: 0; +} + +#upload .filelist div.file-panel { + position: absolute; + height: 0; + filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0; + background: rgba(0, 0, 0, 0.5); + width: 100%; + top: 0; + left: 0; + overflow: hidden; + z-index: 300; +} + +#upload .filelist div.file-panel span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url(./images/icons.png) no-repeat; + background: url(./images/icons.gif) no-repeat \9; + margin: 5px 1px 1px; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +#upload .filelist div.file-panel span.rotateLeft { + display:none; + background-position: 0 -24px; +} + +#upload .filelist div.file-panel span.rotateLeft:hover { + background-position: 0 0; +} + +#upload .filelist div.file-panel span.rotateRight { + display:none; + background-position: -24px -24px; +} + +#upload .filelist div.file-panel span.rotateRight:hover { + background-position: -24px 0; +} + +#upload .filelist div.file-panel span.cancel { + background-position: -48px -24px; +} + +#upload .filelist div.file-panel span.cancel:hover { + background-position: -48px 0; +} + +#upload .statusBar { + height: 45px; + border-bottom: 1px solid #dadada; + margin: 0 10px; + padding: 0; + line-height: 45px; + vertical-align: middle; + position: relative; +} + +#upload .statusBar .progress { + border: 1px solid #1483d8; + width: 198px; + background: #fff; + height: 18px; + position: absolute; + top: 12px; + display: none; + text-align: center; + line-height: 18px; + color: #6dbfff; + margin: 0 10px 0 0; +} +#upload .statusBar .progress span.percentage { + width: 0; + height: 100%; + left: 0; + top: 0; + background: #1483d8; + position: absolute; +} +#upload .statusBar .progress span.text { + position: relative; + z-index: 10; +} + +#upload .statusBar .info { + display: inline-block; + font-size: 14px; + color: #666666; +} + +#upload .statusBar .btns { + position: absolute; + top: 7px; + right: 0; + line-height: 30px; +} + +#filePickerBtn { + display: inline-block; + float: left; +} +#upload .statusBar .btns .webuploader-pick, +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-uploading, +#upload .statusBar .btns .uploadBtn.state-paused { + background: #ffffff; + border: 1px solid #cfcfcf; + color: #565656; + padding: 0 18px; + display: inline-block; + border-radius: 3px; + margin-left: 10px; + cursor: pointer; + font-size: 14px; + float: left; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +#upload .statusBar .btns .webuploader-pick-hover, +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-uploading:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover { + background: #f0f0f0; +} + +#upload .statusBar .btns .uploadBtn, +#upload .statusBar .btns .uploadBtn.state-paused{ + background: #00b7ee; + color: #fff; + border-color: transparent; +} +#upload .statusBar .btns .uploadBtn:hover, +#upload .statusBar .btns .uploadBtn.state-paused:hover{ + background: #00a2d4; +} + +#upload .statusBar .btns .uploadBtn.disabled { + pointer-events: none; + filter:alpha(opacity=60); + -moz-opacity:0.6; + -khtml-opacity: 0.6; + opacity: 0.6; +} + + + +/* 图片管理样式 */ +#online { + width: 100%; + height: 336px; + padding: 10px 0 0 0; +} +#online #imageList{ + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; +} +#online ul { + display: block; + list-style: none; + margin: 0; + padding: 0; +} +#online li { + float: left; + display: block; + list-style: none; + padding: 0; + width: 113px; + height: 113px; + margin: 0 0 9px 9px; + *margin: 0 0 6px 6px; + background-color: #eee; + overflow: hidden; + cursor: pointer; + position: relative; +} +#online li.clearFloat { + float: none; + clear: both; + display: block; + width:0; + height:0; + margin: 0; + padding: 0; +} +#online li img { + cursor: pointer; +} +#online li .icon { + cursor: pointer; + width: 113px; + height: 113px; + position: absolute; + top: 0; + left: 0; + z-index: 2; + border: 0; + background-repeat: no-repeat; +} +#online li .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; +} +#online li.selected .icon { + background-image: url(images/success.png); + background-image: url(images/success.gif)\9; + background-position: 75px 75px; +} +#online li.selected .icon:hover { + width: 107px; + height: 107px; + border: 3px solid #1094fa; + background-position: 72px 72px; +} + + +/* 图片搜索样式 */ +#search .searchBar { + width: 100%; + height: 30px; + margin: 10px 0 5px 0; + padding: 0; +} + +#search input.text{ + width: 150px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +#search input.text:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} +#search input.searchTxt { + margin-left:5px; + padding-left: 5px; + background: #FFF; + width: 300px; + *width: 260px; + height: 21px; + line-height: 21px; + float: left; + dislay: block; +} + +#search .searchType { + width: 65px; + height: 28px; + padding:0; + line-height: 28px; + border: 1px solid #d7d7d7; + border-radius: 0; + vertical-align: top; + margin-left: 5px; + float: left; + dislay: block; +} + +#search #searchBtn, +#search #searchReset { + display: inline-block; + margin-bottom: 0; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + vertical-align: middle; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: top; + float: right; +} + +#search #searchBtn { + color: white; + border-color: #285e8e; + background-color: #3b97d7; +} +#search #searchReset { + color: #333; + border-color: #ccc; + background-color: #fff; +} +#search #searchBtn:hover { + background-color: #3276b1; +} +#search #searchReset:hover { + background-color: #eee; +} + +#search .msg { + margin-left: 5px; +} + +#search .searchList{ + width: 100%; + height: 300px; + overflow: hidden; + clear: both; +} +#search .searchList ul{ + margin:0; + padding:0; + list-style:none; + clear: both; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + zoom: 1; + position: relative; +} + +#search .searchList li { + list-style:none; + float: left; + display: block; + width: 115px; + margin: 5px 10px 5px 20px; + *margin: 5px 10px 5px 15px; + padding:0; + font-size: 12px; + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + position: relative; + vertical-align: top; + text-align: center; + overflow: hidden; + cursor: pointer; + filter: alpha(Opacity=100); + -moz-opacity: 1; + opacity: 1; + border: 2px solid #eee; +} + +#search .searchList li.selected { + filter: alpha(Opacity=40); + -moz-opacity: 0.4; + opacity: 0.4; + border: 2px solid #00a0e9; +} + +#search .searchList li p { + background-color: #eee; + margin: 0; + padding: 0; + position: relative; + width:100%; + height:115px; + overflow: hidden; +} + +#search .searchList li p img { + cursor: pointer; + border: 0; +} + +#search .searchList li a { + color: #999; + border-top: 1px solid #F2F2F2; + background: #FAFAFA; + text-align: center; + display: block; + padding: 0 5px; + width: 105px; + height:32px; + line-height:32px; + white-space:nowrap; + text-overflow:ellipsis; + text-decoration: none; + overflow: hidden; + word-break: break-all; +} + +#search .searchList a:hover { + text-decoration: underline; + color: #333; +} +#search .searchList .clearFloat{ + clear: both; +} \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/image/image.html b/public/vendor/ueditor/dialogs/image/image.html new file mode 100644 index 0000000..08ca022 --- /dev/null +++ b/public/vendor/ueditor/dialogs/image/image.html @@ -0,0 +1,120 @@ + + + + + ueditor图片对话框 + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    + + +
    +
    +
    +
    + +   px +   px + +
    +
    + + px +
    +
    + + px +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + 0% + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • +
    +
    +
    + + +
    +
    +
    + + + + +
    +
    + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/image/image.js b/public/vendor/ueditor/dialogs/image/image.js new file mode 100644 index 0000000..c4f52aa --- /dev/null +++ b/public/vendor/ueditor/dialogs/image/image.js @@ -0,0 +1,1139 @@ +/** + * User: Jinqn + * Date: 14-04-08 + * Time: 下午16:34 + * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片 + */ + +(function () { + + var remoteImage, + uploadImage, + onlineImage, + searchImage; + + window.onload = function () { + initTabs(); + initAlign(); + initButtons(); + }; + + /* 初始化tab标签 */ + function initTabs() { + var tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + domUtils.on(tabs[i], "click", function (e) { + var target = e.target || e.srcElement; + setTabFocus(target.getAttribute('data-content-id')); + }); + } + + var img = editor.selection.getRange().getClosedNode(); + if (img && img.tagName && img.tagName.toLowerCase() == 'img') { + setTabFocus('remote'); + } else { + setTabFocus('upload'); + } + } + + /* 初始化tabbody */ + function setTabFocus(id) { + if(!id) return; + var i, bodyId, tabs = $G('tabhead').children; + for (i = 0; i < tabs.length; i++) { + bodyId = tabs[i].getAttribute('data-content-id'); + if (bodyId == id) { + domUtils.addClass(tabs[i], 'focus'); + domUtils.addClass($G(bodyId), 'focus'); + } else { + domUtils.removeClasses(tabs[i], 'focus'); + domUtils.removeClasses($G(bodyId), 'focus'); + } + } + switch (id) { + case 'remote': + remoteImage = remoteImage || new RemoteImage(); + break; + case 'upload': + setAlign(editor.getOpt('imageInsertAlign')); + uploadImage = uploadImage || new UploadImage('queueList'); + break; + case 'online': + setAlign(editor.getOpt('imageManagerInsertAlign')); + onlineImage = onlineImage || new OnlineImage('imageList'); + onlineImage.reset(); + break; + case 'search': + setAlign(editor.getOpt('imageManagerInsertAlign')); + searchImage = searchImage || new SearchImage(); + break; + } + } + + /* 初始化onok事件 */ + function initButtons() { + + dialog.onok = function () { + var remote = false, list = [], id, tabs = $G('tabhead').children; + for (var i = 0; i < tabs.length; i++) { + if (domUtils.hasClass(tabs[i], 'focus')) { + id = tabs[i].getAttribute('data-content-id'); + break; + } + } + + switch (id) { + case 'remote': + list = remoteImage.getInsertList(); + break; + case 'upload': + list = uploadImage.getInsertList(); + var count = uploadImage.getQueueCount(); + if (count) { + $('.info', '#queueList').html('' + '还有2个未上传文件'.replace(/[\d]/, count) + ''); + return false; + } + break; + case 'online': + list = onlineImage.getInsertList(); + break; + case 'search': + list = searchImage.getInsertList(); + remote = true; + break; + } + + if(list) { + editor.execCommand('insertimage', list); + remote && editor.fireEvent("catchRemoteImage"); + } + }; + } + + + /* 初始化对其方式的点击事件 */ + function initAlign(){ + /* 点击align图标 */ + domUtils.on($G("alignIcon"), 'click', function(e){ + var target = e.target || e.srcElement; + if(target.className && target.className.indexOf('-align') != -1) { + setAlign(target.getAttribute('data-align')); + } + }); + } + + /* 设置对齐方式 */ + function setAlign(align){ + align = align || 'none'; + var aligns = $G("alignIcon").children; + for(i = 0; i < aligns.length; i++){ + if(aligns[i].getAttribute('data-align') == align) { + domUtils.addClass(aligns[i], 'focus'); + $G("align").value = aligns[i].getAttribute('data-align'); + } else { + domUtils.removeClasses(aligns[i], 'focus'); + } + } + } + /* 获取对齐方式 */ + function getAlign(){ + var align = $G("align").value || 'none'; + return align == 'none' ? '':align; + } + + + /* 在线图片 */ + function RemoteImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + RemoteImage.prototype = { + init: function () { + this.initContainer(); + this.initEvents(); + }, + initContainer: function () { + this.dom = { + 'url': $G('url'), + 'width': $G('width'), + 'height': $G('height'), + 'border': $G('border'), + 'vhSpace': $G('vhSpace'), + 'title': $G('title'), + 'align': $G('align') + }; + var img = editor.selection.getRange().getClosedNode(); + if (img) { + this.setImage(img); + } + }, + initEvents: function () { + var _this = this, + locker = $G('lock'); + + /* 改变url */ + domUtils.on($G("url"), 'keyup', updatePreview); + domUtils.on($G("border"), 'keyup', updatePreview); + domUtils.on($G("title"), 'keyup', updatePreview); + + domUtils.on($G("width"), 'keyup', function(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('height').value = Math.round(this.value / proportion); + } else { + _this.updateLocker(); + } + }); + domUtils.on($G("height"), 'keyup', function(){ + updatePreview(); + if(locker.checked) { + var proportion =locker.getAttribute('data-proportion'); + $G('width').value = Math.round(this.value * proportion); + } else { + _this.updateLocker(); + } + }); + domUtils.on($G("lock"), 'change', function(){ + var proportion = parseInt($G("width").value) /parseInt($G("height").value); + locker.setAttribute('data-proportion', proportion); + }); + + function updatePreview(){ + _this.setPreview(); + } + }, + updateLocker: function(){ + var width = $G('width').value, + height = $G('height').value, + locker = $G('lock'); + if(width && height && width == parseInt(width) && height == parseInt(height)) { + locker.disabled = false; + locker.title = ''; + } else { + locker.checked = false; + locker.disabled = 'disabled'; + locker.title = lang.remoteLockError; + } + }, + setImage: function(img){ + /* 不是正常的图片 */ + if (!img.tagName || img.tagName.toLowerCase() != 'img' && !img.getAttribute("src") || !img.src) return; + + var wordImgFlag = img.getAttribute("word_img"), + src = wordImgFlag ? wordImgFlag.replace("&", "&") : (img.getAttribute('_src') || img.getAttribute("src", 2).replace("&", "&")), + align = editor.queryCommandValue("imageFloat"); + + /* 防止onchange事件循环调用 */ + if (src !== $G("url").value) $G("url").value = src; + if(src) { + /* 设置表单内容 */ + $G("width").value = img.width || ''; + $G("height").value = img.height || ''; + $G("border").value = img.getAttribute("border") || '0'; + $G("vhSpace").value = img.getAttribute("vspace") || '0'; + $G("title").value = img.title || img.alt || ''; + setAlign(align); + this.setPreview(); + this.updateLocker(); + } + }, + getData: function(){ + var data = {}; + for(var k in this.dom){ + data[k] = this.dom[k].value; + } + return data; + }, + setPreview: function(){ + var url = $G('url').value, + ow = $G('width').value, + oh = $G('height').value, + border = $G('border').value, + title = $G('title').value, + preview = $G('preview'), + width, + height; + + width = ((!ow || !oh) ? preview.offsetWidth:Math.min(ow, preview.offsetWidth)); + width = width+(border*2) > preview.offsetWidth ? width:(preview.offsetWidth - (border*2)); + height = (!ow || !oh) ? '':width*oh/ow; + + if(url) { + preview.innerHTML = ''; + } + }, + getInsertList: function () { + var data = this.getData(); + if(data['url']) { + return [{ + src: data['url'], + _src: data['url'], + width: data['width'] || '', + height: data['height'] || '', + border: data['border'] || '', + floatStyle: data['align'] || '', + vspace: data['vhSpace'] || '', + title: data['title'] || '', + alt: data['title'] || '', + style: "width:" + data['width'] + "px;height:" + data['height'] + "px;" + }]; + } else { + return []; + } + } + }; + + + + /* 上传图片 */ + function UploadImage(target) { + this.$wrap = target.constructor == String ? $('#' + target) : $(target); + this.init(); + } + UploadImage.prototype = { + init: function () { + this.imageList = []; + this.initContainer(); + this.initUploader(); + }, + initContainer: function () { + this.$queue = this.$wrap.find('.filelist'); + }, + /* 初始化容器 */ + initUploader: function () { + var _this = this, + $ = jQuery, // just in case. Make sure it's not an other libaray. + $wrap = _this.$wrap, + // 图片容器 + $queue = $wrap.find('.filelist'), + // 状态栏,包括进度和控制按钮 + $statusBar = $wrap.find('.statusBar'), + // 文件总体选择信息。 + $info = $statusBar.find('.info'), + // 上传按钮 + $upload = $wrap.find('.uploadBtn'), + // 上传按钮 + $filePickerBtn = $wrap.find('.filePickerBtn'), + // 上传按钮 + $filePickerBlock = $wrap.find('.filePickerBlock'), + // 没选择文件之前的内容。 + $placeHolder = $wrap.find('.placeholder'), + // 总体进度条 + $progress = $statusBar.find('.progress').hide(), + // 添加的文件数量 + fileCount = 0, + // 添加的文件总大小 + fileSize = 0, + // 优化retina, 在retina下这个值是2 + ratio = window.devicePixelRatio || 1, + // 缩略图大小 + thumbnailWidth = 113 * ratio, + thumbnailHeight = 113 * ratio, + // 可能有pedding, ready, uploading, confirm, done. + state = '', + // 所有文件的进度信息,key为file id + percentages = {}, + supportTransition = (function () { + var s = document.createElement('p').style, + r = 'transition' in s || + 'WebkitTransition' in s || + 'MozTransition' in s || + 'msTransition' in s || + 'OTransition' in s; + s = null; + return r; + })(), + // WebUploader实例 + uploader, + actionUrl = editor.getActionUrl(editor.getOpt('imageActionName')), + acceptExtensions = (editor.getOpt('imageAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, ''), + imageMaxSize = editor.getOpt('imageMaxSize'), + imageCompressBorder = editor.getOpt('imageCompressBorder'); + + if (!WebUploader.Uploader.support()) { + $('#filePickerReady').after($('
    ' + + '
    ').html(lang.errorNotSupport)).hide(); + return; + } else if (!editor.getOpt('imageActionName')) { + $('#filePickerReady').after($('
    ').html(lang.errorLoadConfig)).hide(); + return; + } + + uploader = _this.uploader = WebUploader.create({ + pick: { + id: '#filePickerReady', + label: lang.uploadSelectFile + }, + accept: { + title: 'Images', + extensions: acceptExtensions, + mimeTypes: 'image/*' + }, + swf: '../../third-party/webuploader/Uploader.swf', + server: actionUrl, + fileVal: editor.getOpt('imageFieldName'), + duplicate: true, + fileSingleSizeLimit: imageMaxSize, // 默认 2 M + compress: editor.getOpt('imageCompressEnable') ? { + width: imageCompressBorder, + height: imageCompressBorder, + // 图片质量,只有type为`image/jpeg`的时候才有效。 + quality: 90, + // 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false. + allowMagnify: false, + // 是否允许裁剪。 + crop: false, + // 是否保留头部meta信息。 + preserveHeaders: true + }:false + }); + uploader.addButton({ + id: '#filePickerBlock' + }); + uploader.addButton({ + id: '#filePickerBtn', + label: lang.uploadAddFile + }); + + setState('pedding'); + + // 当有文件添加进来时执行,负责view的创建 + function addFile(file) { + var $li = $('
  • ' + + '

    ' + file.name + '

    ' + + '

    ' + + '

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

    ').hide().appendTo($li), + + showError = function (code) { + switch (code) { + case 'exceed_size': + text = lang.errorExceedSize; + break; + case 'interrupt': + text = lang.errorInterrupt; + break; + case 'http': + text = lang.errorHttp; + break; + case 'not_allow_type': + text = lang.errorFileType; + break; + default: + text = lang.errorUploadRetry; + break; + } + $info.text(text).show(); + }; + + if (file.getStatus() === 'invalid') { + showError(file.statusText); + } else { + $wrap.text(lang.uploadPreview); + if (browser.ie && browser.version <= 7) { + $wrap.text(lang.uploadNoPreview); + } else { + uploader.makeThumb(file, function (error, src) { + if (error || !src) { + $wrap.text(lang.uploadNoPreview); + } else { + var $img = $(''); + $wrap.empty().append($img); + $img.on('error', function () { + $wrap.text(lang.uploadNoPreview); + }); + } + }, thumbnailWidth, thumbnailHeight); + } + percentages[ file.id ] = [ file.size, 0 ]; + file.rotation = 0; + + /* 检查文件格式 */ + if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) { + showError('not_allow_type'); + uploader.removeFile(file); + } + } + + file.on('statuschange', function (cur, prev) { + if (prev === 'progress') { + $prgress.hide().width(0); + } else if (prev === 'queued') { + $li.off('mouseenter mouseleave'); + $btns.remove(); + } + // 成功 + if (cur === 'error' || cur === 'invalid') { + showError(file.statusText); + percentages[ file.id ][ 1 ] = 1; + } else if (cur === 'interrupt') { + showError('interrupt'); + } else if (cur === 'queued') { + percentages[ file.id ][ 1 ] = 0; + } else if (cur === 'progress') { + $info.hide(); + $prgress.css('display', 'block'); + } else if (cur === 'complete') { + } + + $li.removeClass('state-' + prev).addClass('state-' + cur); + }); + + $li.on('mouseenter', function () { + $btns.stop().animate({height: 30}); + }); + $li.on('mouseleave', function () { + $btns.stop().animate({height: 0}); + }); + + $btns.on('click', 'span', function () { + var index = $(this).index(), + deg; + + switch (index) { + case 0: + uploader.removeFile(file); + return; + case 1: + file.rotation += 90; + break; + case 2: + file.rotation -= 90; + break; + } + + if (supportTransition) { + deg = 'rotate(' + file.rotation + 'deg)'; + $wrap.css({ + '-webkit-transform': deg, + '-mos-transform': deg, + '-o-transform': deg, + 'transform': deg + }); + } else { + $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')'); + } + + }); + + $li.insertBefore($filePickerBlock); + } + + // 负责view的销毁 + function removeFile(file) { + var $li = $('#' + file.id); + delete percentages[ file.id ]; + updateTotalProgress(); + $li.off().find('.file-panel').off().end().remove(); + } + + function updateTotalProgress() { + var loaded = 0, + total = 0, + spans = $progress.children(), + percent; + + $.each(percentages, function (k, v) { + total += v[ 0 ]; + loaded += v[ 0 ] * v[ 1 ]; + }); + + percent = total ? loaded / total : 0; + + spans.eq(0).text(Math.round(percent * 100) + '%'); + spans.eq(1).css('width', Math.round(percent * 100) + '%'); + updateStatus(); + } + + function setState(val, files) { + + if (val != state) { + + var stats = uploader.getStats(); + + $upload.removeClass('state-' + state); + $upload.addClass('state-' + val); + + switch (val) { + + /* 未选择文件 */ + case 'pedding': + $queue.addClass('element-invisible'); + $statusBar.addClass('element-invisible'); + $placeHolder.removeClass('element-invisible'); + $progress.hide(); $info.hide(); + uploader.refresh(); + break; + + /* 可以开始上传 */ + case 'ready': + $placeHolder.addClass('element-invisible'); + $queue.removeClass('element-invisible'); + $statusBar.removeClass('element-invisible'); + $progress.hide(); $info.show(); + $upload.text(lang.uploadStart); + uploader.refresh(); + break; + + /* 上传中 */ + case 'uploading': + $progress.show(); $info.hide(); + $upload.text(lang.uploadPause); + break; + + /* 暂停上传 */ + case 'paused': + $progress.show(); $info.hide(); + $upload.text(lang.uploadContinue); + break; + + case 'confirm': + $progress.show(); $info.hide(); + $upload.text(lang.uploadStart); + + stats = uploader.getStats(); + if (stats.successNum && !stats.uploadFailNum) { + setState('finish'); + return; + } + break; + + case 'finish': + $progress.hide(); $info.show(); + if (stats.uploadFailNum) { + $upload.text(lang.uploadRetry); + } else { + $upload.text(lang.uploadStart); + } + break; + } + + state = val; + updateStatus(); + + } + + if (!_this.getQueueCount()) { + $upload.addClass('disabled') + } else { + $upload.removeClass('disabled') + } + + } + + function updateStatus() { + var text = '', stats; + + if (state === 'ready') { + text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize)); + } else if (state === 'confirm') { + stats = uploader.getStats(); + if (stats.uploadFailNum) { + text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum); + } + } else { + stats = uploader.getStats(); + text = lang.updateStatusFinish.replace('_', fileCount). + replace('_KB', WebUploader.formatSize(fileSize)). + replace('_', stats.successNum); + + if (stats.uploadFailNum) { + text += lang.updateStatusError.replace('_', stats.uploadFailNum); + } + } + + $info.html(text); + } + + uploader.on('fileQueued', function (file) { + fileCount++; + fileSize += file.size; + + if (fileCount === 1) { + $placeHolder.addClass('element-invisible'); + $statusBar.show(); + } + + addFile(file); + }); + + uploader.on('fileDequeued', function (file) { + fileCount--; + fileSize -= file.size; + + removeFile(file); + updateTotalProgress(); + }); + + uploader.on('filesQueued', function (file) { + if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) { + setState('ready'); + } + updateTotalProgress(); + }); + + uploader.on('all', function (type, files) { + switch (type) { + case 'uploadFinished': + setState('confirm', files); + break; + case 'startUpload': + /* 添加额外的GET参数 */ + var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params); + uploader.option('server', url); + setState('uploading', files); + break; + case 'stopUpload': + setState('paused', files); + break; + } + }); + + uploader.on('uploadBeforeSend', function (file, data, header) { + //这里可以通过data对象添加POST参数 + header['X_Requested_With'] = 'XMLHttpRequest'; + }); + + uploader.on('uploadProgress', function (file, percentage) { + var $li = $('#' + file.id), + $percent = $li.find('.progress span'); + + $percent.css('width', percentage * 100 + '%'); + percentages[ file.id ][ 1 ] = percentage; + updateTotalProgress(); + }); + + uploader.on('uploadSuccess', function (file, ret) { + var $file = $('#' + file.id); + try { + var responseText = (ret._raw || ret), + json = utils.str2json(responseText); + if (json.state == 'SUCCESS') { + _this.imageList.push(json); + $file.append(''); + } else { + $file.find('.error').text(json.state).show(); + } + } catch (e) { + $file.find('.error').text(lang.errorServerUpload).show(); + } + }); + + uploader.on('uploadError', function (file, code) { + }); + uploader.on('error', function (code, file) { + if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') { + addFile(file); + } + }); + uploader.on('uploadComplete', function (file, ret) { + }); + + $upload.on('click', function () { + if ($(this).hasClass('disabled')) { + return false; + } + + if (state === 'ready') { + uploader.upload(); + } else if (state === 'paused') { + uploader.upload(); + } else if (state === 'uploading') { + uploader.stop(); + } + }); + + $upload.addClass('state-' + state); + updateTotalProgress(); + }, + getQueueCount: function () { + var file, i, status, readyFile = 0, files = this.uploader.getFiles(); + for (i = 0; file = files[i++]; ) { + status = file.getStatus(); + if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++; + } + return readyFile; + }, + destroy: function () { + this.$wrap.remove(); + }, + getInsertList: function () { + var i, data, list = [], + align = getAlign(), + prefix = editor.getOpt('imageUrlPrefix'); + for (i = 0; i < this.imageList.length; i++) { + data = this.imageList[i]; + list.push({ + src: prefix + data.url, + _src: prefix + data.url, + title: data.title, + alt: data.original, + floatStyle: align + }); + } + return list; + } + }; + + + /* 在线图片 */ + function OnlineImage(target) { + this.container = utils.isString(target) ? document.getElementById(target) : target; + this.init(); + } + OnlineImage.prototype = { + init: function () { + this.reset(); + this.initEvents(); + }, + /* 初始化容器 */ + initContainer: function () { + this.container.innerHTML = ''; + this.list = document.createElement('ul'); + this.clearFloat = document.createElement('li'); + + domUtils.addClass(this.list, 'list'); + domUtils.addClass(this.clearFloat, 'clearFloat'); + + this.list.appendChild(this.clearFloat); + this.container.appendChild(this.list); + }, + /* 初始化滚动事件,滚动到地步自动拉取数据 */ + initEvents: function () { + var _this = this; + + /* 滚动拉取图片 */ + domUtils.on($G('imageList'), 'scroll', function(e){ + var panel = this; + if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) { + _this.getImageData(); + } + }); + /* 选中图片 */ + domUtils.on(this.container, 'click', function (e) { + var target = e.target || e.srcElement, + li = target.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + /* 初始化第一次的数据 */ + initData: function () { + + /* 拉取数据需要使用的值 */ + this.state = 0; + this.listSize = editor.getOpt('imageManagerListSize'); + this.listIndex = 0; + this.listEnd = false; + + /* 第一次拉取数据 */ + this.getImageData(); + }, + /* 重置界面 */ + reset: function() { + this.initContainer(); + this.initData(); + }, + /* 向后台拉取图片列表数据 */ + getImageData: function () { + var _this = this; + + if(!_this.listEnd && !this.isLoadingData) { + this.isLoadingData = true; + var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')), + isJsonp = utils.isCrossDomainUrl(url); + ajax.request(url, { + 'timeout': 100000, + 'dataType': isJsonp ? 'jsonp':'', + 'data': utils.extend({ + start: this.listIndex, + size: this.listSize + }, editor.queryCommandValue('serverparam')), + 'method': 'get', + 'onsuccess': function (r) { + try { + var json = isJsonp ? r:eval('(' + r.responseText + ')'); + if (json.state == 'SUCCESS') { + _this.pushData(json.list); + _this.listIndex = parseInt(json.start) + parseInt(json.list.length); + if(_this.listIndex >= json.total) { + _this.listEnd = true; + } + _this.isLoadingData = false; + } + } catch (e) { + if(r.responseText.indexOf('ue_separate_ue') != -1) { + var list = r.responseText.split(r.responseText); + _this.pushData(list); + _this.listIndex = parseInt(list.length); + _this.listEnd = true; + _this.isLoadingData = false; + } + } + }, + 'onerror': function () { + _this.isLoadingData = false; + } + }); + } + }, + /* 添加图片到列表界面上 */ + pushData: function (list) { + var i, item, img, icon, _this = this, + urlPrefix = editor.getOpt('imageManagerUrlPrefix'); + for (i = 0; i < list.length; i++) { + if(list[i] && list[i].url) { + item = document.createElement('li'); + img = document.createElement('img'); + icon = document.createElement('span'); + + domUtils.on(img, 'load', (function(image){ + return function(){ + _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight); + } + })(img)); + img.width = 113; + img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) ); + img.setAttribute('_src', urlPrefix + list[i].url); + domUtils.addClass(icon, 'icon'); + + item.appendChild(img); + item.appendChild(icon); + this.list.insertBefore(item, this.clearFloat); + } + } + }, + /* 改变图片大小 */ + scale: function (img, w, h, type) { + var ow = img.width, + oh = img.height; + + if (type == 'justify') { + if (ow >= oh) { + img.width = w; + img.height = h * oh / ow; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w * ow / oh; + img.height = h; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } else { + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + } + }, + getInsertList: function () { + var i, lis = this.list.children, list = [], align = getAlign(); + for (i = 0; i < lis.length; i++) { + if (domUtils.hasClass(lis[i], 'selected')) { + var img = lis[i].firstChild, + src = img.getAttribute('_src'); + list.push({ + src: src, + _src: src, + alt: src.substr(src.lastIndexOf('/') + 1), + floatStyle: align + }); + } + + } + return list; + } + }; + + /*搜索图片 */ + function SearchImage() { + this.init(); + } + SearchImage.prototype = { + init: function () { + this.initEvents(); + }, + initEvents: function(){ + var _this = this; + + /* 点击搜索按钮 */ + domUtils.on($G('searchBtn'), 'click', function(){ + var key = $G('searchTxt').value; + if(key && key != lang.searchRemind) { + _this.getImageData(); + } + }); + /* 点击清除妞 */ + domUtils.on($G('searchReset'), 'click', function(){ + $G('searchTxt').value = lang.searchRemind; + $G('searchListUl').innerHTML = ''; + $G('searchType').selectedIndex = 0; + }); + /* 搜索框聚焦 */ + domUtils.on($G('searchTxt'), 'focus', function(){ + var key = $G('searchTxt').value; + if(key && key == lang.searchRemind) { + $G('searchTxt').value = ''; + } + }); + /* 搜索框回车键搜索 */ + domUtils.on($G('searchTxt'), 'keydown', function(e){ + var keyCode = e.keyCode || e.which; + if (keyCode == 13) { + $G('searchBtn').click(); + } + }); + + /* 选中图片 */ + domUtils.on($G('searchList'), 'click', function(e){ + var target = e.target || e.srcElement, + li = target.parentNode.parentNode; + + if (li.tagName.toLowerCase() == 'li') { + if (domUtils.hasClass(li, 'selected')) { + domUtils.removeClasses(li, 'selected'); + } else { + domUtils.addClass(li, 'selected'); + } + } + }); + }, + encodeToGb2312:function (str){ + if(!str) return ''; + var strOut = "", + z = 'D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9'; + + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i), + code = str.charCodeAt(i); + if (c == " ") strOut += "+"; + else if (code >= 19968 && code <= 40869) { + var index = code - 19968; + strOut += "%" + z.substr(index * 4, 2) + "%" + z.substr(index * 4 + 2, 2); + } else { + strOut += "%" + str.charCodeAt(i).toString(16); + } + } + return strOut; + }, + /* 改变图片大小 */ + scale: function (img, w, h) { + var ow = img.width, + oh = img.height; + + if (ow >= oh) { + img.width = w * ow / oh; + img.height = h; + img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px'; + } else { + img.width = w; + img.height = h * oh / ow; + img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px'; + } + }, + getImageData: function(){ + var _this = this, + key = $G('searchTxt').value, + type = $G('searchType').value, + keepOriginName = editor.options.keepOriginName ? "1" : "0", + url = "http://image.baidu.com/i?ct=201326592&cl=2&lm=-1&st=-1&tn=baiduimagejson&istype=2&rn=32&fm=index&pv=&word=" + _this.encodeToGb2312(key) + type + "&keeporiginname=" + keepOriginName + "&" + +new Date; + + $G('searchListUl').innerHTML = lang.searchLoading; + ajax.request(url, { + 'dataType': 'jsonp', + 'charset': 'GB18030', + 'onsuccess':function(json){ + var list = []; + if(json && json.data) { + for(var i = 0; i < json.data.length; i++) { + if(json.data[i].objURL) { + list.push({ + title: json.data[i].fromPageTitleEnc, + src: json.data[i].objURL, + url: json.data[i].fromURL + }); + } + } + } + _this.setList(list); + }, + 'onerror':function(){ + $G('searchListUl').innerHTML = lang.searchRetry; + } + }); + }, + /* 添加图片到列表界面上 */ + setList: function (list) { + var i, item, p, img, link, _this = this, + listUl = $G('searchListUl'); + + listUl.innerHTML = ''; + if(list.length) { + for (i = 0; i < list.length; i++) { + item = document.createElement('li'); + p = document.createElement('p'); + img = document.createElement('img'); + link = document.createElement('a'); + + img.onload = function () { + _this.scale(this, 113, 113); + }; + img.width = 113; + img.setAttribute('src', list[i].src); + + link.href = list[i].url; + link.target = '_blank'; + link.title = list[i].title; + link.innerHTML = list[i].title; + + p.appendChild(img); + item.appendChild(p); + item.appendChild(link); + listUl.appendChild(item); + } + } else { + listUl.innerHTML = lang.searchRetry; + } + }, + getInsertList: function () { + var child, + src, + align = getAlign(), + list = [], + items = $G('searchListUl').children; + for(var i = 0; i < items.length; i++) { + child = items[i].firstChild && items[i].firstChild.firstChild; + if(child.tagName && child.tagName.toLowerCase() == 'img' && domUtils.hasClass(items[i], 'selected')) { + src = child.src; + list.push({ + src: src, + _src: src, + alt: src.substr(src.lastIndexOf('/') + 1), + floatStyle: align + }); + } + } + return list; + } + }; + +})(); diff --git a/public/vendor/ueditor/dialogs/image/images/alignicon.jpg b/public/vendor/ueditor/dialogs/image/images/alignicon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..754755b1b6e2b37d6090f68b80e91867fdcf1042 GIT binary patch literal 16101 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/image/images/bg.png b/public/vendor/ueditor/dialogs/image/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/image/images/icons.png b/public/vendor/ueditor/dialogs/image/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..12e4700163ac87fa38ae3d92a2c39d0fb4690fed GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/image/images/progress.png b/public/vendor/ueditor/dialogs/image/images/progress.png new file mode 100644 index 0000000000000000000000000000000000000000..717c4865c90a959c6a0e9ad1af9c777d900a2e9c GIT binary patch literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^f8U}fi7AzZCsS=07??9MLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}t-3#_`hBq$Z(46Le)Ln;eW^@CE2 z^Gl18f$@>14ATq@JNy=b6armi>cVAJd5X6R;MWawh(V&G(G=xXffXz1o@ zX=ZL{;B08&Z0-!x>zP+vl9-pA3bQv8XfIT+GhV$`&PAz-CHX}m`T04p6cCV+Uy@&( zkzb(T9Bihb;hUJ8nFkWk1Vs?Uzb>gonPsUdZbkXI3g8g7%EaOV0~10%hv-cqC)D(T zj?o7t52WM*69T3|5EGvGfgE`DNzDW1nId53*cQ_-&cMK^?CIhdQgN$ga=rIq1A(^5 zYKwg&`wo`WvF`u>{iFU|`!+wz>b#B?t8F4hxRm$~lz-tTH#6E8xZnKlv%`YRwvA{oKseqmK8(Gfx|> z#)dT+Zy!CGH{+89Q&m{rC!PyyIjq?Y9m+ziHPqr6qxfF`+2Qt=-KQ=fE8_j%1#Y2} z>NffN)P;AQIhrE)QQzeqbFS^A8(M1XGuQqTO<=fcH+M~2lzlL$Ao6teb6Mw<&;$U? C61Fb@ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/image/images/success.gif b/public/vendor/ueditor/dialogs/image/images/success.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d4f3112b9d1df2147ed3b67d9736163dedd11e1 GIT binary patch literal 445 zcmZ?wbhEHb)L_tHxXJ(m|NsC0{`>#WKmY&!`~ULm|4%>v3rzVXIOUh{)L$ageu+>2 zB{Acd%*pZwE#>TlQSztb-KopJH+%!_|l-~7Ag*59?a z{_c7B@6_{ur(gU#_wwKE_y6vG`1j=VzZYNsfBgCX$DjXizW@L859r4KV8@~pia%Kx z85k@WbU+dyKQXY~a+p)#p(E9QVoA}-BeJtDJbfs+R&065YSGzOop#2q7tzUUTK@E- z1Qpqe*fm*b*T-Fam_8!ZPiJg?eRTb9ku+5;xVnw>Wr$>Ce}(b zvq{bgY~#~oR8Cparp&0%zbdUw!o*Z6ds70hP&$teqekA&7*16-748@%Mnl0vSqU6+ zOpICr!NSHY@7SLk+rBLP3&#jWP!Xxbb jiN%_{Rv%uKKTTNF#>acL^G5)OtDBg<-IWs>91PX~W`xy? literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/image/images/success.png b/public/vendor/ueditor/dialogs/image/images/success.png new file mode 100644 index 0000000000000000000000000000000000000000..94f968dc8fd3c7ca8f6cb599d006ef3f23b62c7d GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvO-#?>2=9ZF3nBND}m`vLFhHXsTY(OatnYqyQCInmZhe+73JqDfIV%MiQ6rPIL(9V zO~LIJBb<8mfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV;u(vXbonl~MI_~M>7*cWT z%njcRVMh`65C6~Q2yI{K`NBQQh9heAinXE1(JfB=Ul%M;Ke#x6g%L8^f5l4Te zj&BcK1znDIyZS2~eC7F3K+}tVTa$=u*HTU0W4>0#`+Qf%|GkyBERBs#$Y}P@k7@U2 zd#*XsYr~WGeCA1uSK>2HTD)g9mP}Xrpg$+`K&8dx2JS~bjCx(hj5}1;-8qn2_>|?> zp{d+2q{I0hbQS!U-jOut`kSEi+IhQJGmBl4O%se*W?OGKZ0Mp?XmGnRgezL^8vCJ4 z#-ek9(R&%4!h+;oXA~Mtbyie=u#0PDiI#!iX`%2?^@kRL8ma*r6?+*}W4e|_8~J&& z+-+*Ub3{dDcAIF|!MTDz0#78qKYeaeVU$wDOOs3cR=e5FZ*O2e-6xc{Uu=$;!s>*M z>nZ|V>zUp8-oE6^wXjV+_UOvuE&SORr`;3hnBKu~e3rzlY@NRjD|5Ui2t>^@Ve7jy z)2vT>u1vesjJgG`f;l_n`FmbR~b^~{VzXB}7CdU_pt>lO9l=E;X#4<2bZu32r~J^e^%TSISQ_Qm$= z7d{rOo2%^RUGseJkpn9(MWszUQdl(i&RN5PBgZ0d#S7ZipShU3W`>Nsy6C#pCD*KW zyxHW%b?m|pr;dF;L$saa#oaeO`u=>jkXTjl9*cLEvOD!Jdr4ooKJW9gY7?D{e?uM^ z`_}E4`0yR0boA=9>3>WXzUH{&pDfpZ;_2xb=j*pKsk#WyD%J#5t{1#azeB z4SJq8H2*dJVX$xugZHVh{7U`u4@oM|quz5j-hRJi{qwh1k5uNqu`W>3HJG&Y^R}6R z$Gq-HPue$sd${oT*XKO8zN>Oe_%K^bZNm3^-vf7@5X# + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    + + +
    px
    px
    + +
    +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/internal.js b/public/vendor/ueditor/dialogs/internal.js new file mode 100644 index 0000000..44dc17f --- /dev/null +++ b/public/vendor/ueditor/dialogs/internal.js @@ -0,0 +1,81 @@ +(function () { + var parent = window.parent; + //dialog对象 + dialog = parent.$EDITORUI[window.frameElement.id.replace( /_iframe$/, '' )]; + //当前打开dialog的编辑器实例 + editor = dialog.editor; + + UE = parent.UE; + + domUtils = UE.dom.domUtils; + + utils = UE.utils; + + browser = UE.browser; + + ajax = UE.ajax; + + $G = function ( id ) { + return document.getElementById( id ) + }; + //focus元素 + $focus = function ( node ) { + setTimeout( function () { + if ( browser.ie ) { + var r = node.createTextRange(); + r.collapse( false ); + r.select(); + } else { + node.focus() + } + }, 0 ) + }; + utils.loadFile(document,{ + href:editor.options.themePath + editor.options.theme + "/dialogbase.css?cache="+Math.random(), + tag:"link", + type:"text/css", + rel:"stylesheet" + }); + lang = editor.getLang(dialog.className.split( "-" )[2]); + if(lang){ + domUtils.on(window,'load',function () { + + var langImgPath = editor.options.langPath + editor.options.lang + "/images/"; + //针对静态资源 + for ( var i in lang["static"] ) { + var dom = $G( i ); + if(!dom) continue; + var tagName = dom.tagName, + content = lang["static"][i]; + if(content.src){ + //clone + content = utils.extend({},content,false); + content.src = langImgPath + content.src; + } + if(content.style){ + content = utils.extend({},content,false); + content.style = content.style.replace(/url\s*\(/g,"url(" + langImgPath) + } + switch ( tagName.toLowerCase() ) { + case "var": + dom.parentNode.replaceChild( document.createTextNode( content ), dom ); + break; + case "select": + var ops = dom.options; + for ( var j = 0, oj; oj = ops[j]; ) { + oj.innerHTML = content.options[j++]; + } + for ( var p in content ) { + p != "options" && dom.setAttribute( p, content[p] ); + } + break; + default : + domUtils.setAttributes( dom, content); + } + } + } ); + } + + +})(); + diff --git a/public/vendor/ueditor/dialogs/link/link.html b/public/vendor/ueditor/dialogs/link/link.html new file mode 100644 index 0000000..55ab4d1 --- /dev/null +++ b/public/vendor/ueditor/dialogs/link/link.html @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + + + diff --git a/public/vendor/ueditor/dialogs/map/map.html b/public/vendor/ueditor/dialogs/map/map.html new file mode 100644 index 0000000..e763b8e --- /dev/null +++ b/public/vendor/ueditor/dialogs/map/map.html @@ -0,0 +1,135 @@ + + + + + + + + + + +
    + + + + + + + + + +
    ::
    +
    + +
    + + + + + diff --git a/public/vendor/ueditor/dialogs/map/show.html b/public/vendor/ueditor/dialogs/map/show.html new file mode 100644 index 0000000..329cfeb --- /dev/null +++ b/public/vendor/ueditor/dialogs/map/show.html @@ -0,0 +1,118 @@ + + + + + + + 百度地图API自定义地图 + + + + + + + +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/music/music.css b/public/vendor/ueditor/dialogs/music/music.css new file mode 100644 index 0000000..8fb7a94 --- /dev/null +++ b/public/vendor/ueditor/dialogs/music/music.css @@ -0,0 +1,30 @@ +.wrapper{margin: 5px 10px;} + +.searchBar{height:30px;padding:7px 0 3px;text-align:center;} +.searchBtn{font-size:13px;height:24px;} + +.resultBar{width:460px;margin:5px auto;border: 1px solid #CCC;border-radius: 5px;box-shadow: 2px 2px 5px #D3D6DA;overflow: hidden;} + +.listPanel{overflow: hidden;} +.panelon{display:block;} +.paneloff{display:none} + +.page{width:220px;margin:20px auto;overflow: hidden;} +.pageon{float:right;width:24px;line-height:24px;height:24px;margin-right: 5px;background: none;border: none;color: #000;font-weight: bold;text-align:center} +.pageoff{float:right;width:24px;line-height:24px;height:24px;cursor:pointer;background-color: #fff; + border: 1px solid #E7ECF0;color: #2D64B3;margin-right: 5px;text-decoration: none;text-align:center;} + +.m-box{width:460px;} +.m-m{float: left;line-height: 20px;height: 20px;} +.m-h{height:24px;line-height:24px;padding-left: 46px;background-color:#FAFAFA;border-bottom: 1px solid #DAD8D8;font-weight: bold;font-size: 12px;color: #333;} +.m-l{float:left;width:40px; } +.m-t{float:left;width:140px;} +.m-s{float:left;width:110px;} +.m-z{float:left;width:100px;} +.m-try-t{float: left;width: 60px;;} + +.m-try{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/try_music.gif') no-repeat ;} +.m-trying{float:left;width:20px;height:20px;background:url('http://static.tieba.baidu.com/tb/editor/images/stop_music.gif') no-repeat ;} + +.loading{width:95px;height:7px;font-size:7px;margin:60px auto;background:url(http://static.tieba.baidu.com/tb/editor/images/loading.gif) no-repeat} +.empty{width:300px;height:40px;padding:2px;margin:50px auto;line-height:40px; color:#006699;text-align:center;} \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/music/music.html b/public/vendor/ueditor/dialogs/music/music.html new file mode 100644 index 0000000..e7ef04f --- /dev/null +++ b/public/vendor/ueditor/dialogs/music/music.html @@ -0,0 +1,32 @@ + + + + + 插入音乐 + + + + +
    + +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/music/music.js b/public/vendor/ueditor/dialogs/music/music.js new file mode 100644 index 0000000..1c538bf --- /dev/null +++ b/public/vendor/ueditor/dialogs/music/music.js @@ -0,0 +1,192 @@ +function Music() { + this.init(); +} +(function () { + var pages = [], + panels = [], + selectedItem = null; + Music.prototype = { + total:70, + pageSize:10, + dataUrl:"http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.common", + playerUrl:"http://box.baidu.com/widget/flash/bdspacesong.swf", + + init:function () { + var me = this; + domUtils.on($G("J_searchName"), "keyup", function (event) { + var e = window.event || event; + if (e.keyCode == 13) { + me.dosearch(); + } + }); + domUtils.on($G("J_searchBtn"), "click", function () { + me.dosearch(); + }); + }, + callback:function (data) { + var me = this; + me.data = data.song_list; + setTimeout(function () { + $G('J_resultBar').innerHTML = me._renderTemplate(data.song_list); + }, 300); + }, + dosearch:function () { + var me = this; + selectedItem = null; + var key = $G('J_searchName').value; + if (utils.trim(key) == "")return false; + key = encodeURIComponent(key); + me._sent(key); + }, + doselect:function (i) { + var me = this; + if (typeof i == 'object') { + selectedItem = i; + } else if (typeof i == 'number') { + selectedItem = me.data[i]; + } + }, + onpageclick:function (id) { + var me = this; + for (var i = 0; i < pages.length; i++) { + $G(pages[i]).className = 'pageoff'; + $G(panels[i]).className = 'paneloff'; + } + $G('page' + id).className = 'pageon'; + $G('panel' + id).className = 'panelon'; + }, + listenTest:function (elem) { + var me = this, + view = $G('J_preview'), + is_play_action = (elem.className == 'm-try'), + old_trying = me._getTryingElem(); + + if (old_trying) { + old_trying.className = 'm-try'; + view.innerHTML = ''; + } + if (is_play_action) { + elem.className = 'm-trying'; + view.innerHTML = me._buildMusicHtml(me._getUrl(true)); + } + }, + _sent:function (param) { + var me = this; + $G('J_resultBar').innerHTML = '
    '; + + utils.loadFile(document, { + src:me.dataUrl + '&query=' + param + '&page_size=' + me.total + '&callback=music.callback&.r=' + Math.random(), + tag:"script", + type:"text/javascript", + defer:"defer" + }); + }, + _removeHtml:function (str) { + var reg = /<\s*\/?\s*[^>]*\s*>/gi; + return str.replace(reg, ""); + }, + _getUrl:function (isTryListen) { + var me = this; + var param = 'from=tiebasongwidget&url=&name=' + encodeURIComponent(me._removeHtml(selectedItem.title)) + '&artist=' + + encodeURIComponent(me._removeHtml(selectedItem.author)) + '&extra=' + + encodeURIComponent(me._removeHtml(selectedItem.album_title)) + + '&autoPlay='+isTryListen+'' + '&loop=true'; + return me.playerUrl + "?" + param; + }, + _getTryingElem:function () { + var s = $G('J_listPanel').getElementsByTagName('span'); + + for (var i = 0; i < s.length; i++) { + if (s[i].className == 'm-trying') + return s[i]; + } + return null; + }, + _buildMusicHtml:function (playerUrl) { + var html = ' 12) + return s.substring(0, 5) + '...'; + if (!s) s = " "; + return s; + }, + _rebuildData:function (data) { + var me = this, + newData = [], + d = me.pageSize, + itembox; + for (var i = 0; i < data.length; i++) { + if ((i + d) % d == 0) { + itembox = []; + newData.push(itembox) + } + itembox.push(data[i]); + } + return newData; + }, + _renderTemplate:function (data) { + var me = this; + if (data.length == 0)return '
    ' + lang.emptyTxt + '
    '; + data = me._rebuildData(data); + var s = [], p = [], t = []; + s.push('
    '); + p.push('
    '); + for (var i = 0, tmpList; tmpList = data[i++];) { + panels.push('panel' + i); + pages.push('page' + i); + if (i == 1) { + s.push('
    '); + if (data.length != 1) { + t.push('
    ' + (i ) + '
    '); + } + } else { + s.push('
    '); + t.push('
    ' + (i ) + '
    '); + } + s.push('
    '); + s.push('
    ' + lang.chapter + '' + lang.singer + + '' + lang.special + '' + lang.listenTest + '
    '); + for (var j = 0, tmpObj; tmpObj = tmpList[j++];) { + s.push(''); + } + s.push('
    '); + s.push('
    '); + } + t.reverse(); + p.push(t.join('')); + s.push('
    '); + p.push('
    '); + return s.join('') + p.join(''); + }, + exec:function () { + var me = this; + if (selectedItem == null) return; + $G('J_preview').innerHTML = ""; + editor.execCommand('music', { + url:me._getUrl(false), + width:400, + height:95 + }); + } + }; +})(); + + + diff --git a/public/vendor/ueditor/dialogs/preview/preview.html b/public/vendor/ueditor/dialogs/preview/preview.html new file mode 100644 index 0000000..f6b433b --- /dev/null +++ b/public/vendor/ueditor/dialogs/preview/preview.html @@ -0,0 +1,40 @@ + + + + + + + + + + +
    + +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/scrawl/images/addimg.png b/public/vendor/ueditor/dialogs/scrawl/images/addimg.png new file mode 100644 index 0000000000000000000000000000000000000000..03a87135bab65fa2633156789ed0f4a906d6c48b GIT binary patch literal 628 zcmV-)0*n2LP)LlfO?CQ4q&JZ};uuDR(Ob))OTXC`@eBz!@zF z+HgV%Hu^952Y4l=g(2n$i9ae63lhXcqYyM9#DWA|@b(rsk9+f;1wl+yj4;&{^Z8EZ zJ2T2T$4NrJSzdPEvg}xJM?R0MBtb zF(d!&V7bvXOyyt%V+_VxCMVl|G4K0L2`GSu4nDMoTw7VvC?4}634OnCk@;@JLnc3FEH3Q_>)m5edixGKIt7FkHcF4 O0000LlRapYQ51%sn|z5A!;eU>8r+{HJr7$}yPjp=Xw4K1Ua#f7iuXvM4a5!@5mnb6Jy5;4f zq^GClVK^)=CMV^$zAd#p)X9w(bjvTJaV6W6Y< zHElN4Fd9h58CQpMwnbCF0&&|nt--a91jfSjz&XY;RG1F=2?rH8AKl0($O&qx#;_=`eAIGPkrEiZ*t@m5rL2F^2%$?h~iba07-RvG6!+$Z#-hF)* z*wUa-u1NavBOIv|-+OxK963tx@)g|sy&J-7BIJt|`BL~qAQEA|QlZmXAv_UdV92*A z3}9Ln#}*y)LEQe`d0jImLzJL!8vd uXg6z^rfGozG)+U(G#m~GPN$P@*OZ@vE+GjWfY&Ji0000Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzf=NU{R5(w?lReA9Q5c8MckvC3CRr4rWH3k}lHF)Du^B`%h=dG6 zguL4*gWaS^NGOSZ`kg^f{XGLc^_;r8yYF+Z`@GZ<;@`(&vA|?9`3kyXJRalQL01fi zLp&Z2WV6|iphH*mdOh6lcNB}ox0FgHl*{E8%(<2hUD0m0al73R4u_FWr%|m|U({+f zG#U+byIr{(BXid2&=t*Q6W8k%I-L%By=@ zm&*kzl?rOL8d|Lu!C(;4XcW0z4*h-~yWI|l!$HRBbc(@XARW4*QmNo{I>BPGNUT;X zoK7cPE*HFBFG8UZX0sXA>ow-{IbyLG;_u=hIe}(G|5Z=0000LlRs}0K@i1%ySKhz{O1fJ$i!Hn&_fERK@ibd zbP=ieOf+<);v-NHQBXy)C?X|I5W=L1LJA~<17{zJ<9KG5!k{1wk%*@njpn`4doyD~ z2uu@pDm37>c6P$IEISwYQmKSH==W(ZE}o0v_2wonsNzFl`^D^kf$u!}LQutt_h<;j zar~DygE3(2IEO&+5CUiji1#=ZK||o}yDIhi33JuKDcl%rWQp=QqMSoVf(}M_9S>Cz zoT{SUv$l2tmn+e19`WG*;h4Z$Tz-aRexA6TaMJJ5+ucP5L)3dz6(_2Uyk~!Jk0eQW z^|DCs>qV~3L9K47-Y79!zJ;+$TrLymKV!r*@*Yt=mC$IUKuQ!vbUH=4-H3MEa`k$j zhnMqIZzgp1JzK3F1=nNY_D=~Sf_Tr$%FJ)(9slx>D9Y%(@ACbV<1iJj6ctqv?-3E) zNCY1O8yiQHJFtexf@?2R{@BJ?i!}ygEd8hVIIh)jS(Xvyay))=@XwvUSz2QG?!rX< zd8>shILEWq)iaM~SSaveeSM-{Y&0;#;gB>(^b literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/empty.png b/public/vendor/ueditor/dialogs/scrawl/images/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..0375196257ac3c859373b3ebebbabe6f16105587 GIT binary patch literal 519 zcmV+i0{H!jP)Ll09-0Q4oZ`x4R&OpbGFo(29U6rOK6a3v&a7 z_DM+WM6pqhRKi!#4G@N6DKtGpus^URVFFJ&)8BN@dnqD#NM-jmudlA&{11>?2dmYJ zq9_;)28>1{cDr5ttSY|V-7%R=l6xQ-X2x_n?EuB!wC#2qd7hIOIeC_oWf>_YHk(bz zMaX$Q9;cHIE-o(@kBWl9lL2S1&UiW;@}sKQ@Am+B1TJ9`@6XQ{M-IY$At_veyCZkh z2#A0HNw}-$pgZDtT-F2Ob2F>OW^-Ac+hlWdQI_N05jzL&!X;$ZZFh;o!GLIH95bB; zNW$DPvl`UcHyv6%9(DgT!0PRm7pMi8VTV70h}zld2%+{!9YE@DjHv&@KO#8t7UG=) zNe~cC4#|6f?iJh}mm_H@6X8y{FD13$rOa5b*F8Xr2vSNfffuvc>}^?=9}+-HBod@% zcfjrE+jln~Z$1J0i1=~@0GiDNLcJQPqF|2002ov JPDHLkV1nZ!(%Jw3 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/emptyH.png b/public/vendor/ueditor/dialogs/scrawl/images/emptyH.png new file mode 100644 index 0000000000000000000000000000000000000000..838ca723119499465f29e881a745f4d8a051e22c GIT binary patch literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cMyUXw5Z8P6?!9~W&Mteod+EB17cYi1ZuhR-c=YJe)QJao zoqKZj)+^_N)hDk%kM7vxU%SOIZ)HU5u5H`4rB6P*;n@A6IVa_d+Vkc6Z`Cb3f9%S$swHPL zrX0?laV)ZJmtD^C)Jcaf-hX@G%JYPteGa)RpT7ON{^-5+yDx<|?_9t8V%D^yUKQ)t z9lf{e;O)TrtuBRYf*Q8PcI>guUcUO!os-vJoWJvW)22-q?!7sF_4&EmuM_+BN4D;= z&slDtz2el37q(f;)*ZQN z=N^Z=m4&lU_*8HD|Np=0=2?Njpo}XC@(TuXX$KfKp3qYR+O*iy#WAGfR#Jy6Gf%)R z4qpdHXJJo=hVYQC!~KV2MYI-VrJh`QUQ;LM&1;6x#M9b~#Ma7WK4-jqNPV%W#5&yr zqHMw)6OH>XB&SZ@(#H8io2zq2%cn~1gDgj6o15p{xKW{#z;wrkO(^fonRSm08Z|^C z74@VuOY>$h1UKwir)j@Gk;A27;=wb==bbzq+_Gcd9- Y9E)+P-Fqc+HPE>Xp00i_>zopr0P;w4-2eap literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/eraser.png b/public/vendor/ueditor/dialogs/scrawl/images/eraser.png new file mode 100644 index 0000000000000000000000000000000000000000..63e87cecb90ed3ac0e4acbc257c6dddae5311e09 GIT binary patch literal 43271 zcmbrm1B_?Ex9>YWZQHhO+qP}n_Ovx^+qP}<*Y>n+_nrBlo0q)g zl~l6#PCivTLP1U(777dM$B!Sdk`f|He_Moq6$0$<761O*@NWa+EF`G{@wfOunEd*C z59uJG>HOmd)Xl#NBvi$c_E*Gl5!G-}wl{NeH*_-nA!uT6WJ(}r>166|?_}*vAgs&+ z*07lO;|ExcgOi%NN7k_Rh7-0Zf^Bdcg~Tc&*^6T#ILYWUMIaS-pi>qVxhh>!r1Bx5 zqhbe9pb4}j8{`Q7zPMiqeBKBB2arRDxjoi+KX>4E<92dY_F9k3^^}YJEWZEe7x`n^ zGyB2*Pk$%9tb=PEx{tLX{riF`|KmSqjXHevsg9r!;_1H*vBxDv?@rWl@Uj&`xm;vm zvF4yVq`{kz-fcm9pKiKkg{ksakY+%CYbQAga~0@j@fVupwkTQ$*pvRgIpKqYFODmt zdh|~`cD$6GIEW>e$KQX00@zyRyWv0bma8|syctE;!qtR7@Se3OeB~@@4Zb!j_=a?% zRs_?f-dgCAY-1z={A%`QZk}!5QE(!xbv_`lhI8oezS8=f7pNf4 zKKPto?*W*6Nte)f2<{8?y;x~_Psc=Id*O_DOv(l59b3Z^akG5qg@91RS?kR#jSwFi zjm3d{x6l5ppMA)PT@!mwbH37Xip?s`#WYcAz?qyw&^ZlSQx_OihN?e6(+Z znbyVue#NvY8$qx<>ZSHx%yD*6vg%8x@Pxd*hB-HkDy8<%g6q3Ik=|hN4ZULic`*eK z>AKPS;!ak<8@*ti2R(7N0@&|-rg)Zblyk@RS0Xe!CxX~<^H02(!C~dm{HR^;uBU+u zmfwL>XX_YSsVACHZ}1fNHhECkOJeKSJ7H6h0LCwrQ<#joF!9nlft)qg5Om+SBZ#&+ zu+}f7DgSw})(%X6coUM9uuFRj-KK{p2htYcgI=fWYznQA)+iy2bb&%naIO26DB~znsxd!bA-NM-^`9f zLGJke7{`3;J$n=4q5bCLJ^RCH+>yP-;LOh4h(&C~*GH1M|D?q?!Owiy!dGrX_$pX# zV{vS3!=piAoy@Zb>W9K;UUL&C#3n;?AIm~}(SW9UvhZ8MJIaS%SZh!XY;LBX8B@J1 zckpjLo4TjLj{yA~!FSzLP+1r;>`{yNmP3O&(2L4NcD-E7U~tM4{;^&NEkSG?XRTP# z{w72b{3pTBRFsQa3sHimTdF@V%GY^o=Rlno)VIObfyVHVs+nX&8_NVD9-Ghc<+(9&lAOSyfj!tL-L+ua-?1%M;QvFx;(P`vL>&I_8&1O3 zT1f0|d*bVFALMWSzbceP%=tflaN*lpt0;S9UHZz}Y_7QR-|vkj+OEk#wF)3_7czU!MCRvp5_H*Bq5t8M^U_p+6)ns#t* zHny=Zy03e#%cr%vc|v^a%I;%fOT{zkmIr||iC7nj9$X3euIg;th9mXy4B-Z`gl%$b z_@dcyH2ES_%VZi}!rmS7ot*fU#GE8n;M$GN%cLF_HA(t>Li7So*4p{a0X~}~YA4BH z0DuADNZc5DJ|$~|WvjE=7BjsL$KB@z?eFg0rdTPMNk_Mt4?R88UuWkLqX(S&bTaQv z#yif&i)Y)S_HGh~dy;&?>Yf~I7{fw^Q_@~(xJU%8x=_|MpLfe-*g`U3lQA}SEFzYJ z!laJDguTExpJu*5+;Ao0q*Omo$tDNI)_{P$5op$N~ctVpb{$NNa)>_DUCA7bxM1w*fnG1uK*6bBUmh#1wmFRQ=Q$i^ifm87d(=$IGh;a6(ho!QK6JW2TT;x zXrPo?G}c_fE4DN_s;`bGID^2 z`#HC!XfP5P6Cnpp!}hTHPaw%k@xV^Q(6bUQ5}SSR+(~f7;;Y~&ezRthTAZPa*jlnR z)Uj8rG~}hB6YB%65MX%%s)-;@Q6u9Qo}D$kSRzQ3qc2!=ovUdm@~Ofcn9`_$yybsV zsIXU$D8XhhVVr6!@&@0&p*&tt@FI>0s5DIp<`bR2s#X&zL(Jd&2(!~lIWiKUsqiR@8)H0EWK%nY~pOak(dxMaw%Aj4`5l5az}PFVEB9 zC=$H#NRLCm#D&xHLuaQL0?aro)(cB3ZEG6CG*+BNJHYH1yh%W3@1T4oZ7@3DNlbuM z6{JiMh?OD_4D>gg7XBQB`q79ZA;cWb>22DkT}**SDTPrJf{-E~eI%D?LaZKPG{Ynm zM+GH^ng(8yNFoc6s<{Ny7E78FmKRc5zfLK9i8W+-eJCjw!~8<<5(hX1?pZiGH)As6 zGm*Ybd6-8uc0J`Y81SskQ0eMoKUAqeT*Ozk#KuJ?F|PUiFb}a-IfteaozWzZ)h_|I{|29U^j zSLb|nWeL!|8?O2H`E zfMR$}=@W3Xy8c~hN2oIVJ>XU64LxCLZfH=-D_IS%khL$m3j}bbxsoFJqWaTp zYjQHf;6CPU79TkS9)$A^rie|ms6lC}1mGId3n6fQeZHmL*@r5aR5fej-FQYkiDXkX zN!hKEb0f13+o}bP$raS`Ui2QG&h5BW+BAdQv)cxoW!m#OF(iVOlJvmBL(_!WO zvMWE`RYE9qWX8Z=C(=d-O1G^8Fd~^GjnE?uD8#q0Z-mVFwa)=w{e0=l02JXmOjR5kH^ z!QK|bq!>xxgMkpu)iG!mdR!X={~`tJA!CJJa#6WIu?^!`MEEIl5lYbdo7NBA>XPh{ z^M3bG`&PH%1BChh;A&7YM9-`zUvE4o{(zt|?pVR!FOiu89R@>@hAD@gVdm9lKLE0w z5h{(=WzyFyx+8u<#q|O$_=3*N&!#KxlyjRA?hUN9ye3+LiJx@ADz!=i3X_pbi<5*g z74djbXHeA`s9@x(i-7iyu#z1jGYignhM16}BO_nLkv4;T#`2;T%+)ZvuG!O3;;^pu}SzMO#jzv z8(k>ig0zNmg*4eMf(2VJ&Mxt5wI7%QY>FT|B&YO-2jh(`bKnR3b_yPH^CQ0c{Cb;o zz>a1i_zuwyJJ$_J3YzawWb}8}9M!P?a8B>f^Q%Fw*N;&}D7*oE&~L51NYK<|6I=tk zXO!C9RPEG!boJt!3?rw-vdtzXJI}+Gslyf0vDHH>Li@Y;q-`ex;(0c2%oa*A#VDyI zD$)$`0_lETFXjWqD9L>B49vxJt|_8&qyigNop}tm1{ut0kb-k@GXxh@CaE3`MQX$W&3#RW;~B_RWeN1v&fW!m{(Jd z`B)(8eHg37!&$y(V+hn0k+lz5diZU#JiH-ub+Cz+U5HCrNwyTMuDGAs8w`zvtsQLXCRW5q&T%`&h9in#lD?U>e}zNJPi zE%kizveaE5YL9r=i(b#wtQ4glIkyf(o+%hY)#*VRXa5F_rxj8~7L7IQNw3Bq6U}Pv zWs+p#-*z|eSeBh?%5JJJc&1p4&Rd_FltZp12ur9CW6oL4Qf#Ay$V8Jj{zk2$L77XE zX0Y_XU2zRT=OdaXuXueqa(*v$*r=XCnkb=SMLFY`uT`aY{GM3ZngI0WrZ$~PVyL^JAJVO zPQX@fGm*jpCVM)hO424i+N)Vn70qZmt7-ZR!X|TULkN``;H>CClB%TgCbh`uQ%e7w z8j{Kk!*L6@e6=r-pAaH%rMU`dO~>6|&B}pPA=tc%2`Xpm(}hQKgqM%Ci%E>F5Ux@! zvT)`-a_A(aoQ%-{xf6+AbBCVjwR77l2Ns~6?OvR$9QWR4RYyBKZllcTq6N`MBPw)*bxoO(ri#s>>u6oK;SV;_sg}j; z`9jCxzHfe>owfUh7S%jj8^uNktCz> z%!tky6&o5|9s}D*&H*2nxzc-21<#_QCj13ITL3{1nINR-Gnm}hOxtbWm{DAU+FL;+dfuHI>X`4?En zNz!Zm3JRXTW)wC~%{qk?jN?PRpcK4?&^$?_fwl(Vt@(v-XB|!+&ctP3e;w{nC?4;g z40DL5M(Z#+jgQr`5L1&9&+-zxk2eq83Qmv`{~NfgoEj4wA9J1^!!K;&CmZ$A_~%PX z+`AB6l^o5}8r_9rZX!v`*?xGKn51thw<0ZrP! zgjD}eZrH?s#rxSYQ&OG(%uW}rqc$+j|4;pw=SK&FlO`m4?>{v;OULQ%e01EDbo0aM zulk=HYLT)36JX?DfPWdm+58KT5tDfcL6C{yhl9=R7Eyoe$>I9(tL~Q>fHeC9cI?&) zor!3nIRt+gjJ>xWXH9!5k3mZ%(C^hdrcwgdUK(GO%VJ;<$l?Rz{} z-uZmRwM4tn{Rhu4o5zmRjA2VzG+l4u3OR|zm+0XSt97Qurn=;#?up4jbxXonQ_}&@ zPpM>X;ZyY#zhVjIg^!7s7Srf&CeLL1o!8-9-=~M0%x?~G;z3J6^2Ks#~(A7l-J%dNPeK7IaCRiC+>?uE2#0X*9)$c$@z zrE8OM51mlW50-h-j5BL^8(rdF!C-Kc_cA)Y6fjI?@l=wir0dK>3sgI7@969UPY0&A zx|`wI9xgCn101Rs28A-BM;DkQ$>%`Ga=2gid$hHW9d%Lkd`l&n4WWgEWET>LOA zJkadMi-VeN@z)2-fSm7disn*RB5zV6Zw-C|@q~oizMp`3Wn6;F+ni(9!(0X}O@y>) zJesSIt?SR2hrR2syW8F*wISgH7NZ0j!j{yYLcbXsMHMeO0^UoUg-)p^fPd-a4#3%d+5WSJpbjVr68Oy`A607cEeeq1dUJ$EyF}_ z{K83~TkDr9Y1*3u!3hL+xUp}hvoV&D*UY0{pHGt3Ei3S^{jN3I8w}TmZBZ9Xo?3(@ zs-K6;(PQ*U+qi`6Ypd#KzI=IVxOxpBag>zg=Wc%{9@oNN+fhY9(FB{OIS`JXk)MnXq&BCK@j5X)X+1@D;z& z##0y;auenCf`2d34m$0P>U&IbwD@GJdsu%_C0lwh>f`zwzqpa^v;Hz=m(#W*iw&T` z8q9UAVsWm&Lv8p%aUP{M^vh8;Q~PPQB5g*O-fnUPh)&=6D*Qh6gTMHgxW7|6L0zSW z875cG`GaL}SZ18EJaSPP%G~8j2M?W4hMEpKl5Sn4>;lr*_jSQ85*Iw==tSu_qxxG_ zk3j1Y=6FzWR1aizlp2DpD1FE8dHMG1fcrcvi$1}4V39Lhpn+ZEYQlK8yj)AH{vhu)3Y4u5s;XbDt%0LJ+ur_z~GkYf@k3$YldKH{&^gw-d zDsJb%$Tl<@$pO(E{rEzRd5Xyho|vX`hnaBN|7GWszUS*TwReQ@%Z))=<`(ZW2R|CM zVMg?81$bv+RvZ1Emi)K<>z@5bKYvXBbHzhF$ZWcgRGoqK5zVBMdGmSvJX26~aioW^ zt~dU16=ADs-tuYEiXbPkQ5Oj;Y1L?R%I;v0X1+cYi6mvSbx)K96tQ%?! zb{a67wCy@2c+m`|TuhRR*y0GF2561WtD81+U z-J1BbQYm>aEnL=a6PhX=y%R$f%N&sM_{h22_7f7+yyp+mr8R z&J6P@g(y0wrr=ezfp2ulK-Qwm=d*U}8X4o&j7aG=vdJr29$ljuz^L{U zAB<1Me5o@B-A;k_D;I z_4-z#ife;{ka-0#z8&rX524$Lqyi+DbZ(aqU^yEGo}%F!eYcTk+Ad85D4janl%sup z)J|#pe=Huz0&R4s1}%$vXj+b*ss%`G)rHpGdua9oV#=Mp0leVP8L+7G)r4H8yhjOg;TVNHG zl%JH`Kfn8b*4PaZU2NK(&sxd7lt0OsdD> z*7ng~7gAr_JQbr>o6zU#vsH4RmfRIV_HTh0;XUOhG)AcVy3oPZ$fgIsu046~8tCOl?81d_l$>_84LyT@Lu%mn924K>kfzyeDmCRbIHU zExN|}o}c#u_Thaw5xM#-Gc0R_P)kQG>ZA~Vk>ema37#fXYAfrwg}a3c4)Dar;6mW(nOIIiQ=$SGL>3YUuj^E0x0di%9(-@h8U?6XuW&g0;-Qi zFWYMF;8h;LHz?}`qA)o5>bdtjtnu}xlM(aiwu1KwkQ*9Bx~2Ty4sCH$U_aNd2okyH+F=`EC)bbgSY+3m zWJUa@H^a7805WZ9+3#c@R+%r>jp0zuYlSSUB85P~56m|8dD|QIdoAx9tKWL)@ZwJ) zX1x&=ZQJYQ;PGAAwx2cti~?>u5IeOC|e;!Y1`SjbOI+sNzbs&hQzZ zcyK+?CZfofFw)lh(E$(Bd zt?n5fGPRBMz%DPBr}__&tQ6ZTY*2-b%O$WjPud)U90o~iSYWqo-tm3!8b;Ozucq0& zdb_?yVHRm0KL^DZjj$4aoL09kmjrdn7p>}b%TruEfzhm<7w|QgtND8#Z!F4V>2=1$ z+hn%cdBeKf+T{xX))|@rdkogChOb`OvDcpNtz)d)#n_&D7dTAZqnZ9Mvsa3TFis`R zHn#R4&`<8#FH11%BDwj2!HS0etR4+Fs-;ROvAi`BcXso!mCrJ-3nW|JY2d)tCDVK` zX3O{FZsf|>M&?eMS;9NFW$6OrCGKLL1g=jEdA5DN3%1fEeU&2hV?88)tqYoboi%~T zT~2!hvenP8x&8(!2M&Is-veo!&T?2fpO-OXwev_&RCfSXXdYSGdFORy(Hu_oIM zsZ5|-Q=E$l3TqaIDdqpiio=xt+GCeY8f^qaCK=NmXF>vb=oD($6j(>l?2QtX2`s1*gRR7J+O?hfR&NZ0ULPfpFXi17&d_MYL>D;UD~60 z+}!di1a%ef$Ld5OKQo>-Uokskws;x#*QF>*?i|(!sFsMbuq8*i^Mv5pZ-+C(fzvhV zs3f;N4q7k{+`WgdhboN-sqYi~ov5-e5s(7b8s3sbb2+Xz*jOoq8QbLt{ z2vrK9Wara)GU=FZ56WyYQmh#j3K>+WBvHc#3YmF>KUBe%$uRlGSwwsznLqIy8S!O+ zedy-Jf5je<$d*Z-YPuHBI4Hea2I7Z#hzj%PM-?fRsX!&ma3?kX|Z z5klVuc%}!Y$21B+3o&4M<*Y^gH)wNaZN7B&?Z3$8{>R@PRe1kDV6*5x$1vmpN>t+X zos)()V$kKAu6W3ya?G(FFG?z0-+ZiOWA{Kj7|Jik7o6LqLdEoE z9}O73s6c5GWqHPiAC;WhX-O}Uz9JKtE4QEP!7t%|&Na0dCUfwFZV-YyAV!$O9hYZn zGq@%XwPB2H^W;Ge%c^Z(JU=%j=tP`jJQYOvO>HQ`G>%tP!ZEdR0OvMAheC=MNH;2@ z`Rk+HR8c@?27-Edjo7U9yjc;A#iO1GgB;eIb2CSK5#nsI7IPh6p$DN_;e%)a=bb41 z2GNU(^1{%KotTAFx4+Dw=Po`1(0)<-@GN6Fr!lI`K$Mk4{`e2mT*?br5IhIQ+MC$q zpaTKQAmznN+Nf4UIY$wVMiZi#I2KhbrC6A!4nZ{2w6xV`ibYKsB}pKW6F=GIn2A^sPS=ksyj6kjg;7iPM2%IYLcdbU0N4KND8cDGZ8E^iQZD+^uFeBz0 z&Vf_o0QHi2un$GG=O5{4h3QB$7okQam!1%{NhgQIn{Fd{Uq4;7ZNR1xul?SuzmGzm zvlas;78hfBY&Is=#2Cq6o5A|fLLR2$R`J90bfLFuD7Yoero}2m$RiVTA>Jtt0Ow%j zg+|^O`@9dYR&plt=o!4(L|qyZsCj^}-W`0F8Cs6TZ%CPgpE3yU-;)~GT0;|6GJP6U z<79W}8{j!}ime|Ep{2}W1+$1DvT9T!&NQ?Fc)SDYcYLLK%*(L9?29vG(=~1?WXKw0 zF<+@hirnUK%$P;kcy)fYrLSA{SNxJG314#p>@Voc)IRzR#h()mv$@n0P}#^e43LpZ zVo!f6UpGX_#ap_i_!3MdXR(*_lPqC8$2XO`)vO)>@>rT-j`SH zV5jt(v2Qi=fiFS?^*LdflOm=ipvp|yq<*`=oN`7J7wg2f=n1*Tz)g?ntP(J52qp;&dIweH*)f9)v!h#IOT<)h}H zpIW@=zIpFQllWhrOngcij!U~O)q0X)5$(KKJ)j|()aWf$cJFxd_VyAjZZOjx4Nk$i zFWzhM0R5Q!t5e>W^d-ozj8NGea#|h$P?joQV|Xkb*LwM|1S)V~B*Z?XHpYX_^{NFj zqL?6w&?N~gCmUF*iO8Pig04EFAy#KE`xN9pERDt@PF<8IbWHGN`b8X`#3zQ250O&w zKZcscaVEjo1^uwR2>BH%X|Y&}xXn&C#e_quX#0`r(?pLvJ(_XbaD_~rv45d8?i3g^ z(<|m3AC+N;YlN3zdI=FT>f2dme_3{;O$)aR`J#>rZ0f|*uBazG?%8`_o91DdhcOeN_&NnHLoJ&V z8}0ZAT}ifCOXqDm4Hi-}W*lN>Sa`=nX7S3wkd3ktU^eQx?b+sPwQjz!yWl^6_vXUnP zI&;Wy6!*mmnj{3_AD#LGRTArD{0mf_^Xez0!_sItcPM_$k6Rfq+@Y#?-M>$vT^4S- zo8A}T?!hkaHW4mxbf;%V@ayLF>BhZH-i~tA*nNxeRoGsHdPiNT+BIn%)F1G1#6iLK3D?*+GK6=& zF?>g$U!M7@k-d?;{-7&c;jVYDafK*6A-zyv%>$^=bkyTqeVbR5di?aQbMFkC?V$ja zq)f3tCCN^c#I2@et#sZsc)rZqDqfR;(IOicrmH1sBD7SBmA@_UBIrPg5f_3DxCR{~ zu%&R{&YzT4P?NIcNJ~=_shQ9|-EDF5m4|NjM+!VLyJ0r6qI6M+TIcK(GcMjVyuC^rIo=>=s!4B}E}jA{lLDJ1 zTrC)oFsbbeNzmxLzpNZ5aHpkkvkg}0T z?J`FsH+5S3e+DLfhzBA09M3q?wr-ch^n2OOeCy??XcnPul_3e&ttt}qwGLD9UYCOl zy|%%~>Y~a{W8yP%6018rGRJ+hHVT}Zh)tJ6u#{5&^kA(Zc>M6mGqc39D139s;3-ei z3CKYI`9cQn0HNiti8O>C%{8B@Iw{rh6)3GHuDeNEc8v{SFrxlD%P*1`aIF%{UPq?lKK%@#rlyP_Gh&LNmsL)1Ycv% zdnoGq&-qu??|s*X!O$OCWG zTC7=3)kCipOAwj=(!FFM9djr_-M|2zQO!ydXB;NNoBi0|c2OYgqOig@Yf&nw}kAb+An-f+PdO=%BVtlXkg|}JfSF>7(Ww+6pQy>+R zSMX6j%t~r02U8ghGCmMjnBtm3sFl{P3%4Ywi>fcuO7(ulwU5alsP{XxWNP(+!2UuA z0@c=F=i=4bk2{RvxC&He$GH)hOcG&!`dekjk<~yJT*p zdJR4LB6sfH%RJa&dQaZ4!*2rX15#!ZLm>2g=2SOyRN!TOi+Olic5zjG+s*yGFV7|Z z8xVX|!vmKY7v&geYS=IIJ-)%--B+G^m^gm6o%(z(GSxmeTssvidr!Ce;V`XN2e>^i zZ(HPt6+^sTVb?%DzxD#Y{c?pjuRZI+(bf*A_;%0QA2=MnzhDZ(jUyDjq4n9OiOq?Q z7*ty8J#Is~NsoTKZt$lLT#8;tMUMH2fZEi8p0eMvPCkg9&fn7=#JuO$mmxQqB5e34 zT+oMqv5fzz@jx~Xe;{tl=l_BLFeXF5W0SW@(MI!U)qn2Rntn)^R<^D5q00SjDYm9ry_^3WA zNyPokhP8|zi3uH!2fO`L;LKv1XU@CLkF~Nzhulc3QW%{%va;zPosxv@c(@Oj;UuPG$$q;rzE8AN7Iy( zlBfQIb=1@2UgP7=ljG3QNqd;-hj0JzV4KN-dPaU!MBtVt-waQva!mNz!tDpB#T(Gxg>E1^9<3U5yU@1z2nQ8{l6?fWVl) zu9}UGNjN|z$OCc4#v^o$Y<%#gvG|B+^A{aONxeXvdY3|CA{{9=g{!+q>?y?FQJ5%V zQB-sE{I%mHSF*Fo;Q|uTOBhl)(>z2;0e`w?7EE{ z)#C-$_7cmGmRPyCl|gw5N4kI4L=sbT{L)%3^WPHaV~c(L!4>Zt0}!WG z6Clr}-ta<-ny3rAQ`Al|pj9$dyDRP(s;G?T%C$U?hKu#|ThHhD_f%PP6zD|n8vM?p zN2_%BP#H0D)P29b+VLwK-LJRlaKpV^MaCgT)J@_G=uI2>eJPaI8f?uRjFksN8xeh#plTPLr&M$v|a5b!cblE?(sD(b9D^{<(70a!KE9;(N4n_~&eAo;tAy;g*JPxV& zsY%YHR>TDU9Q=@ii3v|*m&>aH*o1ZazAN?vS&SO`XVQG|aCYx|cW(mU$Cf_dm-|Ab zheehcO(N;g(}MfbY&vbE)GTCCX|}MJdc@P)HIi?D1b!Y(t~d5g%2SNowN2ZOUNAbs zR%r~oR*4#w3#HF3N8C{wPP_l!Xb5_n?jd6>!F_H)7Tr}@()^Y5)wkbmTxio9Swzb& z7C(s_#D1zW53vPB^d^a$H{B}Rr;zw$2?qQ4eWuJZ)dnYJfq1;O6FS?jx)F3Uz~_)$5goWC1J-Y?80d&tNcld{}o3%eWimG9CMYbZZy zCW9J5@Wl67BW8xKNx87&!u-X|4w!W`TX<7Kd84n0&vuB`ki_1U@5Zg;6FW>b=ssSc z?J-AFYVV=!r}c}OVCj!45A0!fYDBug>MuqtC#Q!H<3){M8e@~q=+t_IR&tH5JV>Wz zohPQG`lh_br%0Jor#>GD(__wYDv-Lgo^q{(bdWYt}m`pV407v7vPBpBj`8GR* zwa)x8Bt&W^YV6~1j&Y5QH9%X<{R}&CjOUP}Bb{lFY?y!+sm$5);W$~1`tj}o+8@Gl zzj58ewe9a?o}F}0>LlaARf;U}1U9+#CV!@5xZ<9i^@=$qFcotdN})oWn+J*}Cdy{% znk5glu?=Om-KYvALqUA=h}_wG&y9#OI&KL0E^zGeahCRa>#b8&9k2M4ZvSFGYs(@` zQ|!Vp#PrddtmqZ~yYqV(!2f**;27G0GmD_yF5J2Q`+>L8KDOhvtNrGAZq)N9$XIiyzuboeCyB7?N)PIUm|4DieN-a<=h?=jr+PdIBCd zCd~_Nv;1Jv9oPEam! z4e{IxENpi_+okByEqS}NRwlz)`fT(e+e7+a-Fb8|Vn$6@ym%3+=GderBX3-5?+DjG z`POPdRDG6CTeJ@uV%;7A>BGk!xtEe7?<#j%RKBsa%LBRJ$)4wN{$5>_2A$7JbsZ4& z)R!+r@U2M3OVWo{u_RvC6|*Ik7@gJ8DYuX)Ge1UzwcUnwwzC$lXg0Z z2fq%B>ZWg(9b6vh6J?&@&pQ<<^Y(DLy(bKJcw7;$*R%Qq)R#ZLE`PG8dzuQ8FaF$5 znz@p1spPN_wq*)T4Sq2@vE5e0%?$T9Q#v#7Z}7q6Oii|$>?Q_EgXPeJ<&5y^5`p=J z8$5s%rU30he{X{sfO-`fSEA))-V0-Q~DuH7+on3~)PBx}qP;xuh^Q zt@+sSs+dY%6Q)GynRJJHFe&+)#~!}Zsl|2~Xo+8=`w8}(!w{C0>6$yidvh~13S4e? zO)sy^NpVrAW}H^-;RtdpS{ii6h28(Sk@Psm*bDFtmH_Q)tW%+jqdL`- zN>_;>sn94_8jeJLVVOg($P>+y!j*yw2!g)^fW14f;y!f9$0Oq#y3{Rv zem(Cvu;Kf$|9LY^Gj?Qfb6|`NYL^0kzF};gt1K&6nY^eGOMWGAZ2&tPDoE>%(aXi1 zK)g|0GAT-orT#dtdYTD~X@2UTbJZPO#syf<>tlW0V`U43r7~{7%cnFW*mBni_){#fa4K!c^RB9gw?QmhjqlIZQbHf z-yR`b81v3%XWZB_$fjk#cWnpHZpCV`I2_9DlD|f{v94DL=qv7aT~Aw0+j#J3TGP5r z;&sc@ZvbqnS`;pb4VH+axBMlBbPrmF(KR)e|Nkkj;GQ( zfp%9P_1B$geFpxlnBTC^{wCOd^EOaxNN(EW~kP(J_M>y`lvW0N=N;! zgJ{&aZP(Kr>MJX)U#y!WVkF@X;%PJM2ElMtp7_o-IWg4oSWjnl*If+0V^+{u@YCyJ zMAu#48o|Tg$7~4lF5!sUfwMOlHtMQuuLKv1WH&?(0aLcCw!YILQETn?1GOy?y=>lP z3Yol8zOpPR3=I5(Xi+EKpJ;ZSy)mEHuD1>*@)l2-Ws&FAzD_^JH`Z2W!w!RYFAWbC z#PVaNSc`1?pG0h_@YqDq&bh7Up41#k9=V?L)~@$(f0R+%&^#yMJ zFPupKSo&)p?>9+eCpc1MfqG{TY+0jD_KZx1vsGLfP7RCR38XQntX@*!Pf(21Q5vfWEN)zcdv=Fgj14I!-N>oIY-a7b~(;&pGSe`ws8kyWT(SwHNFp-#z8CzcYJgCo=<)5LDtjMi%8I?!MG|vp{SlL@m94A^P)<{hzpA(P;sP zpWOau54l_q1K1-ZWSj&bRwH8>8=f>dL|dBt;e#juBiPy0;d(cgwN^IY4@OiiYHDpM zkzG|&9^3CD1IstE<`378WDXAWUttpgPZ*toLt}g}^(-cNwjDR2~M+hzXk3ux{bQhmBv=mroq@u8d`nT6i}#2;CrQ|dIyBHV7DAh zMzcMIC>~wMK@|svx6F#H5oW-u1F&=_YxME^fErQLVn3AM&Vue(@eJYR>Ia8mEU* zUz12(Nn@f0m*XOygr-x2>VGQMy=4MV*ei$Z*p!mns2^WqubyB*a3ep2W;}4xX{cB9 zW1ud38qZa%&*ztRajcel`4Oc>%y4EBxk6&fY{Z}q6R9o{0Fs41>yodM6!EMlU{fi( z2i{hsZ?2P_jcCCW!KNIw~LF3A$T1QSSwcg@)U| z>{g6yfp!OjslXK-d_&$W>AjfQ6%KZCQthK!OkZ#5pO_HjJ^Sq zVFTyPe(;Vgqrl{v>1zc})>+4cP;2y*;-cCYl%^3OEPWieo$_pCXLVEc;b3-i0s@7f zF->htrrcnsqG>HCL+5i#VB%8?h8^$pl3`lYX@*SEk$Mn;>3 z*289wIqT-s`up0FZf1BD{vFvRi{)y;q*nW`b zPpZTD>9?4D!5(?JgLTsR6C4;Wj8{Zipj1s)%>m6jB2r%U-D4@&*^}l3YdleL&sZ)c zb=C(amZ}n=7V;@8^3st$f?)RF~Oz86y4+}=)FG*qWSAR zH0%K-&psy+TSu1Z@EWb#8(N3Pk~ssSNxS2X+A#RoqV4a|Kf?lF?W=SM#>}Y7!azFK zUd{fiXVRErJ~K{h5+!i<UjHsG-jqlU3!%OYuR1Y^Jj!_NQWd7i{>H3fr7`=2 zelYZzMGlL67?X6ZqV#_9;e7n{Gn za-hpftfobk6T&Ww`OX+2-ZFO=OdAupatBho!aKuJq^9g*cPQ=+9=n4!5mU}&yJzr1hgq6hGDM9Po79#+WhpNBA;_t~k{ z{L}x7{Q6U3UY2*~O6PW`a5UrJOVEO{uaPLMnoFH}=*cJevg5kXa3!S_OKhEpV_+4amW4h#8btFuOHjT`o1Td-d?9qR2SK$*O z?JtwazE*eX@Xy5bun;Sjcg!P$X<6(HhbpQipQ(oFNnC`E9L*esGomn0M}P)h7bQx8 zZff}{5Yj(3iE15*QbqYRU1KK>!P_{sfjL_XKu0>q-p;|k!;*;u(W9*xuY;FfsIL*c z8f*YtVC)L}G3!-iSAgR5{$ZZb)E?lK*Td68<))*HB*BPt;y|7=Go4IbSHi9j@xEg> z-Z{e_X+^Yzvd7j*mj4v_zv{$4YewZ-#h=#?B}EEsm0+J5=u$B-vYUbe+jQ-SX8-uCD+C5!nxePPbkvka^!+w<5 zG%_UQ*>1ues_YvCo>&QPGmdy07a!auBso5+f{pFJTC2X-V}}deML`vrLZY9c!L^cB z#6ZRlv4+*3BcExJQAK8?qWqir=!;dFiFnvPfoq`INF8mxE4oRf5e)mI0wIuVx%%hp z&}(PMMUXhR8uod1>`uE$#x>TIO`GvTQh=-s&cPUPvx}Un ztKs9;N#d+H#+92@1-GbqZ3|_e9FJGLZr*jliRiLnOg+wgPE>C%DQ3vlnyA;eeH{doa#HmwMcf|usG5>|^TOr?Ho zP0$rRp9MZ67Gg>FMSqQn43JU0Vv#k)2N4TEfmEvc@Sjl=yL-J|cwl zD5vN?QY$I(2(Ps4U-Ov8M<8B=`J$rn#4Q>VjyC18zYdUE_Ay0EJ@P6x_S#R^z^R|Bmj5=}AeA zj>?Dmwm%?(t7ue}1$WLplgj{kQE(xJmLl-`{ODmZgiBZCsF{o?+iTT~; zjwJ5VW&~Vy=^;yBO+cyLgiGsDRT(vWX6Yk4QjnPL>e&|6GK}_WVS)p~@!qye?gOl{k~he#?T2O*NDc z>aj1{N^-Io`6QQOHvHn;%ExQTic1xWa*Od*4lXd~U)VaPiI1GEU6aCEmY7EkX@=i< z%^DU>>ZG59jd+}tPEnP1?Qy|bIv*iV2{b~ac-%L6x16AT#ZH{)X?)F!uwStl7 z>CphG_$yO8=^F)CE%vufv^A+oW3W!LPorMtBRNflmDA9sk@W9Qvp+L!P|ki);dd
    h>dGcdSlWeEFl}k2MrUUS^bR;=$@vE@GsDa9 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/redoH.png b/public/vendor/ueditor/dialogs/scrawl/images/redoH.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f33d38a3d11ce10447830ce409a0890ecad264 GIT binary patch literal 536 zcmV+z0_XjSP)LlRro!K@`S+vst67f)FhPH9;i)IZy=QifsP%Q^7=yx~FIm{DVqJh#8yN2on55 zK6niC-hAJD?=d5!lvD$)D)w6iOxq2aw)?eGO}w=Q({?4W2uyj7_3$nS0b08|CV^$s zcEc4Nn6?`Q=790%;vf4s`J3kd?(rXB%yX=pvVdv3pMkYfEM|mb9T>VsU5&ud zHR{zG?2nRrWd3EgfMHFMKLD%wc#k35+Fxy@XQ-Rrp?E*AqO06&F51~7BhBb9F%{CA zdmJPWQouxT{!<~+LW6%qD0@z^RN@x6tuTZA%{2bb;RZ0`Io4$$5UD%$(J!*|z&Fpa za?fuyZTGrH*P6~!{%Io9+`*3VLY0+{d|s}SVM0@>uRpF)fd0F8hF zgjKx=6b8R6tZy&P{3zz{+r)RSrIc5o-hmLJL6K@zgnPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzF-b&0R5(wyQ*Ba%Fc9qxdXyf4gZLw&GE-Zj!G1tU_|R6xf-Mzw ztkqtHqs45L76*QWA2RbM@MiON_wCZ@{O7ZK+oR9deF10dJg3G9@~FqDz{krMf6sUA zM9%t%Ge#w-z&79UR#oU%de6AjwTpqy2_YI|tk+7Q3^s=6YMHYnLz^_O1&3i+?2mwN&7$-;U#S!Q9m{<3SMoh?w@E00BVyxZ+RCwFLF4JWG!G zOmY$;RtOYQz#3aQ*W5#AiVywHJM`%L@4v^Nzsx*vCin1#lEeQmy!?Oq z<)3F?{!hO2^5n}ed515YeEH$t2cY2pvoHVmpTDyB(*MfC{~Hedzw_aD z|6#-Q0^JY(AHHp1XAM(|igs|-_4sV4KK0;p@m*h1S8U_x=m<-jvZ+JR;{IBr4+&>f zSEaF?oUyAYF85cQWPSYh#i0ycQ4jWf_nW(8?Ylo51`N|SiTvgEn+*yn22WQ%mvv4F FO#t{IsF?r& literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/size.png b/public/vendor/ueditor/dialogs/scrawl/images/size.png new file mode 100644 index 0000000000000000000000000000000000000000..8366845059c94089aef92aa3aeeee79e242732eb GIT binary patch literal 775 zcmeAS@N?(olHy`uVBq!ia0vp^Iv_R&Gmw0`s%8O@k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^@^W{ zcO82EKXB&y{MKgq%sz{fI)==3d^r;&6MFPw(_IV71M|xGvv%v3_j2X!dGPP#L^Pja~hhtj9%m4qMKL2y%^Z&`q z=WTfUnlHCkByWLuLg&Z-{~5B^aHX`VrcW0wpCeN?gQ0YF|Ek^0Wm|o-iywUa@%aCL z)%2NBbM`Q#t<@@?!;!p&H+$mBlaI^_YB&B#>#{8s<9mu2JY zGd5l4N$XHbnR5BlcfNx4cmMupDBR$-Y>#a9e1@#m@BaT>^X!XNW-&wBx||KyZ~Xty zRkTzmtwcMm#U?#ZF@LgB=2WKq4bg@9JjHY3ON;;i|F13o-WwPzN)S72Y1Qc%6 zcJYYNXcAOgEAc9NiWcu<*Ig$*&7M7NgR1o_Dx<9^s3W?&d{SwZWC%AQ=Vq^CQZBv#02ZVBfRNMNWq`8qHxO6)(-0}P(7 KelF{r5}E+VpO-NJ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/images/undo.png b/public/vendor/ueditor/dialogs/scrawl/images/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..084c7cc73f4058c8084e5ea3ab4e51fd105b7991 GIT binary patch literal 444 zcmV;t0YmPx#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzI!Q!9R5(v#U>KAjGc&U&EiH|oEXQSKWlhM*$@yPcSjb6|0imIx zY(ULRYin!&1L^-HX$ETG0XlnEb#?Xs>C>nGudAyA8-k93YSsZ=r-))WP>}=>pQ);< z`afyXB(MQ<=FIuOaN)xL%ayrnkSp|9?S2!GDaj0*gvQ(FlretOfvW z6$E0%n3$MFK-vn3oq^aBh<%|nh;Lrlg%pxVI0RlGdnYDm%@o%7K^0FfxN6OiJOCi zi#RxuqoSN#Tot)WQew-+VO#$I2f6IQORU!0vXfFu4udr_4m%hxc|CaQ+tc&%`}Y0* zp6?@=rpaH1_@`<>2#kh5+8+kyfa~8Vm_`&Qf&1?$uoEc2lIZmeVHg0~PYAMri0Se6 zisfa<1zrI21FQgkJAn`w4d(-ql&7Fh^q1h21YD9xhMb<=^2_=%c1k>YpaK0r=t;rC zt=CtVDk}a`Zc&w=rjAAzFb_055%guKXWR05;yaef&C8{>rA7h90VLo8XqA)a5z{mR zl$UZFi*u7y-#5(Rpt#aUb$tcVwXHUL6R&`FK~-0c!y{7ZV&N?eU3VYvo=oj*?jtLb z0%Y5tQ3JY+q#F9ffd-5m?iOx)5tafl#kIoD<11{3}kbno$;nIA;p5?+| zPj_N{G3Qm3Edm$dw4eYE%Yq5$7Rj9jP5AfU_y|@8ao4ld0UH1S002ovPDHLkV1l6! B+-3j( literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/scrawl/scrawl.css b/public/vendor/ueditor/dialogs/scrawl/scrawl.css new file mode 100644 index 0000000..b18430d --- /dev/null +++ b/public/vendor/ueditor/dialogs/scrawl/scrawl.css @@ -0,0 +1,72 @@ +/*common +*/ +body{margin: 0;} +table{width:100%;} +table td{padding:2px 4px;vertical-align: middle;} +a{text-decoration: none;} +em{font-style: normal;} +.border_style1{border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +/*module +*/ +.main{margin: 8px;overflow: hidden;} + +.hot{float:left;height:335px;} +.drawBoard{position: relative; cursor: crosshair;} +.brushBorad{position: absolute;left:0;top:0;z-index: 998;} +.picBoard{border: none;text-align: center;line-height: 300px;cursor: default;} +.operateBar{margin-top:10px;font-size:12px;text-align: center;} +.operateBar span{margin-left: 10px;} + +.drawToolbar{float:right;width:110px;height:300px;overflow: hidden;} +.colorBar{margin-top:10px;font-size: 12px;text-align: center;} +.colorBar a{display:block;width: 10px;height: 10px;border:1px solid #1006F1;border-radius: 3px; box-shadow:2px 2px 5px #d3d6da;opacity: 0.3} +.sectionBar{margin-top:15px;font-size: 12px;text-align: center;} +.sectionBar a{display:inline-block;width:10px;height:12px;color: #888;text-indent: -999px;opacity: 0.3} +.size1{background: url('images/size.png') 1px center no-repeat ;} +.size2{background: url('images/size.png') -10px center no-repeat;} +.size3{background: url('images/size.png') -22px center no-repeat;} +.size4{background: url('images/size.png') -35px center no-repeat;} + +.addImgH{position: relative;} +.addImgH_form{position: absolute;left: 18px;top: -1px;width: 75px;height: 21px;opacity: 0;cursor: pointer;} +.addImgH_form input{width: 100%;} +/*scrawl遮罩层 +*/ +.maskLayerNull{display: none;} +.maskLayer{position: absolute;top:0;left:0;width: 100%; height: 100%;opacity: 0.7; + background-color: #fff;text-align:center;font-weight:bold;line-height:300px;z-index: 1000;} +/*btn state +*/ +.previousStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undoH.png');cursor: pointer;} +.previousStepH .text{color:#888;cursor:pointer;} +.previousStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/undo.png');cursor:default;} +.previousStep .text{color:#ccc;cursor:default;} + +.nextStepH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redoH.png');cursor: pointer;} +.nextStepH .text{color:#888;cursor:pointer;} +.nextStep .icon{display: inline-block;width:16px;height:16px;background-image: url('images/redo.png');cursor:default;} +.nextStep .text{color:#ccc;cursor:default;} + +.clearBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/emptyH.png');cursor: pointer;} +.clearBoardH .text{color:#888;cursor:pointer;} +.clearBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/empty.png');cursor:default;} +.clearBoard .text{color:#ccc;cursor:default;} + +.scaleBoardH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scaleH.png');cursor: pointer;} +.scaleBoardH .text{color:#888;cursor:pointer;} +.scaleBoard .icon{display: inline-block;width:16px;height:16px;background-image: url('images/scale.png');cursor:default;} +.scaleBoard .text{color:#ccc;cursor:default;} + +.removeImgH .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimgH.png');cursor: pointer;} +.removeImgH .text{color:#888;cursor:pointer;} +.removeImg .icon{display: inline-block;width:16px;height:16px;background-image: url('images/delimg.png');cursor:default;} +.removeImg .text{color:#ccc;cursor:default;} + +.addImgH .icon{vertical-align:top;display: inline-block;width:16px;height:16px;background-image: url('images/addimg.png')} +.addImgH .text{color:#888;cursor:pointer;} +/*icon +*/ +.brushIcon{display: inline-block;width:16px;height:16px;background-image: url('images/brush.png')} +.eraserIcon{display: inline-block;width:16px;height:16px;background-image: url('images/eraser.png')} + + diff --git a/public/vendor/ueditor/dialogs/scrawl/scrawl.html b/public/vendor/ueditor/dialogs/scrawl/scrawl.html new file mode 100644 index 0000000..9371abd --- /dev/null +++ b/public/vendor/ueditor/dialogs/scrawl/scrawl.html @@ -0,0 +1,95 @@ + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + 1 + 3 + 5 + 7 +
    +
    + + 1 + 3 + 5 + 7 +
    +
    +
    + + +
    + +
    + +
    +
    +
    + + + + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/scrawl/scrawl.js b/public/vendor/ueditor/dialogs/scrawl/scrawl.js new file mode 100644 index 0000000..e0c005e --- /dev/null +++ b/public/vendor/ueditor/dialogs/scrawl/scrawl.js @@ -0,0 +1,671 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-5-22 + * Time: 上午11:38 + * To change this template use File | Settings | File Templates. + */ +var scrawl = function (options) { + options && this.initOptions(options); +}; +(function () { + var canvas = $G("J_brushBoard"), + context = canvas.getContext('2d'), + drawStep = [], //undo redo存储 + drawStepIndex = 0; //undo redo指针 + + scrawl.prototype = { + isScrawl:false, //是否涂鸦 + brushWidth:-1, //画笔粗细 + brushColor:"", //画笔颜色 + + initOptions:function (options) { + var me = this; + me.originalState(options);//初始页面状态 + me._buildToolbarColor(options.colorList);//动态生成颜色选择集合 + + me._addBoardListener(options.saveNum);//添加画板处理 + me._addOPerateListener(options.saveNum);//添加undo redo clearBoard处理 + me._addColorBarListener();//添加颜色选择处理 + me._addBrushBarListener();//添加画笔大小处理 + me._addEraserBarListener();//添加橡皮大小处理 + me._addAddImgListener();//添加增添背景图片处理 + me._addRemoveImgListenter();//删除背景图片处理 + me._addScalePicListenter();//添加缩放处理 + me._addClearSelectionListenter();//添加清楚选中状态处理 + + me._originalColorSelect(options.drawBrushColor);//初始化颜色选中 + me._originalBrushSelect(options.drawBrushSize);//初始化画笔选中 + me._clearSelection();//清楚选中状态 + }, + + originalState:function (options) { + var me = this; + + me.brushWidth = options.drawBrushSize;//同步画笔粗细 + me.brushColor = options.drawBrushColor;//同步画笔颜色 + + context.lineWidth = me.brushWidth;//初始画笔大小 + context.strokeStyle = me.brushColor;//初始画笔颜色 + context.fillStyle = "transparent";//初始画布背景颜色 + context.lineCap = "round";//去除锯齿 + context.fill(); + }, + _buildToolbarColor:function (colorList) { + var tmp = null, arr = []; + arr.push(""); + for (var i = 0, color; color = colorList[i++];) { + if ((i - 1) % 5 == 0) { + if (i != 1) { + arr.push(""); + } + arr.push(""); + } + tmp = '#' + color; + arr.push(""); + } + arr.push("
    "); + $G("J_colorBar").innerHTML = arr.join(""); + }, + + _addBoardListener:function (saveNum) { + var me = this, + margin = 0, + startX = -1, + startY = -1, + isMouseDown = false, + isMouseMove = false, + isMouseUp = false, + buttonPress = 0, button, flag = ''; + + margin = parseInt(domUtils.getComputedStyle($G("J_wrap"), "margin-left")); + drawStep.push(context.getImageData(0, 0, context.canvas.width, context.canvas.height)); + drawStepIndex += 1; + + domUtils.on(canvas, ["mousedown", "mousemove", "mouseup", "mouseout"], function (e) { + button = browser.webkit ? e.which : buttonPress; + switch (e.type) { + case 'mousedown': + buttonPress = 1; + flag = 1; + isMouseDown = true; + isMouseUp = false; + isMouseMove = false; + me.isScrawl = true; + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + break; + case 'mousemove' : + if (!flag && button == 0) { + return; + } + if (!flag && button) { + startX = e.clientX - margin;//10为外边距总和 + startY = e.clientY - margin; + context.beginPath(); + flag = 1; + } + if (isMouseUp || !isMouseDown) { + return; + } + var endX = e.clientX - margin, + endY = e.clientY - margin; + + context.moveTo(startX, startY); + context.lineTo(endX, endY); + context.stroke(); + startX = endX; + startY = endY; + isMouseMove = true; + break; + case 'mouseup': + buttonPress = 0; + if (!isMouseDown)return; + if (!isMouseMove) { + context.arc(startX, startY, context.lineWidth, 0, Math.PI * 2, false); + context.fillStyle = context.strokeStyle; + context.fill(); + } + context.closePath(); + me._saveOPerate(saveNum); + isMouseDown = false; + isMouseMove = false; + isMouseUp = true; + startX = -1; + startY = -1; + break; + case 'mouseout': + flag = ''; + buttonPress = 0; + if (button == 1) return; + context.closePath(); + break; + } + }); + }, + _addOPerateListener:function (saveNum) { + var me = this; + domUtils.on($G("J_previousStep"), "click", function () { + if (drawStepIndex > 1) { + drawStepIndex -= 1; + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex - 1], 0, 0); + me.btn2Highlight("J_nextStep"); + drawStepIndex == 1 && me.btn2disable("J_previousStep"); + } + }); + domUtils.on($G("J_nextStep"), "click", function () { + if (drawStepIndex > 0 && drawStepIndex < drawStep.length) { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.putImageData(drawStep[drawStepIndex], 0, 0); + drawStepIndex += 1; + me.btn2Highlight("J_previousStep"); + drawStepIndex == drawStep.length && me.btn2disable("J_nextStep"); + } + }); + domUtils.on($G("J_clearBoard"), "click", function () { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + drawStep = []; + me._saveOPerate(saveNum); + drawStepIndex = 1; + me.isScrawl = false; + me.btn2disable("J_previousStep"); + me.btn2disable("J_nextStep"); + me.btn2disable("J_clearBoard"); + }); + }, + _addColorBarListener:function () { + var me = this; + domUtils.on($G("J_colorBar"), "click", function (e) { + var target = me.getTarget(e), + color = target.title; + if (!!color) { + me._addColorSelect(target); + + me.brushColor = color; + context.globalCompositeOperation = "source-over"; + context.lineWidth = me.brushWidth; + context.strokeStyle = color; + } + }); + }, + _addBrushBarListener:function () { + var me = this; + domUtils.on($G("J_brushBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.globalCompositeOperation = "source-over"; + context.lineWidth = parseInt(size); + context.strokeStyle = me.brushColor; + me.brushWidth = context.lineWidth; + } + }); + }, + _addEraserBarListener:function () { + var me = this; + domUtils.on($G("J_eraserBar"), "click", function (e) { + var target = me.getTarget(e), + size = browser.ie ? target.innerText : target.text; + if (!!size) { + me._addBESelect(target); + + context.lineWidth = parseInt(size); + context.globalCompositeOperation = "destination-out"; + context.strokeStyle = "#FFF"; + } + }); + }, + _addAddImgListener:function () { + var file = $G("J_imgTxt"); + if (!window.FileReader) { + $G("J_addImg").style.display = 'none'; + $G("J_removeImg").style.display = 'none'; + $G("J_sacleBoard").style.display = 'none'; + } + domUtils.on(file, "change", function (e) { + var frm = file.parentNode; + addMaskLayer(lang.backgroundUploading); + + var target = e.target || e.srcElement, + reader = new FileReader(); + reader.onload = function(evt){ + var target = evt.target || evt.srcElement; + ue_callback(target.result, 'SUCCESS'); + }; + reader.readAsDataURL(target.files[0]); + frm.reset(); + }); + }, + _addRemoveImgListenter:function () { + var me = this; + domUtils.on($G("J_removeImg"), "click", function () { + $G("J_picBoard").innerHTML = ""; + me.btn2disable("J_removeImg"); + me.btn2disable("J_sacleBoard"); + }); + }, + _addScalePicListenter:function () { + domUtils.on($G("J_sacleBoard"), "click", function () { + var picBoard = $G("J_picBoard"), + scaleCon = $G("J_scaleCon"), + img = picBoard.children[0]; + + if (img) { + if (!scaleCon) { + picBoard.style.cssText = "position:relative;z-index:999;"+picBoard.style.cssText; + img.style.cssText = "position: absolute;top:" + (canvas.height - img.height) / 2 + "px;left:" + (canvas.width - img.width) / 2 + "px;"; + var scale = new ScaleBoy(); + picBoard.appendChild(scale.init()); + scale.startScale(img); + } else { + if (scaleCon.style.visibility == "visible") { + scaleCon.style.visibility = "hidden"; + picBoard.style.position = ""; + picBoard.style.zIndex = ""; + } else { + scaleCon.style.visibility = "visible"; + picBoard.style.cssText += "position:relative;z-index:999"; + } + } + } + }); + }, + _addClearSelectionListenter:function () { + var doc = document; + domUtils.on(doc, 'mousemove', function (e) { + if (browser.ie && browser.version < 11) + doc.selection.clear(); + else + window.getSelection().removeAllRanges(); + }); + }, + _clearSelection:function () { + var list = ["J_operateBar", "J_colorBar", "J_brushBar", "J_eraserBar", "J_picBoard"]; + for (var i = 0, group; group = list[i++];) { + domUtils.unSelectable($G(group)); + } + }, + + _saveOPerate:function (saveNum) { + var me = this; + if (drawStep.length <= saveNum) { + if(drawStepIndex"); + } + scale.innerHTML = arr.join(""); + return scale; + } + + var rect = [ + //[left, top, width, height] + [1, 1, -1, -1], + [0, 1, 0, -1], + [0, 1, 1, -1], + [1, 0, -1, 0], + [0, 0, 1, 0], + [1, 0, -1, 1], + [0, 0, 0, 1], + [0, 0, 1, 1] + ]; + ScaleBoy.prototype = { + init:function () { + _appendStyle(); + var me = this, + scale = me.dom = _getDom(); + + me.scaleMousemove.fp = me; + domUtils.on(scale, 'mousedown', function (e) { + var target = e.target || e.srcElement; + me.start = {x:e.clientX, y:e.clientY}; + if (target.className.indexOf('hand') != -1) { + me.dir = target.className.replace('hand', ''); + } + domUtils.on(document.body, 'mousemove', me.scaleMousemove); + e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; + }); + domUtils.on(document.body, 'mouseup', function (e) { + if (me.start) { + domUtils.un(document.body, 'mousemove', me.scaleMousemove); + if (me.moved) { + me.updateScaledElement({position:{x:scale.style.left, y:scale.style.top}, size:{w:scale.style.width, h:scale.style.height}}); + } + delete me.start; + delete me.moved; + delete me.dir; + } + }); + return scale; + }, + startScale:function (objElement) { + var me = this, Idom = me.dom; + + Idom.style.cssText = 'visibility:visible;top:' + objElement.style.top + ';left:' + objElement.style.left + ';width:' + objElement.offsetWidth + 'px;height:' + objElement.offsetHeight + 'px;'; + me.scalingElement = objElement; + }, + updateScaledElement:function (objStyle) { + var cur = this.scalingElement, + pos = objStyle.position, + size = objStyle.size; + if (pos) { + typeof pos.x != 'undefined' && (cur.style.left = pos.x); + typeof pos.y != 'undefined' && (cur.style.top = pos.y); + } + if (size) { + size.w && (cur.style.width = size.w); + size.h && (cur.style.height = size.h); + } + }, + updateStyleByDir:function (dir, offset) { + var me = this, + dom = me.dom, tmp; + + rect['def'] = [1, 1, 0, 0]; + if (rect[dir][0] != 0) { + tmp = parseInt(dom.style.left) + offset.x; + dom.style.left = me._validScaledProp('left', tmp) + 'px'; + } + if (rect[dir][1] != 0) { + tmp = parseInt(dom.style.top) + offset.y; + dom.style.top = me._validScaledProp('top', tmp) + 'px'; + } + if (rect[dir][2] != 0) { + tmp = dom.clientWidth + rect[dir][2] * offset.x; + dom.style.width = me._validScaledProp('width', tmp) + 'px'; + } + if (rect[dir][3] != 0) { + tmp = dom.clientHeight + rect[dir][3] * offset.y; + dom.style.height = me._validScaledProp('height', tmp) + 'px'; + } + if (dir === 'def') { + me.updateScaledElement({position:{x:dom.style.left, y:dom.style.top}}); + } + }, + scaleMousemove:function (e) { + var me = arguments.callee.fp, + start = me.start, + dir = me.dir || 'def', + offset = {x:e.clientX - start.x, y:e.clientY - start.y}; + + me.updateStyleByDir(dir, offset); + arguments.callee.fp.start = {x:e.clientX, y:e.clientY}; + arguments.callee.fp.moved = 1; + }, + _validScaledProp:function (prop, value) { + var ele = this.dom, + wrap = $G("J_picBoard"); + + value = isNaN(value) ? 0 : value; + switch (prop) { + case 'left': + return value < 0 ? 0 : (value + ele.clientWidth) > wrap.clientWidth ? wrap.clientWidth - ele.clientWidth : value; + case 'top': + return value < 0 ? 0 : (value + ele.clientHeight) > wrap.clientHeight ? wrap.clientHeight - ele.clientHeight : value; + case 'width': + return value <= 0 ? 1 : (value + ele.offsetLeft) > wrap.clientWidth ? wrap.clientWidth - ele.offsetLeft : value; + case 'height': + return value <= 0 ? 1 : (value + ele.offsetTop) > wrap.clientHeight ? wrap.clientHeight - ele.offsetTop : value; + } + } + }; +})(); + +//后台回调 +function ue_callback(url, state) { + var doc = document, + picBorard = $G("J_picBoard"), + img = doc.createElement("img"); + + //图片缩放 + function scale(img, max, oWidth, oHeight) { + var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; + if (ow > max || oh > max) { + if (ow >= oh) { + if (width = ow - max) { + percent = (width / ow).toFixed(2); + img.height = oh - oh * percent; + img.width = max; + } + } else { + if (height = oh - max) { + percent = (height / oh).toFixed(2); + img.width = ow - ow * percent; + img.height = max; + } + } + } + } + + //移除遮罩层 + removeMaskLayer(); + //状态响应 + if (state == "SUCCESS") { + picBorard.innerHTML = ""; + img.onload = function () { + scale(this, 300); + picBorard.appendChild(img); + + var obj = new scrawl(); + obj.btn2Highlight("J_removeImg"); + //trace 2457 + obj.btn2Highlight("J_sacleBoard"); + }; + img.src = url; + } else { + alert(state); + } +} +//去掉遮罩层 +function removeMaskLayer() { + var maskLayer = $G("J_maskLayer"); + maskLayer.className = "maskLayerNull"; + maskLayer.innerHTML = ""; + dialog.buttons[0].setDisabled(false); +} +//添加遮罩层 +function addMaskLayer(html) { + var maskLayer = $G("J_maskLayer"); + dialog.buttons[0].setDisabled(true); + maskLayer.className = "maskLayer"; + maskLayer.innerHTML = html; +} +//执行确认按钮方法 +function exec(scrawlObj) { + if (scrawlObj.isScrawl) { + addMaskLayer(lang.scrawlUpLoading); + var base64 = scrawlObj.getCanvasData(); + if (!!base64) { + var options = { + timeout:100000, + onsuccess:function (xhr) { + if (!scrawlObj.isCancelScrawl) { + var responseObj; + responseObj = eval("(" + xhr.responseText + ")"); + if (responseObj.state == "SUCCESS") { + var imgObj = {}, + url = editor.options.scrawlUrlPrefix + responseObj.url; + imgObj.src = url; + imgObj._src = url; + imgObj.alt = responseObj.original || ''; + imgObj.title = responseObj.title || ''; + editor.execCommand("insertImage", imgObj); + dialog.close(); + } else { + alert(responseObj.state); + } + + } + }, + onerror:function () { + alert(lang.imageError); + dialog.close(); + } + }; + options[editor.getOpt('scrawlFieldName')] = base64; + + var actionUrl = editor.getActionUrl(editor.getOpt('scrawlActionName')), + params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '', + url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + params); + ajax.request(url, options); + } + } else { + addMaskLayer(lang.noScarwl + "   "); + } +} + diff --git a/public/vendor/ueditor/dialogs/searchreplace/searchreplace.html b/public/vendor/ueditor/dialogs/searchreplace/searchreplace.html new file mode 100644 index 0000000..b91f190 --- /dev/null +++ b/public/vendor/ueditor/dialogs/searchreplace/searchreplace.html @@ -0,0 +1,102 @@ + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    :
    + +
    + + +
    +   +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :
    :
    + +
    + + + + +
    +   +
    + +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/searchreplace/searchreplace.js b/public/vendor/ueditor/dialogs/searchreplace/searchreplace.js new file mode 100644 index 0000000..1b52857 --- /dev/null +++ b/public/vendor/ueditor/dialogs/searchreplace/searchreplace.js @@ -0,0 +1,164 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-9-26 + * Time: 下午12:29 + * To change this template use File | Settings | File Templates. + */ + +//清空上次查选的痕迹 +editor.firstForSR = 0; +editor.currentRangeForSR = null; +//给tab注册切换事件 +/** + * tab点击处理事件 + * @param tabHeads + * @param tabBodys + * @param obj + */ +function clickHandler( tabHeads,tabBodys,obj ) { + //head样式更改 + for ( var k = 0, len = tabHeads.length; k < len; k++ ) { + tabHeads[k].className = ""; + } + obj.className = "focus"; + //body显隐 + var tabSrc = obj.getAttribute( "tabSrc" ); + for ( var j = 0, length = tabBodys.length; j < length; j++ ) { + var body = tabBodys[j], + id = body.getAttribute( "id" ); + if ( id != tabSrc ) { + body.style.zIndex = 1; + } else { + body.style.zIndex = 200; + } + } + +} + +/** + * TAB切换 + * @param tabParentId tab的父节点ID或者对象本身 + */ +function switchTab( tabParentId ) { + var tabElements = $G( tabParentId ).children, + tabHeads = tabElements[0].children, + tabBodys = tabElements[1].children; + + for ( var i = 0, length = tabHeads.length; i < length; i++ ) { + var head = tabHeads[i]; + if ( head.className === "focus" )clickHandler(tabHeads,tabBodys, head ); + head.onclick = function () { + clickHandler(tabHeads,tabBodys,this); + } + } +} +$G('searchtab').onmousedown = function(){ + $G('search-msg').innerHTML = ''; + $G('replace-msg').innerHTML = '' +} +//是否区分大小写 +function getMatchCase(id) { + return $G(id).checked ? true : false; +} +//查找 +$G("nextFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + var bk = editor.selection.getRange().createBookmark(); + $G('search-msg').innerHTML = lang.getEnd; + editor.selection.getRange().moveToBookmark(bk).select(); + + + } +}; +$G("nextReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +$G("preFindBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase") + }; + if (!frCommond(obj)) { + $G('search-msg').innerHTML = lang.getStart; + } +}; +$G("preReplaceBtn").onclick = function (txt, dir, mcase) { + var findtxt = $G("findtxt1").value, obj; + if (!findtxt) { + return false; + } + obj = { + searchStr:findtxt, + dir:-1, + casesensitive:getMatchCase("matchCase1") + }; + frCommond(obj); +}; +//替换 +$G("repalceBtn").onclick = function () { + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + dir:1, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt + }; + frCommond(obj); +}; +//全部替换 +$G("repalceAllBtn").onclick = function () { + var findtxt = $G("findtxt1").value.replace(/^\s|\s$/g, ""), obj, + replacetxt = $G("replacetxt").value.replace(/^\s|\s$/g, ""); + if (!findtxt) { + return false; + } + if (findtxt == replacetxt || (!getMatchCase("matchCase1") && findtxt.toLowerCase() == replacetxt.toLowerCase())) { + return false; + } + obj = { + searchStr:findtxt, + casesensitive:getMatchCase("matchCase1"), + replaceStr:replacetxt, + all:true + }; + var num = frCommond(obj); + if (num) { + $G('replace-msg').innerHTML = lang.countMsg.replace("{#count}", num); + } +}; +//执行 +var frCommond = function (obj) { + return editor.execCommand("searchreplace", obj); +}; +switchTab("searchtab"); \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/snapscreen/snapscreen.html b/public/vendor/ueditor/dialogs/snapscreen/snapscreen.html new file mode 100644 index 0000000..cf8209e --- /dev/null +++ b/public/vendor/ueditor/dialogs/snapscreen/snapscreen.html @@ -0,0 +1,58 @@ + + + + + + + + + +
    +

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

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

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

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

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

     欢迎使用UEditor!

    ', + "html":'

    欢迎使用UEditor!

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

    深入理解Range

    UEditor二次开发

    什么是Range

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


    Range能干什么

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

    ', + "html":'

    [键入文档标题]

    [键入文档副标题]

    [标题 1]

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

    [标题 2]

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

    [标题 3]

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


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

    WEB前端开发简历


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

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

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

    目标职位

    WEB前端研发工程师

    学历

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

    工作经验


    ', + "html":'

    [此处键入简历标题]


    【此处插入照片】


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


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


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


    目标职位

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

    学历

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

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

    工作经验

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

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

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

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

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

    掌握技能

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

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

    [此处键入文章标题]

    图文混排方法

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

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


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


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

    ', + "html":'


    [此处键入文章标题]

    图文混排方法

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

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


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

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


    3. 图片居中环绕排版

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



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


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


    占位


    占位


    占位


    占位


    占位



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

    [键入文章标题]

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

    标题 1

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

    标题 2

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的


    ', + 'html':'

    [键入文章标题]

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

    标题 1

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

    标题 2

    来个列表瞅瞅:

    1. 列表 1

    2. 列表 2

      1. 多级列表 1

      2. 多级列表 2

    3. 列表 3

    标题 3

    来个文字图文混排的

    这里可以多行

    右边是图片

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


    ' + } +]; \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/template/images/bg.gif b/public/vendor/ueditor/dialogs/template/images/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c1d10ad1933e02086e8a1b3c807c7d1e57d51db GIT binary patch literal 84 zcmZ?wbhEHb6kw2GXkcLY|NsA)GiMZkvM_*v4u}BBFfeKN|6H_V+Po~-c70vN1t=1+A%PQ29uxwx4>qZSNmg$Vo0WSSm;`Hl{Ww|6H_V+Po~-c6&>|-aSW-r_2!NtU#o%$i-Y0&su(f8j@G?~f`NtGer^@M zrYdIdrP)2_bk~ELr2i)^H(PkDy?QdpIbuVC@BX&$s!L5iRYqm|O_N&n@I;(N<+i7f+;9Z? Phk?P<)z4*}Q$iB}^elK+ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/template/images/pre2.png b/public/vendor/ueditor/dialogs/template/images/pre2.png new file mode 100644 index 0000000000000000000000000000000000000000..5a55672c1f9c4d41d5b5cf52d76bb2b7e7c6b186 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffi(Px;TbZ+h>KHoj_IVWAxIr&Fiabo)3x94Up%M35SEe^0#X9dS;F-9{&3Ljos=IM}2LB&w>e?K^KZ|9tHA z)W~h}eTfo>R&7s^?LYqdE7+t-Dv4L4H{``lKYf(JYIB0^>jrz9Khf>{)o!mlw-~mt za!)h6<9vO9zW09 gTfg@IqFVdQ&MBb@0QJAA?EnA( literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/template/images/pre3.png b/public/vendor/ueditor/dialogs/template/images/pre3.png new file mode 100644 index 0000000000000000000000000000000000000000..d852d29f13bcf743e15df824901ab568123a5aae GIT binary patch literal 485 zcmVTEH>0M4JV5-1QxJ>b$K`ZPMW6ena#ScoGi+aGE}QBI9b2~7O)VofCVgI z0Sj2@r|V8tRYg%8l35(bVHm0eOOPtd@{r7;D7wSi^O|UT7k&b(?|avE4}m2@pKY0^ zX8{XXz`D@ra0V&khG!6NNY4Tm0v50s9T*)L9q3sISir&!aYH5D@CmFqjy=yiBr_3O zu`P1E)qr;HnlAuCCeD2n8T2!dey#!;npC;SpUiv|xYU?E`rwKTr@$H|hS bPXPu1`Qm#ITgjGb00000NkvXXu0mjf8+_C8 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/template/images/pre4.png b/public/vendor/ueditor/dialogs/template/images/pre4.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7bc72ab99fe2c0ed9de1d89fd1c3e82ac3fd43 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^DM0MT!2~3?K3Qf5q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfeL+x;TbZ+5xOQzYV@t-I~V=Oc$U@%9?>h?uf)>*!tD zz9*sh?!vZ&M%HQV5wX`#zTA@g`shVPPoZs!AO#y_jv5_v2~@eKa{lwdV71lh?Z-1u+JRxq;OXk;vd$@?2>^GKp!om* literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/template/template.css b/public/vendor/ueditor/dialogs/template/template.css new file mode 100644 index 0000000..6c1608d --- /dev/null +++ b/public/vendor/ueditor/dialogs/template/template.css @@ -0,0 +1,18 @@ +.wrap{ padding: 5px;font-size: 14px;} +.left{width:425px;float: left;} +.right{width:160px;border: 1px solid #ccc;float: right;padding: 5px;margin-right: 5px;} +.right .pre{height: 332px;overflow-y: auto;} +.right .preitem{border: white 1px solid;margin: 5px 0;padding: 2px 0;} +.right .preitem:hover{background-color: lemonChiffon;cursor: pointer;border: #ccc 1px solid;} +.right .preitem img{display: block;margin: 0 auto;width:100px;} +.clear{clear: both;} +.top{height:26px;line-height: 26px;padding: 5px;} +.bottom{height:320px;width:100%;margin: 0 auto;} +.transparent{ background: url("images/bg.gif") repeat;} +.bottom table tr td{border:1px dashed #ccc;} +#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;} +.border_style1{padding:2px;border: 1px solid #ccc;border-radius: 5px;box-shadow:2px 2px 5px #d3d6da;} +p{margin: 5px 0} +table{clear:both;margin-bottom:10px;border-collapse:collapse;word-break:break-all;} +li{clear:both} +ol{padding-left:40px; } \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/template/template.html b/public/vendor/ueditor/dialogs/template/template.html new file mode 100644 index 0000000..d9903a4 --- /dev/null +++ b/public/vendor/ueditor/dialogs/template/template.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    + + + + diff --git a/public/vendor/ueditor/dialogs/template/template.js b/public/vendor/ueditor/dialogs/template/template.js new file mode 100644 index 0000000..80a334b --- /dev/null +++ b/public/vendor/ueditor/dialogs/template/template.js @@ -0,0 +1,53 @@ +/** + * Created with JetBrains PhpStorm. + * User: xuheng + * Date: 12-8-8 + * Time: 下午2:09 + * To change this template use File | Settings | File Templates. + */ +(function () { + var me = editor, + preview = $G( "preview" ), + preitem = $G( "preitem" ), + tmps = templates, + currentTmp; + var initPre = function () { + var str = ""; + for ( var i = 0, tmp; tmp = tmps[i++]; ) { + str += '
    '; + } + preitem.innerHTML = str; + }; + var pre = function ( n ) { + var tmp = tmps[n - 1]; + currentTmp = tmp; + clearItem(); + domUtils.setStyles( preitem.childNodes[n - 1], { + "background-color":"lemonChiffon", + "border":"#ccc 1px solid" + } ); + preview.innerHTML = tmp.preHtml ? tmp.preHtml : ""; + }; + var clearItem = function () { + var items = preitem.children; + for ( var i = 0, item; item = items[i++]; ) { + domUtils.setStyles( item, { + "background-color":"", + "border":"white 1px solid" + } ); + } + }; + dialog.onok = function () { + if ( !$G( "issave" ).checked ){ + me.execCommand( "cleardoc" ); + } + var obj = { + html:currentTmp && currentTmp.html + }; + me.execCommand( "template", obj ); + }; + initPre(); + window.pre = pre; + pre(2) + +})(); \ No newline at end of file diff --git a/public/vendor/ueditor/dialogs/video/images/bg.png b/public/vendor/ueditor/dialogs/video/images/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..580be0a01dff4c70c72f78a3f40186660ee8eee0 GIT binary patch literal 2810 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 Bm*4;Z literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/video/images/file-icons.gif b/public/vendor/ueditor/dialogs/video/images/file-icons.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8c02c27e242f0584fc6b214f35b4f6d8caec332 GIT binary patch literal 20097 zcmV)9K*hgDNk%w1VPFJC0QUd@00030|NpkOw*L3}_SNP5-}3$M`OUY=(!|p0LOE?C$rqwz}2U+Gu^pN>_$YQCMblp@ERXdWW)( zn7V6yv7VozRdB1DqqHtim^WLcK4YydM}B8$YM`&n+TiO$Zndqly0^>d#n0a4>-9-| z!=t|9*yZ=o+UViu@6FKE3Nm86((T3B@z3G+-2Wt~ij&Q_AwsmJQJ!_gO1k|1cb zFnq}~gVHu|t!1Fvd9C4ovgWb6!|e3@>hAL9>h9v^>XVh1yS%+|s^NjX^oF_Oj=kfg z&hoF&?TyLylFIg*&GnbX=d#-RL7m&K+WErb_>RWowYt1Ty62$P>E7Yu?(*~2+S~Q| z`%l;L$@luU@bc>X{Q3U=vbMJJ_V()T?&9X=)YaAA`S-;3=hOJ@gNujM+tlXj=JNOP zQL;8UlO0~7N?@2!CvXo(eKk~#L9)KCcdcTk%b0MfSDVI$B_|~I`t*gnWst;j-|p6` zx1s0v+v)J+`u_LA;H%o~%%akIr`3Sb=D)Ahh`8I6?)K)IuyfAom*ncW{QmCv`o#SF z;JdrE+}zgw{`t1Hve3@9%*K%X_|x$3=;`6D_xAAi>bBm_mipLl`r@AU-k$#IwEpb8 z_`x&!%T@W;h40df`rMNC+Lr9mk^0`7{o|ze-lF~Htn}cl`{uLx=)AM5nCZP%*{@OP z!*TP^diBwO^46C2+M4#-p7pLG-nL}(q7k@{LC&F8`L|)~=HKOp6Hz!BlV>t=O(d$F zj`ro!m2_A5p=0LBw)2Kjys@msy0z|YMe1KY`swB9+t~24tLTV;?V6PBb8w#<8`vu= z@j^nUMMT|OTgX*a@5RL4)z$p<_3!HH_VV)n{{H&<`u6tr^78WT?(XX9>gML=;^N}6 zva)k?bN~PUA^8LW00930EC2ui0AK`0000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*?Ryg^4j;i4-ByL0Y?m*) z#cthdWvaC4(ydbG%_yL?>({Vj%bwl39|$g(bL-yCySMMPAyU`?^kPAZc>sI)_?fWWTQf4bo`c2zinT5EY1FA(l`17#w5|8>ZMA~7QGmVs`19-E z&%gf#410KhTSv4NXy9zN4cOO#3?7&uM-4`Z;B6jBXyI!Q5_sW-8A7^m{Q8xrjTB+ z0SF~R2r8$2dTJ4(rv}<7o~;W1`YKK~__M_eBJ|^93L$u4!LPttfB^)^g&>iT`dAPE zbkRwdWRrdTA?>u%_TgLxlv#-xGG4kT=C|N}J6|%hD1*$I6{QL1y6nRF1|J_}aL=8N zwrj7wa?)w%g7)0&Z=7>}u;6J= z4xwT~2G1oe9g@#R>on9*Pit*G`^3@Fcg*yn{r228^)wlj!;9uR|_qhthA%Jrmpy%MH1p~${f%#jU0|gkt z!c7o@FN0qNOz?qx2(E$_+#d!BSU?f>FM}m~;0Zx8Bj5!OcU6|cOrsjt$i_ChQ44Pn(6a9LhEKWij(EHy9O-92{BZ>lfDEJ{2T906 z4w4b;k{=)M*MW%C;E|Awq$DRvNlCIGk@Kq`BPTMBPI~f_pbVubL3s{LF7g7_lL!h{ z$;wu`@|Cc3WeZHHNmNcm9k|S;E_cbxUhdKzwCrOlBa(z-8uOUQOr|oCxq`PLaD@;t zq%@~VNJIv6lMq>^Hn*9~W?s{e#N?(pwdqYbDYBN0#0aTMFoZW?00SKG5hPN8g?HNX zogUB`uOQ+7fqU9>1H{td0_y2c41B;?3lX9PQbCF$8c}&lY}y~3NKro|DT*54g90sL z#qfFbqaY0_NV#Y}FM2DC>YI--GGGidj*bE_jj2p$O4FL!bORL_0tlXCk9(w3BCxSX z9*0WQ4aD&SbG$$uw}J>lIQ6MejjB|q3ROhtzzSH+YF2gd0uCf~sSc?D4aQ2=vYPd* zXf10Ee!zsby49^exWNs+Dv@zem<@qkvjOn;;YI^&i6%>mTf-TFo7|Sv9^iWCkr4Bv4}@Z z;u4#f0viOuf9H6Q%K#NW_OYpqXDnl!>XfHGWvXv?%v(fspr%$3g(y4`3LNKlA!1Fd zl9#O3AJ^2zJ7w{a8DiJITKUR;ZNgx;yn`mRz{rV>teD5_SQI#!rcefRW<$&7HhWh8 z9ZleYoaa2}CRpJGYIZJk_dMG(qxq=KZOCqUOz5ZjxW+k+vi)-Gkk#_}(Mj<0Ow%l7 zVm=zul9nl@7d>T#EZ_q}2JH@aIKN|csfU;9-i=@a0GPl8 zAfXT;>i0DLO$9^++(ZHw*uZv(VuBY85o9dm+0c%*w5Lt&WsDCl-pRJMo87HjSU7zc z=EH_N{9+TE``qS6u?a+=tYs~l*$GkChtW-MdaGN-I5vS+22BX(Jk{U*4uDjxL-4Aa zpu|BI#V10s;zhfdAvKr*Sqbi(iBmiPW4$=W$6AAfm-yZd@9D!EGLCNGRpWR6ML9K8 zPK|MRoWvl<@yHp10v0gVIX4f$Vl}>Vic9w8BaS(XXTA{4a#rJ;z4+0UzF9ca`RP2k zbI4nqO(nEeSjG$96g7Bo~f?o_r1{NDn1Dk6X$^b}8> z=m<%I)w@pdu5X?11phkSMJ#lOSN-oxzm{%#*0G z{m>*OO(y{Pn7J;{mJ4e*1R2VRzVxS0{pwr)`qfgRXmae#0_ws69xf0=`1Gq8d);2bRI zf-M*TFDQdCID;%$10(ox8)SeecsdACa@`Pw&Jl#&FoZ=I07PhnLa2m6I1V`ob352> zInq-;cn~$m0$AuASjYle$b|v0g<#l)UbuxQ@Pu`@Zc?~tRcH`KmvjNJbZ!WT?BE=s z<#bS2XEBh5RH#}?(1(6#9e$_;&hdu<5Qu;nh)H0EXNYe@r&}Ta*miLTa32V8l1K=M zpooMQg$LME@HP;7M~Hz4ihVeUf>?;5*oTRjZkmXKok$R$IEto7ilqpPqIim_cw(zK zg&))ql-GJ&zy52Sz| zyccZFp)|xcQ3M7p#upu}Fbut*3%bAyzyKe#@C?r<7xFld^jMGfc#rs)kMhWU3gLZX z6DH;tkOCQg80G=mz+vkrfC?#q8xRLbMRE3n52fM|{ro2k(R&T`d*CR1<7i-@Pz=ETzzgfxj_h#@!axh^xP0)~5Z|G3 z@EM=-IiK+<7yOtI$PgO;2p_~Skp5YI1$mI<77+sQe;0Y6?Y9Bz_5v^Pi(JqF8gLKx z&;b+45cYva1&W{=x&iZZaS>Ue1@Q!HFrp(`8YOB9B$}csx}qxz2G=kRFdCyUdJSN} zq9ghQ(NqXJS_sauqdm%_0kES&Dx^QEqnFr|CD;faY7Y{rf;MQBG>DW(NrOenlsE8J zSQ=Mz1(8e&qCfZzVEPTt5vF81res>CW*VkliIEPuq)ke5VQ7|P=!I!Hr*_(wZ2FJ{ z_n~vS4sz&OcUhNs`B~~<0*Qp2ZtA56F_kpf%rU-nQdfZze~Gy%$3j1+Ks#Tkv$NPE!P5qzKz0brfiiJje8L;x0i z1Lj1O5DT@y3%o!Jw&1PkNuKNZuCvgd4Dp`yS+DkLulD&6{#aqQ@SpxFegTS*>0$x0 zR!4=~wKS&!F3`6wKyiK>xPKb}ed`>4Yq))DX7s0^BEX<{ z`?P7x5bCfFl)DbjQMs6Vxs#0Orw|3jOWjnHHd$IzdtGyb#y!yJcE4;#bw`L2u z$lIB|y1cvky4dRjw7a;{YrGTxTD|{Ztk`7(wE_V(Vge8_0f3O4fB<`t00596d(au3 zB7q7WpnKfft=+htNF=V}_%x&N3hBs>^3f%>pq}r#d}!0a4J@zSmkjqh!4!OP`TBhN zSz-P8ul^da0}2rZim)O)!ltGHmQ?~MTmk}s2LkW{5WofEI}jEd!X#Y72de=L>#&s< zu@j3BPY{Z7(T70{n?wwoK9B<}*^=3i#Mp2RIiQ-M*s~6?yFN;)ph|J0ip4wXV+HGz zn}D=n%%B|L0U5xVQ_HmkhsJ5FwG;=o9bm8uo5K$)#$-&f;~)-rEDp|*$9%lUeB8%= zoX6wP1V&KEhHS`1&;&RC5Cbi+1&&O|WxTg4Fv*i_9h9sB8du2_cgbc3#|!%b4LiqO zRmYN>xdGt0n@e$(+qs^r4sTqraSX~j46&me$*GzHxSY$@k;^&Y9J(9;yu8c29BBwk z0dY_Qv^>3NySfNL#lCyRLfgB(%f+57$2$zMJ)96p5X={c%f9T*z}(B-jLXDa&9Xel z*o+SpyUo80&b-{t?)=W={K~NW$)SAB606R|+Mp1ioBn{lmbVZ6FniTnzr2o4bsP;uiX|O8_dD}>A~w~ z!!BL09I8=6Fw-9YP}4);z7%N>AV$M4-P0y4AZ(DrD%`>laCryu1Skm?AgRqO-PK%8&8+5=LcO zH+;e=yuxS=!)yD;dcD_tt=EHm$bel0g%tyYP1tq~0%^SvC~(P)-Pn%(*puAJa7@=I zeAtPt5R;3_n!VYay$-HC*8(EcmW|h}E6=8V+Ne#=Jb(kN-P)}!c2P&zAPdQ;>C9ez z+h0x3uuR!1%)%~A+KZan!Y$n8JlUaL*S_7p;>*s%-Q4e7+`E0;mF?RvT)mXX&$Nq_$%o#s={=0(@pe9q_UK87UXF7D~9 z3+kah+@mhSrtSeZjp_(--M5+DTVQ!p&If=nBfQ@0zW(dL?&}4S&6d2;QMI{DII>mknZZf?(E*~ z=^o*1V*w~W?;HV~+btkAumuF?0Y0(-xkqss z5PHU{aV4-TLvV5SkOBoU1oc1;+-V+CTo}|4u2+YWGeM20!BpukZ~2{xa_H7g&1{Kk+$U@f5)U`oQ&X01zDB3?xWU zV8MbM_UM7r&> zX_8^ehb&iO)ELtz$B;FJ7CeblqRy5*f5r?-u)|ZRQKe3OLjlWGtXZ*S;o3Dz(w9qR z4kcUED4Yx$HmqH{XAi$O{9cHK*_3QevuBY~ya$4=N4s}R<~6!EgPwc+{*Dz)lQ2%h z8SwdCnu5a?2oU`FgRq6e2M=2yEzoDd^an^GQmi&%+O-7?BUG;jWbd{AX%LWBujX>w z^nw%~`RoZmj@&ln$V)9}&b*Z=QmF#et9R#47C5uCZ|B}U*LU#Y#pimq7+I}gwbZXi z&whP+_wUiek6)jDePoOOAuD#vzkgc-B!(Da3KRwy1QS$nK?W0S1sZKU(B>Fv^ovP= zdN9y%Lk>Ii@Iw$o+%OM&6kALH3ns!)L>60gal;EtgvkjhYOE0%WNysSMjm_gvBxB? z5i*->t|?N;Bz~;X2@7FbaYHLYj1t5tKdjQjDdE5%G5wx=@k=nZ$LMuJoB_uLpaG~)6Fn*VrjBC{{-~V4eL?=lddum1r!boPHFO= zMjdrCMzK=Z0+12>v4JzsI0#_`59BaajyF;ZLA4J~JvEOMWLwoAI9xRqwN+Q;z*bZJ zk%989_4ZqE!OhRS|NaZm z76J`ya9wtRc`(8WE1a|=4D+z}UVQV_cVB+{z4w9=yG${Idi^!{V1)AkSOA}#fa2kY zlSwAxi6OT5VvH@8B1j>PJQ7JMGKPZ5c{wWc$_`P+04+Uq(C1~CVRkv@m}h=DpRgD; z)Y3LdTvTVC5B0gw7d3$PXrz&Lb7((<29)V8cXk>~Oq-tn`pi5Owc5iUy7u~Ou)`J` zY!K_=V$w=6*kNq8+ZKC=4x#o*(|Q81=Tis(Ndb}S8j_95d z4N#U&8r9)l>RHiaMuA>VwV0VjirHgj9vt2Q!@d63yZggR z5@=-S6%C;?;O#)3^Q31zcff=n+<*lzpn(kh`A>ibRGO{x=2WLU<>^X|_fwz(wT*rX>Q67>iJ}q@ipf)6H-$&Vc1D$pKOi0$3pG447U2t9 z-KrV9`c<%oRjgnwLIBhVyrKRi1uwviKNc{73A{inSBX`wAdrQ*CNftk@W5QP0Ju16 zVXj;teP>?IBD?!3G1n?QL0Uc2QI1((q zCP*&>n;QbOVj$8O5SYSeROtha`Me__LB%U(v5I>j1RNY79qfoO0Y+>_c3jxFJH8%M zo66%0T;dZvj-rmE2UR10fvaEt7;BTk%7h~Xpo`SAs-LDu#xIOP%Udo(8qV-#FsDJx zV@-ct{ zC|1#mm82=E0ohf60u~^EKnND#9nEsKv!4xZW&p8;EsQp`rX{uNP`eb>`llEIlBI%X z`)XJNgBjBR0d93k-g^92*SqF*uYLV%VE5X`PGS>=f_-dcCwte)^#~D?@a$(}0~^tv zHngpMZEQnZ1~u?N90cHx6u2b?{t!SMJWvA}WP7~xD(`vmQ9njBA`J&iTAA!RMgZQ0Uvn7>t3)F^VZY=Vy;;5W3K)@R}TCJkU8=cPEr(eK<2Ot0y*TR;zNXs5) z)F<-Zn*6saUyI9QK0c8@^-uUy4A8F{U9CnCtW7W5VBoISxs(^KmHm3y^V;PeDVVWi ze|u#!yCaYwLhpV5|9jvEU--iBzygE>3F<&XNPiwa5g?)4T*fsXJ1dw{#SyFzlHhj4(bRxpN-2#;t8JW}d3KrlQG5P<_Q z0S9OR319&KQeZstKpn|b4`;Z%$jdyp=E#9t`mfPy9qs3`J1H9-p`dbvVUSls0Ko2W&t^ zSA0cSe8p>c10xZVrx=o1G{soF2I$+h>GQP<(18wkgh!YTQ9MRa2XvT5YK$-YTN7X7f&F_%7Kj0F{KmQ&z-9bE13W+^NI>{g z$9sD~Y{bM3)I{F7#0=a(n}a|Q%sCk3IU20N6#Rh|G&(#AfE-*3 zNQlD!Bg{yR+(?e>NRFJsdMJRnyTU~)fDSkSlq`n@_(JfAhQZ^EyaBZrh=9af!v?rX zoODAtbiCB^!^*oupRB_>>_a;YN~8Qqq@27u6vUW7hI28*LwqeqoXSQlhGZ~?TBF2U zW4C%hMz8!zPprBhyMRsvOSAk+Qj7_8cn7v*OIdhJS$K!IY)iVVOS^2#c4&tUsKsj# z00F?o4am#8REJ)az7;x5E6{<>?AsD%HppMc!#(J>Fb}T^u zBN|TP98TFQluPV{Ot=J4kidVu$AAm~5p>8gXgY%&x`YfPhEzK0>@uf|$ce1TpHPh- zU;^_zPxMSr^;}Q(Y)|)O0x)1Z4+sE}BuTk506sv;csKx<0K>vNyu?#OoE%UBeZy;s z!&8d9W)Mm`Tu`BOh6Q!dqlCOZY|v(iPzWVT&0|WKaLT6~z1BiRTA)f2{RLt0g=y%A zthBXhfWF>*QQr_tpWr0{NJo0ixU_@`bw~#u<&2m;6C(#|w7*Z3j-(-@*7 z-~lTThiy31$2?7)@kH5t4Keiq6fn~bYyuWw0dnLu+Emjug~uKUf)8MaIaM|&MF-gX z%{75hN;M4`ZK~3YgbehAP3Y84<%Cb@gh2qy=WNGM3_T{Z(KMR$(1hVjWg0Sb`{s0=D}A`W#97gd_vl&jZ-c{%pya zEP)Jg0Bzk?Ztd2aGzG>R9rL)*X4u0Eg-{GFS9CpB1+7DJUDpVG*IFRgcfHVgJy#C> z2xJ%#e&yHJO2iVK%3DANa8S_~=m%UfhGRg6)9zS&|jmcW8$=P}0p%(l}^`cPLpY#WgAoOF`Iz_OhG%!5>C&ght@C zd&pUxjW>Ik1fnh4qWvu|eYs<_hYW~=7I1+r<rZbAh6mX3W6rkhS8K-LcPE4 zbBz%4Af}B2kc!$sbpf?i0k&n^W8;B94T3IZM@&7`0~9%JNC!IgHF#JDaySQacs)rq z)JlC(i6yqP9E42Z1W#>T$NdCL@XAuHTUZrHSsjBiD9E2gU`5tsMT2Fv0JsxL+r3@fEdT@H2b4qr0;pF1Y>5VxJb(-6R^#Q? zZw*(TL^XPCUgv#Y=#5_Kh2DJih<)u>e=U&G8_|GuL}73SS~FOL^#FxEh888Shqc&y zJ6sP$uJl#kdc#;42y+#loI1%=MbTEf4?FJt1VITfsAP!<4Mq03~Vd@y$4iaG!wgR+mffZPRv|U?d z;{myy+Y`yY+eAP`b%%vhHgi}9d4Pw&Rkp!pl=p>S`eI-I+B;+Fz=TY2TsVf~Oo)Vr z)5nUfFI2tU>eSpaJIHzq0EO(5X$)P_?K#r@IjMsp`I1=G^;H(Df=7?)?Q`C}v|mW@P3CtHeqHs5OKgg7Rfp^hIOzQ)BiqjT*f%Z9XIU z?Fjm9%jRmXcbJC#EoZ#U1}^ZJY=A2wDH1Noh5@e2m}NHuuCF|J13)l@L9hqsxdcg= zV1Vv~3mAk)kc14*gy-R4qjjF7b&~YGfC~74GIe186t)K#SYf7hVS9*S8MX(i&9C%L z;16(zZE#?F5Mq>0=^iHHD~>ND?x2tAQj4vZ0Fr*a zFQx~2xCg-nPUT@^YNifrHW@ZPsyOacO{fP=h+|Ixg@LnUZ_Hyo_Oi_#x<78^2O8vt z)Zo@=|dd)_8eZywqX&KnhjEaH_*Q8I4`PNcVgNs4B*uU@cmNcj z$mgkPo5pEhBCzS%X^`$|A_@W?hyZp7Twv;3awrF6D&r1sY8=%^N|`@UpyTZ#rY zPl&Hih+|IB>iJS!PVj_C;Octw>dVdCwGKM5u0OKoY5F4M%N^Y#KeM)8?i=`DLl0Q!$xewHh=+000iIzemH6_@QW9KYy|Lt0jTWC z#_VgkWuKUa&JJ`zKi_S^-l!yP(>86?R_zyH?LByH*mhXm&TZR`p3ew^NX|B0UlI5%^r9uA*&G^+M+U8_fd8Q@dg>R? zB2D0gOc(?!qVXEv1ce_2#>Hy?Ot_**;M7h9g-Re3Ga~ZKH9-^{Ix|}GZqFhtBLlS7 zG9&*^wq^qJ8~7@Z>%Q)5y~bpk&+bP{cA2Ch;2aOfk?&%(PP=-+ddyYL><1_VBUw~96+31cFENXQudUZpH z_26j)N9Z41mjq1^9$udWUpM1mj{_Z$0m%2AW50(R5GdaXFd3ME3;?Qn`0p8Qr)md> zaR_~F-*yIneJu)tE5ZQ(&qo2;x9|%;_jETNePV%)3Z8cd_IQs6aA1dQHy(OehlkpC zrN;fbzcGTRdn<~BPVj`~q=bg|R8Wn0Iac^9>V(F{__x<0R5f`$PWg}TqL7z#l21A^ zaDTLJI*1&zL zV4wg>lqOfQG%#R5JwEw5@EOvii4|NraYfr#j{$=QLK`?JYV>GP2HT!7<*D!~!fDN> zQmtzBD%Px8w@#e~^(!)BVu=YWD-0MgTC{$#<>mG*+_-OVK{M7*KtB#2Kx8m>>@Q$x zUk3{qX!tPV#EKXHD=s+rY2kYH3Nx;3`SL(}0=}wq=h-u~(9qnC{%ra*>d)`mjkqT5 zHSE{dMznjETHWK^|0oZ%k{BNS+&adgNC zaPRv)8RGA0nIZnXjC)Pa-vICad-QrTbRWbH1c<=<`hzriG0yvY0SfrtAg)y7iYo)& z6Tmq1?WR}|hH0k*3IKk`LJJwLumTGms-PfvH#8w&04O+!-D32_0}eYDfEXYXns~AakwqGLB$7mWVu?WYFey+bMuJj_j}I#LgFs-6K?WIP zc=;umVWx5a2AOG?$wUAaV5t}vRsNXR4;FmEWtU;vDJGeDo?&JhUN0DyyQAh}VP>)F}wbar}FVzzOA2soCQxiM!RL=kx02S0wL?LBV zJ@GL0j8pVU#TBl(>Uxz|4u&m zFv0kAvYc{?I6_Im4Le+Lb=O@sVRzA;hrtTyokxLrGQfb3bS{WI^1v3%$E{)a<)8xW8*3;P-G`L|4>ZZ4ceUc>FNOIE2rvX?pOMzi(}; zi;1B`+Tuv0OhiH;gNPE5KJh6y7HLY>S`6N{q&LQW$#G|ZToue91~Hi73rxTdVhs03 zI3-STgtSwisPIT6TmcAba03|3aD~hbrcjMSlo3vOs8livQc+-nq+&^_gm|F;10|8& zN;)-w+THFBzLbL;w4ep$MS~Q;v&RL7N4(+{r2!1MhcRaLjA%HhdDDyDRif96ZBhlB z*qjPCugT4Aesg-zGbdH5r$k;@3~h z&<`q*Kmq)n_1k8<3^C*l@>RCIz9N76(9>ao{N_)&dV%90=lNk}q;fpU}}MJnnc zhd%tF4vIv=VI=8T#KdV%id)@(1JEhf{~h-OB4yQ0q`r@IH8HQQDU)1;zS)S(MP)FRUm;pEo$$i z+98yp6sE}RX8#b|*&0T)oh~h?LoMnq1ftZZeyyrwTL&=EHqi+gK?rus+uiooP`}+s zaD~f}IgDTg3i*IO0uVb+>5`Ydl*4nSJKd&4!xYs$W-_z?yWPoX1H9FIFS^sM?sczM zow<>(JKxDY`|h{i`0cMTxKPUgn{U7ct}BBv<7=oaINE&3*+t)FVw*Q>Zoi=!5Y@2q&`1MJhh$9^Z0*bSx zEfaEMET`q{X@MA_a*=yH^0}f0Pvy)pxbOhDT&aD*!a z!V%uZ{db}N`;WN)89s!E)l0fugCZQlh;dv;d0dLEn8@kDC)^msrCcH;f*~+MCX5`+ z$y^6bS!LYR$mIhKgrEpE0SJm94Zy$#eBcKXl|JkPKfFO43_%vaz}*>!QsIsY=HSSg zgE;h{4~j!MR>vs zLq3#|J8Yo}+MVLbA1T$~Vts-oXo6uS$tQqpjNn5gRAco^aXT?d9H6 ze1IVIUUF5N@FmtAU>kH9-|>N$Da7KpT^Dv4z^bguWN^SgOds=HpD+I6d1c>VAOkSO z+xE;G_=%srk>3Y+z&@bgfE~m7aiAG4#``Hm!BwL*(qBR#!XbPkG=QUMfa5ooqdA@< zI)0;vaf1MI0|BPvHzFVcDWFI(U;t?UKqfqbKJFtwPJ$v#AV4z06iy+`P2tRa1&S1b zLN262GC`Yl#|N4q4Xgl@NhAq2p$5Q!MsDN~;6M-1U=sbAKnU8Xyo?xrpdNg~5Bgvb zs^BGvgEtsqrwxrjY+Vj+fY+tqNuHz?QeyxVni2Fzo$Vx(Rm0XW89J=PIS?foE}}MO z;%Fg8B>a_QsZmZ2Wz2oO{O0T6&BmO?9}f*j;pA>Khfhyf%i;uU(D z1r&kg)n(*$K{=4+ADSgvs-+#Ur3IJ)>s{j}=2q-6N)cp)vVo$qiK0SyfCmJC0s!Aj zSes->2JyAx@gd(dwSp`f(=iGEkE%EWHQ>UmM1wU%gKAFGxdEeV`l2v`g|Gla_tgS2 zCZjU$7c=s~GvZS;P9xGiWnx@o0ttjbRilH|Upa>3A&3TZGABGnr#dFWya=GZs2n`X zYJdsmKm|;p37)`v-lslncb6~fQR;Ea5Bc)d8mh;!#e20Kx$2dqUb<2Wn2np01ziOE(R!2WhY>Q;1OO{ZUQAF zmM3(jQ~rRF9x0M0X_8X^0S}BN0hGgD>H!j{+FB+S5+Gs#z$JysrH-&(<2fmmmYNZm zfgAWimDYm-6u}YHsNN|=VXD$$I*Jl7W~9(*EIH=0y@9k%W@TFDWv-$f6yIiomuG$^ zCWPhy=z^)7rfN27c=h6IMk>3-CR7lk_RxZD77M-Qrfxz5ID7zaLZiP;5{;fAQXQum zCTBOY)HGbsG`wo7DnhK%7_HVSjZL7uNCUk{gSFudCabb8 z>w3bUO$pg|hNlTOfwYPs4=ihb>L(0*z!Lpu8QLHYMeBn4Ab6I;xT1qMq^r7WnR-rW zi5iB5ZXL32=!R_n0JehX2E;&z3<0u|C_-Mw+TAO78YMc6r`EVbIe;fTEG#@!LwL&Q zmeQz=7H48;S{%KhKtuwh{irAKs3j2Tj53BAj4a8PtQvHIlY;3FJj5Ct!5t)4?F@im zX6be!4rbiJm0p1v>_EzrUdQ zSF?Qu7w7|;PG;@+X>$Q;A86()o@Of)>hc|`J&;2#n2KpmlcP3jYf7rzz89rF1u_H! zZDK0-d>^MSqo;m=3G}9bjcQbuDpaZ!s>+|LA_O7;o>G(7bRg3$m@7kfY(*Py>37Yu)qnN01I5Jc={`QQdymyu8Qu1c$R}XXw5o& zZ;ZGDJ18Z1LhQSe4*I5V`XXAJMr;7^QIdEoT@4#W+D=kNON?;dEuMw`3-YlSAE@rvggbV!HX>pnE^3Ow%#xPbJkXIh19?q2V` zzTG+KLph*>_qszmpo2TC13RFD_JSumIIQ_Jl??6I((NeTOVZ#w{*+_OGc_oGCCKxemhXE#AVTO1_TWrlZi4FlUc z^g~CqEGh%7l(*YjG)9Xwe8;zZcQi>S1Tqi{IjMAh!8Cuvv`h zt~iUg_=L2An9i#(0ce@CFds%b?}!-`K>@IY0)#;s zs6iMo!K;)`7!StlSvS=3^LB4Kr_b=!J_Z+{0(gt}9VmkmoA=v7GjQ7UNfc|GG>6cNeRlaF=R<$KOuZD1!e3BCr%RT#$1@`-D&X zKU%owN_d6?+=dTYhY!byllZqs^;Lg(iErRJC&o>wxQnklyTbsC-++u$|D!?*1Va|V z4w%`0c)6F0Lyz0FIoP;fQ)BH8Ji!w=jvG0WAGwk<&4x6&599z0@PJlN`MD#;+UYw# z@I#E~JIC92ncMl9PjF&H$=bBd+r+sXc>vXc0F|#kHIEDr}N~d&IyR}~fcBW&tv){H0TDJ$l9)vg}?7`)K|G4IdxaOOmqYH)^*MC8RtLG68wL+Z z2!`f(9KewBE58bOox{Tb3;Z}^gM5mx)dhGtI%NMkjCtvM`33aZ{@%36BL*b|UI5$? z%2Q<|0Dj;bx^sJh7mR^G+(FDIh8Y-vOW2Me9-k=ygarl-8aQxZL`;AHT>dq5_z9ll9h}8+dTx!*eIPb{u)~ zM8tC=VhtE}04qnRS3hE;2_QoO_Av7P9sHi|;KPq6?_GQVL#(5l#t=t`4DRCT*SCMa zK0khMI&|RUfeRfXutJ6B{%Nl?dg1|RocYFi5W)!UizmVgA54dz`T`ioKm-Hep&|@S z&;f<{>NCNG6jfZ2MHpCEVTBW9Ji)~b_Xq%m4rNmi{~UHMxUU>`&Vgs0bMQOz$P3uf zv7#cJd=knirJRz=C@Wgcz=k}uD3wk)*#yim#T=8&GRXu5ge(s=8hgN~D0Aw{Kv%s@gRhSXehHj8>FqN+y4FhisO_UyBcKLd4O2O|{1GOn6# z+NldFMD1dUqLerl)l^X}swkz7V#=xKJ`iA^s&L^-t6RBB>nm$05vvum%;NPcwsw6h z%V~V+i`izKy=#}h3`EAT!xB>rvTPxfj55nG(~PsvItwk!EfYN#HBQ;1$Xs;YwWzk+ zfZOem-h8W!`y{|GNPAIS)Mj81~NLhxJo$-HLv=7-NiE zU_rh;VE7p1kVPJuewjp#LTqSP8*a; z)by}Tg^+;r2#V@FEeu8_wWAM8ElKHufs81EB17MH*8(7zzyY7e9dFzWP512kq`xf) zya9wpf=MR8Jk3ee&`JGC)zVEreN|SCTB@lmx!{5idQyqT*xGru<_}9i5tgd9+h{_Mv&7{q^OapZ@ySH!hp}_0RvBMC@NbU;@(;!3=h=>}*Fr2~^+$8Q4GvQcN`M zQpkJaqp*@)5Q8H7fEAkXw2HB8K@HMR%^u{yc$kA`={ScsP|-l0m5m}ikl_qx__Go@ z5QhwG0t{ThG!`rnM_@Azk9@R1cd&yW?pQ}Wa@fQKehr4^1E2UJ7@JJ24U1XaMBBV~ zk+{9<3T8OM9S4w5>d@*Sksl(tmZbk*-dY5^BVixU;n;Y%>W88It4Qr!Vu_0cj6F&R}6D^f*n79bkix`2Z`PDDR zs!)YA+|-P%z=0Wx|G-9{widlb=)xM@@LxZ~feByG6uboa6sd-83WsbYBd5?|4}TcM zAKtJcO$U^+{`Hi+V$1N}LXLZ&f(sl_MVcJKjk}uC8hq_51O(e-AO95@%1Df35L;wm zDmD)L;DQIXpbZ;~HnftREP7?5-hn9unp8gDG$R5DM0`0BUly~N!#rj)pBc^9fW(^F zyyk15S_8!hR&*1nCPF_WcW2D4 z;fSI;-X>fZyXPI^cDws%2bMRxcs7ldA<`Z%ZGsb-z(fErfwuX!w7#L1A`-$tg)giD z*I#gIX?`ke|MS%Y2#+#@8N>jDyHPl*HmO2}M;u~jKO5R3E?pE(EI?`C_>{Q9iYnPE z01$ZlDgNNbxXH~82=MsF=~g#ukTDHpyc-$svsW^VY-Gg_p#xj6ft-DuWjvF5fLIpw zY&N@Yga0_4R#5oDt)PP!XvYu{m-xgfUU7?GJmMtP?+sd@0{KX>D)z9)J@SBo3}~Rx z$~|8rCoMHOP?w1Rx;cy%*`VrUyQ@s7ItG%-%4x+1_>#Z&+2;7MMTq zS}eA_{{|HTMvN2TrjF*S{Y2v6ubqWsh#MUjzdkV1o>J-+SNx z9{9l*e($%g5PEbV93)i!@<~|y0OXzxD3Jd2sb78TUmyF^cmDCip*8P+AN=7L|Mr%6-z-+%xA9{>YT00$5N|H|)f4BNgT z%B1Y{8qfg&3mYQv@LDPHI%D3JAsNW!;3|*GF3&aYVINFD1V@krOV9*Q5Cv0^5BTl@ z|6B0>#s(h*p#xBX25Zm;Zx9D_@CE~c1?R6K?qLHw;AC`w2#e4Nj}Qry&0zjqU4~yi_4Dqjx+|UnIL;oHk1ZpA#4iOO(F$ETp5gXAF9}yB8F%c*6 z5dROb#I4-=s@xdR1v}9b1x5lVa2hz#;NCE^Jdh&l;T|4`6ZEhkbf2ahe^k}e~XB3WZD>ryX6FCL#GFZU8KUODeB{W35M z6E4-{FAY;K2NN$9(=ZuRG!oM>-x4z8LNX__ErSv8AtH*-@rcat}5Gavu}J2bVlBLDyZ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/dialogs/video/images/file-icons.png b/public/vendor/ueditor/dialogs/video/images/file-icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff82c8c488f53a7aff67fbe39742e3321183eca GIT binary patch literal 44070 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

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

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

    ' + file.name + '

    ' + + '

    ' + + '

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

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

    完整demo

    + +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + + +
    + +
    + + +
    + +
    +
    + + +
    + + + + \ No newline at end of file diff --git a/public/vendor/ueditor/lang/en/en.js b/public/vendor/ueditor/lang/en/en.js new file mode 100644 index 0000000..c7e22f5 --- /dev/null +++ b/public/vendor/ueditor/lang/en/en.js @@ -0,0 +1,684 @@ +/** + * Created with JetBrains PhpStorm. + * User: taoqili + * Date: 12-6-12 + * Time: 下午6:57 + * To change this template use File | Settings | File Templates. + */ +UE.I18N['en'] = { + 'labelMap':{ + 'anchor':'Anchor', 'undo':'Undo', 'redo':'Redo', 'bold':'Bold', 'indent':'Indent', 'snapscreen':'SnapScreen', + 'italic':'Italic', 'underline':'Underline', 'strikethrough':'Strikethrough', 'subscript':'SubScript','fontborder':'text border', + 'superscript':'SuperScript', 'formatmatch':'Format Match', 'source':'Source', 'blockquote':'BlockQuote', + 'pasteplain':'PastePlain', 'selectall':'SelectAll', 'print':'Print', 'preview':'Preview', + 'horizontal':'Horizontal', 'removeformat':'RemoveFormat', 'time':'Time', 'date':'Date', + 'unlink':'Unlink', 'insertrow':'InsertRow', 'insertcol':'InsertCol', 'mergeright':'MergeRight', 'mergedown':'MergeDown', + 'deleterow':'DeleteRow', 'deletecol':'DeleteCol', 'splittorows':'SplitToRows','insertcode':'insert code', + 'splittocols':'SplitToCols', 'splittocells':'SplitToCells','deletecaption':'DeleteCaption','inserttitle':'InsertTitle', + 'mergecells':'MergeCells', 'deletetable':'DeleteTable', 'cleardoc':'Clear', 'insertparagraphbeforetable':"InsertParagraphBeforeTable", + 'fontfamily':'FontFamily', 'fontsize':'FontSize', 'paragraph':'Paragraph','simpleupload':'Single Image','insertimage':'Multi Image','edittable':'Edit Table', 'edittd':'Edit Td','link':'Link', + 'emotion':'Emotion', 'spechars':'Spechars', 'searchreplace':'SearchReplace', 'map':'BaiduMap', 'gmap':'GoogleMap', + 'insertvideo':'Video', 'help':'Help', 'justifyleft':'JustifyLeft', 'justifyright':'JustifyRight', 'justifycenter':'JustifyCenter', + 'justifyjustify':'Justify', 'forecolor':'FontColor', 'backcolor':'BackColor', 'insertorderedlist':'OL', + 'insertunorderedlist':'UL', 'fullscreen':'FullScreen', 'directionalityltr':'EnterFromLeft', 'directionalityrtl':'EnterFromRight', + 'rowspacingtop':'RowSpacingTop', 'rowspacingbottom':'RowSpacingBottom', 'pagebreak':'PageBreak', 'insertframe':'Iframe', 'imagenone':'Default', + 'imageleft':'ImageLeft', 'imageright':'ImageRight', 'attachment':'Attachment', 'imagecenter':'ImageCenter', 'wordimage':'WordImage', + 'lineheight':'LineHeight','edittip':'EditTip','customstyle':'CustomStyle', 'scrawl':'Scrawl', 'autotypeset':'AutoTypeset', + 'webapp':'WebAPP', 'touppercase':'UpperCase', 'tolowercase':'LowerCase','template':'Template','background':'Background','inserttable':'InsertTable', + 'music':'Music', 'charts': 'charts','drafts': 'Load from Drafts' + }, + 'insertorderedlist':{ + 'num':'1,2,3...', + 'num1':'1),2),3)...', + 'num2':'(1),(2),(3)...', + 'cn':'一,二,三....', + 'cn1':'一),二),三)....', + 'cn2':'(一),(二),(三)....', + 'decimal':'1,2,3...', + 'lower-alpha':'a,b,c...', + 'lower-roman':'i,ii,iii...', + 'upper-alpha':'A,B,C...', + 'upper-roman':'I,II,III...' + }, + 'insertunorderedlist':{ + 'circle':'○ Circle', + 'disc':'● Circle dot', + 'square':'■ Rectangle ', + 'dash' :'- Dash', + 'dot' : '。dot' + }, + 'paragraph':{'p':'Paragraph', 'h1':'Title 1', 'h2':'Title 2', 'h3':'Title 3', 'h4':'Title 4', 'h5':'Title 5', 'h6':'Title 6'}, + 'fontfamily':{ + 'songti':'Sim Sun', + 'kaiti':'Sim Kai', + 'heiti':'Sim Hei', + 'lishu':'Sim Li', + 'yahei': 'Microsoft YaHei', + 'andaleMono':'Andale Mono', + 'arial': 'Arial', + 'arialBlack':'Arial Black', + 'comicSansMs':'Comic Sans MS', + 'impact':'Impact', + 'timesNewRoman':'Times New Roman' + }, + 'customstyle':{ + 'tc':'Title center', + 'tl':'Title left', + 'im':'Important', + 'hi':'Highlight' + }, + 'autoupload': { + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading':"loading...", + 'loadError':"load error", + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + }, + 'simpleupload':{ + 'exceedSizeError': 'File Size Exceed', + 'exceedTypeError': 'File Type Not Allow', + 'jsonEncodeError': 'Server Return Format Error', + 'loading':"loading...", + 'loadError':"load error", + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + }, + 'elementPathTip':"Path", + 'wordCountTip':"Word Count", + 'wordCountMsg':'{#count} characters entered,{#leave} left. ', + 'wordOverFlowMsg':'The number of characters has exceeded allowable maximum values, the server may refuse to save!', + 'ok':"OK", + 'cancel':"Cancel", + 'closeDialog':"closeDialog", + 'tableDrag':"You must import the file uiUtils.js before drag! ", + 'autofloatMsg':"The plugin AutoFloat depends on EditorUI!", + 'loadconfigError': 'Get server config error.', + 'loadconfigFormatError': 'Server config format error.', + 'loadconfigHttpError': 'Get server config http error.', + 'snapScreen_plugin':{ + 'browserMsg':"Only IE supported!", + 'callBackErrorMsg':"The callback data is wrong,please check the config!", + 'uploadErrorMsg':"Upload error,please check your server environment! " + }, + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"Do you confirm to clear the Document?", + 'contextMenu':{ + 'delete':"Delete", + 'selectall':"Select all", + 'deletecode':"Delete Code", + 'cleardoc':"Clear Document", + 'confirmclear':"Do you confirm to clear the Document?", + 'unlink':"Unlink", + 'paragraph':"Paragraph", + 'edittable':"Table property", + 'aligncell':'Align cell', + 'aligntable':'Table alignment', + 'tableleft':'Left float', + 'tablecenter':'Center', + 'tableright':'Right float', + 'aligntd':'Cell alignment', + 'edittd':"Cell property", + 'setbordervisible':'set table edge visible', + 'table':"Table", + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justifyjustify':'Default', + 'deletetable':"Delete table", + 'insertparagraphbefore':"InsertedBeforeLine", + 'insertparagraphafter':'InsertedAfterLine', + 'inserttable':'Insert table', + 'insertcaption':'Insert caption', + 'deletecaption':'Delete Caption', + 'inserttitle':'Insert Title', + 'deletetitle':'Delete Title', + 'inserttitlecol':'Insert Title Col', + 'deletetitlecol':'Delete Title Col', + 'averageDiseRow':'AverageDise Row', + 'averageDisCol':'AverageDis Col', + 'deleterow':"Delete row", + 'deletecol':"Delete col", + 'insertrow':"Insert row", + 'insertcol':"Insert col", + 'insertrownext':'Insert Row Next', + 'insertcolnext':'Insert Col Next', + 'mergeright':"Merge right", + 'mergeleft':"Merge left", + 'mergedown':"Merge down", + 'mergecells':"Merge cells", + 'splittocells':"Split to cells", + 'splittocols':"Split to Cols", + 'splittorows':"Split to Rows", + 'tablesort':'Table sorting', + 'enablesort':'Sorting Enable', + 'disablesort':'Sorting Disable', + 'reversecurrent':'Reverse current', + 'orderbyasc':'Order By ASCII', + 'reversebyasc':'Reverse By ASCII', + 'orderbynum':'Order By Num', + 'reversebynum':'Reverse By Num', + 'borderbk':'Border shading', + 'setcolor':'interlaced color', + 'unsetcolor':'Cancel interlacedcolor', + 'setbackground':'Background interlaced', + 'unsetbackground':'Cancel Bk interlaced', + 'redandblue':'Blue and red', + 'threecolorgradient':'Three-color gradient', + 'copy':"Copy(Ctrl + c)", + 'copymsg':"Browser does not support. Please use 'Ctrl + c' instead!", + 'paste':"Paste(Ctrl + v)", + 'pastemsg':"Browser does not support. Please use 'Ctrl + v' instead!" + }, + 'copymsg': "Browser does not support. Please use 'Ctrl + c' instead!", + 'pastemsg': "Browser does not support. Please use 'Ctrl + v' instead!", + 'anthorMsg':"Link", + 'clearColor':'Clear', + 'standardColor':'Standard color', + 'themeColor':'Theme color', + 'property':'Property', + 'default':'Default', + 'modify':'Modify', + 'justifyleft':'Justify Left', + 'justifyright':'Justify Right', + 'justifycenter':'Justify Center', + 'justify':'Default', + 'clear':'Clear', + 'anchorMsg':'Anchor', + 'delete':'Delete', + 'clickToUpload':"Click to upload", + 'unset':'Language hasn\'t been set!', + 't_row':'row', + 't_col':'col', + 'pasteOpt':'Paste Option', + 'pasteSourceFormat':"Keep Source Formatting", + 'tagFormat':'Keep tag', + 'pasteTextFormat':'Keep Text only', + 'more':'More', + 'autoTypeSet':{ + 'mergeLine':"Merge empty line", + 'delLine':"Del empty line", + 'removeFormat':"Remove format", + 'indent':"Indent", + 'alignment':"Alignment", + 'imageFloat':"Image float", + 'removeFontsize':"Remove font size", + 'removeFontFamily':"Remove fontFamily", + 'removeHtml':"Remove redundant HTML code", + 'pasteFilter':"Paste filter", + 'run':"Done", + 'symbol':'Symbol Conversion', + 'bdc2sb':'Full-width to Half-width', + 'tobdc':'Half-width to Full-width' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'Normal', + 'lang_background_local':'Online', + 'lang_background_set':'Background Set', + 'lang_background_none':'No Background', + 'lang_background_colored':'Colored Background', + 'lang_background_color':'Color Set', + 'lang_background_netimg':'Net-Image', + 'lang_background_align':'Align Type', + 'lang_background_position':'Position', + 'repeatType':{'options':["Center", "Repeat-x", "Repeat-y", "Tile","Custom"]} + }, + 'noUploadImage':"No pictures has been uploaded!", + 'toggleSelect':'Change the active state by click!\n Image Size: ' + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"Insert", + 'lang_tab_upload':"Local", + 'lang_tab_online':"Manager", + 'lang_tab_search':"Search", + 'lang_input_url':"Address:", + 'lang_input_size':"Size:", + 'lang_input_width':"Width", + 'lang_input_height':"Height", + 'lang_input_border':"Border:", + 'lang_input_vhspace':"Margins:", + 'lang_input_title':"Title:", + 'lang_input_align':'Image Float Style:', + 'lang_imgLoading':"Loading...", + 'lang_start_upload':"Start Upload", + 'lock':{'title':"Lock rate"}, + 'searchType':{'title':"ImageType", 'options':["News", "Wallpaper", "emotions", "photo"]}, + 'searchTxt':{'value':"Enter the search keyword!"}, + 'searchBtn':{'value':"Search"}, + 'searchReset':{'value':"Clear"}, + 'noneAlign':{'title':'None Float'}, + 'leftAlign':{'title':'Left Float'}, + 'rightAlign':{'title':'Right Float'}, + 'centerAlign':{'title':'Center In A Line'} + }, + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'uploadNoPreview':'Can Not Preview', + 'updateStatusReady': 'Selected _ pictures, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ pictures (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.', + 'remoteLockError':"Cannot Lock the Proportion between width and height", + 'numError':"Please enter the correct Num. e.g 123,400", + 'imageUrlError':"The image format may be wrong!", + 'imageLoadError':"Error,please check the network or URL!", + 'searchRemind':"Enter the search keyword!", + 'searchLoading':"Image is loading,please wait...", + 'searchRetry':" Sorry,can't find the image,please try again!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': 'Upload', + 'lang_tab_online': 'Online', + 'lang_start_upload':"Start upload", + 'lang_drop_remind':"You can drop files here, a single maximum of 300 files" + }, + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.' + }, + + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"Video", + 'lang_tab_searchV':"Search", + 'lang_tab_uploadV':"Upload", + 'lang_video_url':" URL ", + 'lang_video_size':"Video Size", + 'lang_videoW':"Width", + 'lang_videoH':"Height", + 'lang_alignment':"Alignment", + 'videoSearchTxt':{'value':"Enter the search keyword!"}, + 'videoType':{'options':["All", "Hot", "Entertainment", "Funny", "Sports", "Science", "variety"]}, + 'videoSearchBtn':{'value':"Search in Baidu"}, + 'videoSearchReset':{'value':"Clear result"}, + + 'lang_input_fileStatus':' No file uploaded!', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"Video Size", + 'lang_upload_width':"Width", + 'lang_upload_height':"Height", + 'lang_upload_alignment':"Alignment", + 'lang_format_advice':"Recommends mp4 format." + }, + 'numError':"Please enter the correct Num. e.g 123,400", + 'floatLeft':"Float left", + 'floatRight':"Float right", + 'default':"Default", + 'block':"Display in block", + 'urlError':"The video url format may be wrong!", + 'loading':"  The video is loading, please wait…", + 'clickToSelect':"Click to select", + 'goToSource':'Visit source video ', + 'noVideo':"    Sorry,can't find the video,please try again!", + + 'browseFiles':'Open files', + 'uploadSuccess':'Upload Successful!', + 'delSuccessFile':'Remove from the success of the queue', + 'delFailSaveFile':'Remove the save failed file', + 'statusPrompt':' file(s) uploaded! ', + 'flashVersionError':'The current Flash version is too low, please update FlashPlayer,then try again!', + 'flashLoadingError':'The Flash failed loading! Please check the path or network state', + 'fileUploadReady':'Wait for uploading...', + 'delUploadQueue':'Remove from the uploading queue ', + 'limitPrompt1':'Can not choose more than single', + 'limitPrompt2':'file(s)!Please choose again!', + 'delFailFile':'Remove failure file', + 'fileSizeLimit':'File size exceeds the limit!', + 'emptyFile':'Can not upload an empty file!', + 'fileTypeError':'File type error!', + 'unknownError':'Unknown error!', + 'fileUploading':'Uploading,please wait...', + 'cancelUpload':'Cancel upload', + 'netError':'Network error', + 'failUpload':'Upload failed', + 'serverIOError':'Server IO error!', + 'noAuthority':'No Permission!', + 'fileNumLimit':'Upload limit to the number', + 'failCheck':'Authentication fails, the upload is skipped!', + 'fileCanceling':'Cancel, please wait...', + 'stopUploading':'Upload has stopped...', + + 'uploadSelectFile':'Select File', + 'uploadAddFile':'Add File', + 'uploadStart':'Start Upload', + 'uploadPause':'Pause Upload', + 'uploadContinue':'Continue Upload', + 'uploadRetry':'Retry Upload', + 'uploadDelete':'Delete', + 'uploadTurnLeft':'Turn Left', + 'uploadTurnRight':'Turn Right', + 'uploadPreview':'Doing Preview', + 'updateStatusReady': 'Selected _ files, total _KB.', + 'updateStatusConfirm': '_ uploaded successfully and _ upload failed', + 'updateStatusFinish': 'Total _ files (_KB), _ uploaded successfully', + 'updateStatusError': ' and _ upload failed', + 'errorNotSupport': 'WebUploader does not support the browser you are using. Please upgrade your browser or flash player', + 'errorLoadConfig': 'Server config not loaded, upload can not work.', + 'errorExceedSize':'File Size Exceed', + 'errorFileType':'File Type Not Allow', + 'errorInterrupt':'File Upload Interrupted', + 'errorUploadRetry':'Upload Error, Please Retry.', + 'errorHttp':'Http Error', + 'errorServerUpload':'Server Result Error.' + }, + 'webapp':{ + 'tip1':"This function provided by Baidu APP,please apply for baidu APPKey webmaster first!", + 'tip2':"And then open the file ueditor.config.js to set it! ", + 'applyFor':"APPLY FOR", + 'anthorApi':"Baidu API" + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'Background Color', + 'lang_template_clear' : 'Keep Content', + 'lang_template_select':'Select Template' + }, + 'blank':"Blank", + 'blog':"Blog", + 'resume':"Resume", + 'richText':"Rich Text", + 'scrPapers':"Scientific Papers" + }, + scrawl:{ + 'static':{ + 'lang_input_previousStep':"Previous", + 'lang_input_nextsStep':"Next", + 'lang_input_clear':'Clear', + 'lang_input_addPic':'AddImage', + 'lang_input_ScalePic':'ScaleImage', + 'lang_input_removePic':'RemoveImage', + 'J_imgTxt':{title:'Add background image'} + }, + 'noScarwl':"No paint, a white paper...", + 'scrawlUpLoading':"Image is uploading, please wait...", + 'continueBtn':"Try again", + 'imageError':"Image failed to load!", + 'backgroundUploading':'Image is uploading,please wait...' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"Input singer/song/album, search you interested in music!", + 'J_searchBtn':{value:'Search songs'} + }, + 'emptyTxt':'Not search to the relevant music results, please change a keyword try.', + 'chapter':'Songs', + 'singer':'Singer', + 'special':'Album', + 'listenTest':'Audition' + }, + anchor:{ + 'static':{ + 'lang_input_anchorName':'Anchor Name:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'Data source:', + 'lang_chart_format': 'Chart format:', + 'lang_data_align': 'Align', + 'lang_chart_align_same': 'Consistent with the X-axis Y-axis', + 'lang_chart_align_reverse': 'X-axis Y-axis opposite', + 'lang_chart_title': 'Title', + 'lang_chart_main_title': 'main title:', + 'lang_chart_sub_title': 'sub title:', + 'lang_chart_x_title': 'X-axis title:', + 'lang_chart_y_title': 'Y-axis title:', + 'lang_chart_tip': 'Prompt', + 'lang_cahrt_tip_prefix': 'prefix:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': 'Unit', + 'lang_chart_data_unit_title': 'unit:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': 'Chart type:', + 'lang_prev_btn': 'Previous', + 'lang_next_btn': 'Next' + } + }, + emotion:{ + 'static':{ + 'lang_input_choice':'Choice', + 'lang_input_Tuzki':'Tuzki', + 'lang_input_lvdouwa':'LvDouWa', + 'lang_input_BOBO':'BOBO', + 'lang_input_babyCat':'BabyCat', + 'lang_input_bubble':'Bubble', + 'lang_input_youa':'YouA' + } + }, + gmap:{ + 'static':{ + 'lang_input_address':'Address:', + 'lang_input_search':'Search', + 'address':{value:"Beijing"} + }, + searchError:'Unable to locate the address!' + }, + help:{ + 'static':{ + 'lang_input_about':'About', + 'lang_input_shortcuts':'Shortcuts', + 'lang_input_introduction':"UEditor is developed by Baidu Co.ltd. It is lightweight, customizable , focusing on user experience and etc. , UEditor is based on open source BSD license , allowing free use and redistribution.", + 'lang_Txt_shortcuts':'Shortcuts', + 'lang_Txt_func':'Function', + 'lang_Txt_bold':'Bold', + 'lang_Txt_copy':'Copy', + 'lang_Txt_cut':'Cut', + 'lang_Txt_Paste':'Paste', + 'lang_Txt_undo':'Undo', + 'lang_Txt_redo':'Redo', + 'lang_Txt_italic':'Italic', + 'lang_Txt_underline':'Underline', + 'lang_Txt_selectAll':'Select All', + 'lang_Txt_visualEnter':'Submit', + 'lang_Txt_fullscreen':'Fullscreen' + } + }, + insertframe:{ + 'static':{ + 'lang_input_address':'Address:', + 'lang_input_width':'Width:', + 'lang_input_height':'height:', + 'lang_input_isScroll':'Enable scrollbars:', + 'lang_input_frameborder':'Show frame border:', + 'lang_input_alignMode':'Alignment:', + 'align':{title:"Alignment", options:["Default", "Left", "Right", "Center"]} + }, + 'enterAddress':'Please enter an address!' + }, + link:{ + 'static':{ + 'lang_input_text':'Text:', + 'lang_input_url':'URL:', + 'lang_input_title':'Title:', + 'lang_input_target':'open in new window:' + }, + 'validLink':'Supports only effective when a link is selected', + 'httpPrompt':'The hyperlink you enter should start with "http|https|ftp://"!' + }, + map:{ + 'static':{ + lang_city:"City", + lang_address:"Address", + city:{value:"Beijing"}, + lang_search:"Search", + lang_dynamicmap:"Dynamic map" + }, + cityMsg:"Please enter the city name!", + errorMsg:"Can't find the place!" + }, + searchreplace:{ + 'static':{ + lang_tab_search:"Search", + lang_tab_replace:"Replace", + lang_search1:"Search", + lang_search2:"Search", + lang_replace:"Replace", + lang_searchReg:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_searchReg1:'Support regular expression ,which starts and ends with a slash ,for example "/expression/"', + lang_case_sensitive1:"Case sense", + lang_case_sensitive2:"Case sense", + nextFindBtn:{value:"Next"}, + preFindBtn:{value:"Preview"}, + nextReplaceBtn:{value:"Next"}, + preReplaceBtn:{value:"Preview"}, + repalceBtn:{value:"Replace"}, + repalceAllBtn:{value:"Replace all"} + }, + getEnd:"Has the search to the bottom!", + getStart:"Has the search to the top!", + countMsg:"Altogether replaced {#count} character(s)!" + }, + snapscreen:{ + 'static':{ + lang_showMsg:"You should install the UEditor screenshots program first!", + lang_download:"Download!", + lang_step1:"Step1:Download the program and then run it", + lang_step2:"Step2:After complete install,try to click the button again" + } + }, + spechars:{ + 'static':{}, + tsfh:"Special", + lmsz:"Roman", + szfh:"Numeral", + rwfh:"Japanese", + xlzm:"The Greek", + ewzm:"Russian", + pyzm:"Phonetic", + yyyb:"English", + zyzf:"Others" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'Table style', + 'lang_insertCaption':'Add table header row', + 'lang_insertTitle':'Add table title row', + 'lang_insertTitleCol':'Add table title col', + 'lang_tableSize':'Automatically adjust table size', + 'lang_autoSizeContent':'Adaptive by form text', + 'lang_orderbycontent':"Table of contents sortable", + 'lang_autoSizePage':'Page width adaptive', + 'lang_example':'Example', + 'lang_borderStyle':'Table Border', + 'lang_color':'Color:' + }, + captionName:'Caption', + titleName:'Title', + cellsName:'text', + errorMsg:'There are merged cells, can not sort.' + }, + 'edittip':{ + 'static':{ + lang_delRow:'Delete entire row', + lang_delCol:'Delete entire col' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'Background Color:' + } + }, + 'formula':{ + 'static':{ + } + }, + wordimage:{ + 'static':{ + lang_resave:"The re-save step", + uploadBtn:{src:"upload.png", alt:"Upload"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:" 1. Click top button to copy the url and then open the dialog to paste it. 2. Open after choose photos uploaded process." + }, + fileType:"Image", + flashError:"Flash initialization failed!", + netError:"Network error! Please try again!", + copySuccess:"URL has been copied!", + + 'flashI18n':{ + lang:encodeURI( '{"UploadingState":"totalNum: ${a},uploadComplete: ${b}", "BeforeUpload":"waitingNum: ${a}", "ExceedSize":"Size exceed${a}", "ErrorInPreview":"Preview failed", "DefaultDescription":"Description", "LoadingImage":"Loading..."}' ), + uploadingTF:encodeURI( '{"font":"Arial", "size":12, "color":"0x000", "bold":"true", "italic":"false", "underline":"false"}' ), + imageTF:encodeURI( '{"font":"Arial", "size":11, "color":"red", "bold":"false", "italic":"false", "underline":"false"}' ), + textEncoding:"utf-8", + addImageSkinURL:"addImage.png", + allDeleteBtnUpSkinURL:"allDeleteBtnUpSkin.png", + allDeleteBtnHoverSkinURL:"allDeleteBtnHoverSkin.png", + rotateLeftBtnEnableSkinURL:"rotateLeftEnable.png", + rotateLeftBtnDisableSkinURL:"rotateLeftDisable.png", + rotateRightBtnEnableSkinURL:"rotateRightEnable.png", + rotateRightBtnDisableSkinURL:"rotateRightDisable.png", + deleteBtnEnableSkinURL:"deleteEnable.png", + deleteBtnDisableSkinURL:"deleteDisable.png", + backgroundURL:'', + listBackgroundURL:'', + buttonURL:'button.png' + } + }, + 'autosave': { + 'success':'Local conservation success' + } +}; diff --git a/public/vendor/ueditor/lang/en/images/addimage.png b/public/vendor/ueditor/lang/en/images/addimage.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2fd17121b9e0d435b2ca082d696c33b9f27b79 GIT binary patch literal 3373 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 ZzyK$sgmq7P@T33$002ovPDHLkV1jUEUt0hG literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/alldeletebtnupskin.png b/public/vendor/ueditor/lang/en/images/alldeletebtnupskin.png new file mode 100644 index 0000000000000000000000000000000000000000..61658ce6f10164478ce293c05f1f0485a8fa1fc4 GIT binary patch literal 743 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 P9go0R-$Jhf?tK5Bgo^WU literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/button.png b/public/vendor/ueditor/lang/en/images/button.png new file mode 100644 index 0000000000000000000000000000000000000000..098874cb1fa85852d77ba9acbb5850c91c341fb7 GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/deletedisable.png b/public/vendor/ueditor/lang/en/images/deletedisable.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ee75094f59f0c1262806fd294d361f30f64f58 GIT binary patch literal 649 zcmV;40(Sk0P)!u-Pc3GOd!YPO+bG=gGoA_gW7h+<&i6W@>CzIUsorkT}tXKy|I-GoR_nf%RY$+yzqrWn_y0c| zycG_I116IRG@DK0sZ-E55u|Ou1fok>7zp9LsHJgReXhe;7C4$VS;)mE^wOWxM5!>w+j7B4b z!(p<+cswRyO2rY#*XuP527_xko|w>=_a0qmu_(~#bP__L5ZG)saJ${)TYOfjR7kAi zYvg9L`EQ38LQ-=rdwc{0EpJ`Z=~U9|_2kw4eh&tN0eJ55 jcWg?)n1^9d$t00000NkvXXu0mjfULPWN literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/deleteenable.png b/public/vendor/ueditor/lang/en/images/deleteenable.png new file mode 100644 index 0000000000000000000000000000000000000000..26acc883567c5d7fde8de3ba052d7754a5b1c539 GIT binary patch literal 664 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 F`FAsl-Jbve literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/localimage.png b/public/vendor/ueditor/lang/en/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..12c8e6aefa8fd16287ac77bbecd7d5b58c3fc837 GIT binary patch literal 3083 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 Z1^`gxH94g;riuUn002ovPDHLkV1oEm+S&jB literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/music.png b/public/vendor/ueditor/lang/en/images/music.png new file mode 100644 index 0000000000000000000000000000000000000000..2f495fe92ffecdce42b74fd57dca2687414711fb GIT binary patch literal 91561 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 LNkvXXu0mjf3l)h% literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/rotateleftdisable.png b/public/vendor/ueditor/lang/en/images/rotateleftdisable.png new file mode 100644 index 0000000000000000000000000000000000000000..741526e0d5e6eb5c30eb0a62c9b1d6d558ed9cdf GIT binary patch literal 719 zcmV;=0xVLm}k=YQ<2%m+GNILKMZ4Wj)Eo{6dA(i=1OgO`#k70DYI-BmRjYes)SkU2cI0GZBR;y4N3I~Hh!d`9*7LUg-fQ!ZA17DgvC%W<{o)0F! zU*`EmuKGZYN~Kcs0v3uoolcs~W&&`zTnccgjDVT|^mshtI#kAIIINifC7$1T{?yd~ z`f398$nzJ^&xXUj%I~;@1tb~>YHqh%0jWR{cz-&b2!6()Y&M(t%#{JqZzlB@o&~uo zRdFYN7<*g3d>y0SFTSsu}||KmrzxrzXV}0f4+Nl`U`wo^<=3%s|h|0ur}Z0m~6a z)9IA5+3a~Uyo=N{O{`Z26ni!(U6x=a31615Uq6I}2cZ-|0a2}1X+EF7+lbqaCbL*9 zVjpaCBO8zeF31Bljb43c1B|5gdMy+K1i&JZ2&owiAH&aRFjxU~zu$k$sq`Wh)qB?* z7JdW}ya?6MP#9CN2390Mab0C5lljw}edEbwzR6l%S5ujn*P2rK!bg5RKf!pHvr45x zq@5Lg56Rlp|dF?<); zZnrB`Ycv`HPI*-K+S{`L4RzyPXZYcl&002ovPDHLkV1lL= BGwT2V literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/rotateleftenable.png b/public/vendor/ueditor/lang/en/images/rotateleftenable.png new file mode 100644 index 0000000000000000000000000000000000000000..e164ddbd62a232f3a89826158c9795f6c082cc89 GIT binary patch literal 952 zcmV;p14sOcP)B{+A~4pJXZ}t_3ogEQ=EtDt@NW=ovC^1YY3D0f#y*iY)MG5<8F z!|f{@kKz7^5#8k3NZf?c9K_t5iFB?APcn|7{XXn#Ybhtak0o(qW)4fuAr!0vET4{< zSc+h47GQ*Qo%FCG#zDtxKn;d}ii3LDciA+S|Xdhl! zB4Tth6pKaVi#F1YAvCEHTFJM^bUHnP0sSYFPoVrcDQm)w^;g8!)bGBFx|JW?%CGA- z&{PEjJ5@v`9|31h11Z`(8l4W74acX!rYt{M#7D#XGmFrJ8p1{(Q)@sv8@F2OUzvR1 zx9$d0kvWXM{tBEwN0$R4YNDW*#-^%Df&-Q6zoW#Uu@ZDmhS%$@-$mxZRD^B@1aSM_ zhL@++3|_o?ixNDPXhWAA>})fj>w5hzGPAR@B4aE>&p+Mbf*>$imMuk5EW2c0000?hzPCHlRk++nh`E3!rKF3htnTQ@ z$gI|MU8lEVHuFTg-PR|Q2`!gP+H5wYX&N~k4)SU74-bY78_Ii7=yw!+~9z)9EC?-%tI1pNtpOgTWwx zYc~hmYPIxUug9z{77N<%_sk-|f_a_y+;xqv4+oe^KHq!n0!Sli2@LjQ?eJI-PQw!5kz2kP;{i1#vW)J3m7@ilvOQx*+0gD21yWM29TG_#>*)V5x3eEte0rs!7XTfq- zNpDVBe^HqJA^?xgte(JHEEaB201ADoR;^a);o$)-i`fNGNCD$l*jUkV&ZOJ#g6-=H z48;P#aDbi7X5{nvH~?d$9K9Fo01LT5x392A!Cv-)3}9cydREAx^dDF>`_*d2002m8 z7y1N?u~>`?4DAa45ev4jw7ek*Sw2XA4L&zdS z9A4&}t`&psbm3W({))<)8k1Mzq-LMgHh4P0I-QOV5C8-H!ohO6T&8$D&Va$Z(UY0s zOeS;lL%|{kl3A%;S#MlC&Amg&cpiN1r-rvC| zuQ1Fer=aUPn>g6re+%A~4HxgfoyFs_jfT}hvT2|~buTAFG7cgsM5)fELnz*RfYsA+ z%+JjZfW5eCXjGl)8+s)4P|lCQu*F>n-SXLP{rpv`@{BNE{IcsI8B@_npSvh)X*hNpW_TLgr2`Ju@0bJqvCruO={o6E(Z3`5{jw@Hv`M-m z=H><1m4WE;;`c%mkz)x|ObZEnAD_J*B%s8ej2PcmwhgRZado>%)jtid7zm=SE zQ*F%`{_{RP6wdfheSj59}E|h^E{{P*E_)R6H^3NW^13gC8C>dV0CgKv@POF4dxfvY6kSFwxaNHki&!>3-Y^~4kn%F>oC=IgN4BfYTUZZWo z4NgH0Fff*Y6!1`OQEtkV%qBhmGZEnCEqwT{hG--_gp%$=?(C?C;zb^jm66PHQ4|^R zkb*cmi1NcmKm&YfVi#crNDyF;_V&?5G literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/en/images/upload.png b/public/vendor/ueditor/lang/en/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb15b3d6d6799504cf7093a1600bd7ece0d9ef5 GIT binary patch literal 3941 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/zh-cn/images/copy.png b/public/vendor/ueditor/lang/zh-cn/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..b2536aac72e763b9a872b507462458ecb96990f0 GIT binary patch literal 4319 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 N002ovPDHLkV1nv#UQ7T0 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/lang/zh-cn/images/localimage.png b/public/vendor/ueditor/lang/zh-cn/images/localimage.png new file mode 100644 index 0000000000000000000000000000000000000000..7303c364318b6ac27dc4a8ae6717124d8dafaff9 GIT binary patch literal 6979 zcmWkyWl&tr7QBltzPP&v*M#5_0_4L31PQ?o<`!RRw z)>O@$I;Xo&&qSyw$zq|Cp#uPbB`^0u4Lppnz$n1i&yDf+x`z5{|A(K!}?qr_mcYi!PTPzLm$)Xf7EUt`nv4Rq&L0 zrMTY5^X%m0asIJ&KWqPK%wrtK9~X})elOn=c&`>BBD6pqt1Q<$)aH*sD7S$`1KERi znxxzfNP9a9FBwm;GZtVJ_67PA^_4<_@jt43W#~!Qym+n z`t~7>av-1+nmn5N-xMD~WAX%<+vWMj7VTEIb&ZrE@f(O4+74Y-Y9>9t+&-eh7$yLa z-A{JC2#Uw;@9k{vneAJjUH9d`Se@I^iP2uHzqI~9Kms62<7Z3yySsCU_5+}5mkz5^ zU0_KQuvov><6B0{(?Or`ypQq_e3GEb`KdA}LP>#+fpNlU^s|k7J4)=8Z_{og%J&w& z`m*eK4me~;q*rtn1U)+#+PYS%#q2|oqZzi|+Yre7*MqX$|G^)@k z4tO-F#ebk3O5Vad^y9stPI*R4bi)G5LzO#~{-V}Htvh{BK?qUUT2roogzpu{4>F8+ z0AkM1>j49R#E$z|2{sTgnp(IG0IdfkUrUmR75c#d@F6dNwOSGtvx}g-6FaMmvbB>K z!4Tzx1SUhL2t*2H$DacICrOGVsd}f-0#bc7B3T}8#wO%X7mpy;{s!LHfFpZi6a$i+ zZj#neG$hGEFuozJP&lqp%mUpQm^eKKiOx`tKf%9{<}jQGvwSBZzX5^A!@{ye8iXMP+#|CD^INwPmwqW*vL zizoj(aB&8FB4dpGCwZ{Vek>Y({ShW(5TQlJG(cp$t0kZrD_~5i_0E-$yfeq}49tKK z<&S?1{uT`BwhoMolhsntk}hF9rvHQ24E}-^6wK4jOqW=q{D;vK@4naFNT?=G>ti|7 zDJ>Ok4&ygwY<&GhIR@;ZgdHVxTE;kDc?@|gxn((y!q0_bQ;_dj3QR|FHbZMW;9CE3 zn$-A)IGi};gvX(todyD-zVIytw0s7&!X&&;0;b}-NJY84Qt5eRs-vYjGvKmtp<$)uFqkm`1~#zjH8)E($GSVg4v0T@8;iO7F>tU&1kDZR5Ga(sZ&-5sE7N9LDz1W zSfN-!19C(+AbL=XuG~&C_tw>@>7kZ&|$wGSKOMxDxbDcTIt@7YpHjh524m1AmdYOyNgs`>@( z`ph<{UKelaIE|LK%{B|!Y^zc?sfs%t9oXPe^4V%uC#X!0)E zY4cS5^i4r#OXf<&qRq_eh-jbB??*+>O!6VU9?>(&>vNdamcz()c5!BL_f_0J*EiR1 z+TR}AsFdrnm~!U0Z3dTnbvN3eUIs#9qNWdHhlpbRVhFjOxnb?U+UeFs+v$DheA9hV zpK>0BAE3{%cO9D^mqZsz$OfP;&@QMgfGnU6(F&0oDIKW@RRB2}xdnv_Q;bjw6Aeq7 z+A-0tllYSS-k5L2oIPWba2T9Ts6+n1J;J0wHHRA$Iu2fk_}cxtS2!H`3l86qwGMBj z{!W@seD6c>hLyLB^PlRU&(03cF!s6f9qmW+wwR09(jQI2%a(r~UCqlat<|iJk24$n z8_OC4+{5liKF@fpxgB6fNgdPO6)oe=h|Gx)N0GSpL?jVpIo@|%eF4#%K5ZX((O z+Hu~3A!&H2wc@)$G*T*DB+9$Rwu+Sam%*7K$};Ww(fO)14UL~f685q+lWzrAg?*$S zEJBq(y7cp*DXX!0#FHj8(O)TQewbS;A76A>(7 z){e)X%`kal*f4B|{@&?onb0~!VY1+lTBQm$kpfobiwSckPP}x(=BZBKoM$#BQ8CdTPxk?%&U+e4rN4+LULNEiE;TOG}TH z%NVtwsiGojw!km^$)!m{P}|CDohD;K!(!Tyijjt&WToIND6q*B z{n>VQ@S`A`@*AaWd&8^m8PB${%YZ=amz=z87SW6QoxsHHVw2*WY$b8gne-J8n8H)K zm7c0zo4NFOjySRNsX~K3Z0KrjKUVL&)&80eX0*)M@Lz>!rKqg0{qv?=m9E{9DGYk@ zMWoXCTJcDD@@(4g!LoDKY5s1WQ!m$}?X3Tpyup@fm7ZyI{`5)>7&Og6DFEyr}HXC;aod)AQ+Bj#}Xkj@oNw3pkn^UqQva|Fb>7!$_sj11a z$l5MV#u7J+Ym4#6hkZ3)J&v4y@2@{^J^nYY^|Ww~aUV6_QRz{7<#_hHv`T1zet^1l z%tQ3z*HgvVvd>xLS@Zfp8+AI%lf;Y4)#QWmK=Fh!Ol;r#<%tUxeD%mUmCFZrn>5C9 zYKj2h$q09%K>%?73ZD-Fz=azC{uuy(P#ORb+a>7teFOlAz5EABb@!#?uZq^>=AOQL zu`^ovB{e46DTM!#E=OE_?gZ~rH2cSo#!Tqty@`~O|MTX-iEexqfffhjdMl_=!fQdA zn4wxiH_rUh+xAVNm%;jU(fI#4W{qfT77gMbO!2Gt5p)lzkX3?_DH zK3nFtAX1QIuoNvga04UeIkZwYyl*ak=!awqj*?2vf>8dX>?Cd{a zt;J_lbJ2IsWMyJ6l_je)y6$)-ICvr-lSBzF}ctkpkU#KC6hcWO7K) zb0|w6G|yhGI5!8w_w{b~m6)i{`#$OeN*zs!hibHpY0PGvxi~ek5|{#!ynsf9)ah0~an<@g^choScTOKs&&pRU8+neJS z=c2_!qp~y#|M{F2?9Y*odFE9i#{kxAh#Q}$g^JWJ^74-c=Z9Z=i}z6Nz>23CcN{g? zITXd(z$PRpR#sLME|mEA_#~vHKRc`0qj-aLpO6ti3W|zd+?eH+l|~*Oq|?*WU=)~N zoVq3c#a;D&VVNb?qIFX-PfE%dT|5gN8RZ9F(vR$av9*cvSm+2${guq@h7*7^u|ma6|a6Ty*SN{HaEU^dbv6l`OX?&fU{>udT-m|>=t2N5qXLurf2 z#Za9kV~CJu;tOnQ5;*XLPVakR32PNhcCE^&+#;7SI4JKUkc3LsXniPB>w#@AP@qNE)0j-$jmI%*IYbI!JdgP6228Xr;-XHyim%XBl|}x8i?s5 zB-*g$f90{-%uKfYEd>Vp!c~qZ^s?)G4of1YfCgdB8!aB%}qlx zfd%II*xLtE+YOUCQ~1NPv1>VexZZ!Y0pyAMMd(3 z(~SRLX8%E-YbTN7G43QV8q83mk`%znF?rwCii!w+49#i>3`kIBEeUTtDb2@oWPZ=) zv(+zJPuX;%yAm5HAIFXNDnd5mDB#uXZF1Uw_$4ZXiyKuzpIb#wMSWX%;M_bz$hRCY z!;!>ZIISB#5auQ=k%;gn*Nz4bD>%Aka7BGw#PrYdFW~^xs8H>*(~k&_09zys;r=6f z0&>Uaaig)Rgd*RoQyExUVbIglZwSVajn}ekrG#X@v)k&y5$_!v!`8b&0=uHzT~8}t zOv+NLPA=FsOj_2%Bk$hic6D`~u;71q379;f;Z5fuqqNYO=A(v0WB*^35tF#EBcC+C`f} zwTE`rSDGRA%kt;oqINO^b8}QU=ac>}pS)F=4mKpw`u44VZ;wf@%QckdH3e$A(&C0Q zYKC8=h6XRI#oJ7EX>g!KdguqFZ|EuE99+1`y!UYy1*wj1j}EYQ>y)Am=8I>^FTC&f^Y$loB;eHj_m9=g%#6h* z(b<*;(rKRS6B-?j)%tkavLRT>hE4QnB7tk?V-5P|P)>iBN6xgV^m=8^7MLP+<2sb>b_x2jGbHi};hnyoJ zfY9@ZZL(fZ2Kn07F1apcx0+ahz%GMSo}s^@n?1Gc?m4n>Ca`zavLgflNRsy4VWNuG z#3`pACR8c(Wr|l+5BlK;cu<|VlEbsyWdQm0U5Gb0#Z;0&#@fc_rwU7+=I?-Q!6kA7 zZKBYyFo(SnQcNtY$&&6-ba?NC!^2&5fcj;dI&bi{3g_iEHuN0b*U=<5%q8>--lrlw zjr-fFDjM+JRuq^0kCK@4E6~H;=yF7Ky54~kvuz<3 zP#tMV0%rs~7k+Wq^ujcgX3gT0aWUU-B{x2?!Z^AU z&=<~epICLvX}))Has)n3D5oNwlG6v+xPl@gKL%o{d$=*H*)gX1OS?2RHR0yNVRx7i z-tf%oY|9$jAr0hkG7 zdxF?@?e|Oy(}e?Qff9+I5*Xg+18RRJ`4i{n1S;ek>{mfPr){T{ACYwd!ePR7g+OJ@}zA=uraven%^GvPrqvPQ+ptsoLb2&IOA1v4%W z(;Inw2`e4^1b(^wNzs9CR|752A`XbjpOEue)bwqO&%gEPv21xzu|thqTnM+fx4}pV zF?YE;D-oM6tNA#y9yD|DiD$_bNANce)3v(NUNIpF`nG@<%xcw|^OsoLjUd=sXZ?YU zx40W|YH{G*o}J?RTNo`O2v~nU1zgKUSO4WnEH4QyDh9dogAijvalE!ziF9Ro-%lmG zsB09MyH@|E7`YPp_3Kx4Yb$1oDQzSjW{-Vv@a^`An#W%ZoHM+*4|S|{J`Uw!)zAW>Fl z`d#8r11OxzqMbM|yKlwZ&#=6oI^53Ztg2{UM(a@9&BXM>@-b<$*QEG`8kd9dKD^a+ zy%vMZogNk^yf5;Pe&GN2^|??|GeK*7DS{aY7tc*k?+QZ2DS4=xwN%GnNEAN(fCEB2 z1bJT{;7a|3DCLSNMoF5;;Q7s#4$o2$P(~oRvAHO+L@vmz7hW$NmS@`oT~N_G7lM{P z4LF9ny9JrXuHU9n*lvEo;kPJa1N@ggF@BS0n;(U}oETd{9SbX_4>>+9nuz1N6*kRa z`{u`kJLQ{nQ|^5-johmik_<`U#5MHvB*UQ=E9@iR+K;%aGe;Y00kK1+AV_e1QfDO$ z?%Cx0#|)#vk%VL@r8WnX@`UTZEGs@{t8pyLyav0-q2j2%+77EHfd+YFEk}igSads3 z?9uJ?DSC9P+5*pBcf>EcyzC^}=6j=sJG$#(RTIW+Hv+(=7&ZWot%mo8lCJFw2t&lO z3rIlct0Q?1H*I>4sKWw0pZ!x)FA6ht9A61!;BF6YZJ3pF;7vh-K*pXz7TT0zI{6^c zvKnegvaqlKj9-yZQx6Odf@eX`m@Oy^7|PnYDwT`%fve9quDAqI6~+z@-8>OHe4yN1 z9oJYm4f4K1?6>|MH0YP1SMlEfQG1vV#%&2L^Dl!&F(5tLy3zd$>!u zn1fh+RS6va&Afr@T=T!xei&Xt#0T73cIW$tZ_z2fo#%KzYDc6K7ILH}9oobaoagh2 z9XLF3bM-r78aghbePUmq9$b{s@9wsRZ2f9d@oArtZeb{R5p-J@5CPxf2mwF__l*QN zvuUxS$5QGQbAu7nBPWa{@{eR8-06G;1{@$r0qs=%4ips}*L-*pSh76>zIH(TEw>D5 zbwqC4{NE>?UhJe_Ho!x{yjIwKv)AH~3K%)5)U3x}8%~i>s$=2t>r=f=?a9iU}vS^P5;}Dix2gv^{7x zMW-W4zYS5xYf6Yb6}LWF$n}y(np=v`XG!3kc%8g^A|jwNhUt<@f=>0gML2v%9XlEA z7#XR`XFR{$>Rp2FZt--{Duw?Bx<^J#iv48mC)6ozqZ4VDIHzIBHHhl&k^Xkl6+z)oH-D6FW9L++k-g(0> z7FB~c%T!|&MXxm7ipxktw*JTS0!|Bt9k!;3Dm_oge& z^)RLF*?Ir}s{Yf`U+jcu^X|a>eJlAPxNcW}$KgR(JZ}Iy8}jD-nT|@lVeizNj$`+E z1UHtRe+6fMzb7~BB6qKOIXOo4_4v&9@cx;xo2vh1{%rPi_Z_vZs6FJwsSvO)><76| za$`QRBpzNJZ2UaEXzk|#a=Pvk?F6zzeFES=PqUM+v0fC28;gzp`%^vhV(5b6FLqlZ zvPI2T$!m5N=e<0L6mJmju`xOP)xKLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde00d`2O+f$vv5tKEQIh}w03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(` z>RI+y?e7jKeZ#YO-CPhUwyK~#9!?7exA9M^p&_{vcV@Q5GqIB1jP=js}RM33N9aK%>!Dbyww4XI8%b<5gz8Gc&6Jkf1#k9f?9#R#sMK zR=zL4@B4i}v|Pmq00AHb0DyphAb%Fd007uu1|iA9?Il6^K%q;bV2Y^c)Rtf@*|3oH z^Yc;E0@Qv$isdl?V88$vz{8zC@)Gvni`l)3qqZ>E8%Wsg*#FRAG1VTH?jI!V1o~eb zxkI3feNKM_5{_xCV-)oW_7aYI3-0PA%+JK!6D)ZzW_P>z5Y4S_*%V6ah60v9eqZV?O zI#EX|<}^6pxaT3q6bti%y=2+`tN!oKw%haD-;129!DrdjGGve07RJo-?RDDJ7TTTP zwQWaFQL%ZSSa+Uh3tRC!Ylp>>gK3*b2g$4;}y&8R$Wv;Ijf^Zb0foZjo z6tMWnQjfjlRS&>4I~YxV)kl&sEpl86P>B`b5yZS|1#5Ex5sD&e09EF=U@TwF~NpTjisNb}d*a}n2 zbLXd}K&&DAKiEIE{XnP+DUg~9chg4=ha+gjpC>dj3PC*9p~i>AO-(I{~ycfGmbb@5MCm} zl7k@JHM|Pv1UaGv3&TE+2d^Rz5K>cns!f&dG3CyWfsUp8RQz!mEB+rJh2d_1Rs7Av zQ8)`Jh}{jsD`9J~0$v4+c^Eu3F{e6G8wOe3KD4rFxfn{O5 z+Q1YoILu{HLmildSj2%TO2wltz{uCjf}7Id5!{_>!Z6YPAb*|YzrkWsc!h;AA1T-q z6mL|=QE&h$NCA3RVA*_t4yy%GL|#|w822dj1Ko971Hl4+mip-kz{gmfglao{zQy zG|^$2%=Y*bFi@TM2K*GwAlMzYD;Uk_(L)@;keVH!#|O*g-z#c8;o6@quu7Ia8zZ=n5hU>i=HnqRv_rwQcW%H5u~v& z3gZ)Ll+;m*>ElkZv<`djA@O{J7-tTJC_6p@n>ts?r^s*?e)QO?jj-lz%zzgk_#o6~ zvJiXa#u!?-4YH7MS4^9juwrn~SolVU9SwCZ)tXvCL%@5%L>)?H|A{%CbBF*5>=n)T zVf7$}v2tugXd@7VW6H2%aL0l|8s~#>3<67qtwP`xs5Qzi4n%CCsw<%otN$N~t-6I0 zsxtx0a25(V{UCaWV}+C~0a-H475JyPyN5V(;fIH?I(MW3d&S(z2dIk1Wz@(|o|^=1 z$*z&@u>$dGi-$YdjbJpQBud9L#tUXjI0$BnyBo2?m=06242tsO*a|j**WfnHE7|OL z%Z|WKJWa4$#sn0Y6hhgeu8xH%_@PXxPYTOX6_%|*!ctK@m&h|(?3osa$?BF3M1r@D zcH7YkBNCKi6yPsgg4q#J=Yya)gY1Yq{=0~O3j4ok+G8cx`=XS@hla53+E~0D)qI47 zWR@$}>ku?b1Gh|KYvVPf9E3H*T&fAg!vRpjlGTb(OKOxy@qh-ePaz5EK+CCErqi`Y zDlEY}Qf!6PQW0WTj@8@>3blZv?hQ&PjwXwuAXPYk#Seh5)H-Z@GgQpwrT79ruyIVq zaH$S~_R;nqPin>&(WD`1W3((1^VAWP1<$nN~ZJW!aS@Gy?W1WDIb zs=2im9?2%KnnUTT+)t%;;n;K=Qtz@jC4LZEhK9T3^&SvO;TQ-G$5}s$0UWWMSVU^N zHd1gz3h2kvoig@QbPvz6+d5QC>NxfIhXsq_~IEs41aPN;3S!IcN?HDV3>KLFb#Z$5h!SJaByP07~ ziklxq~3tLBk?_kNO0|mnjnf~OT~9R2B=Dj zu;?p&pbv_Im#VZn9KuLlT_A-*YIhHZp?FOYG1gn8HdsMC6aX><8VVU{X+;(DI;n`Q z)@tsO-CVR9_wB}=Qhmv3)?H8Bk^{p%|K!=tAXwfbfvpl-#Uq1a!cr8)#cV)63t>W~ zWM52~FY^0FuK|Z@b|`!km9SJ*_#p>TGE^Hb2!f(`P)cKA7L?(5^^zYk!U~+<9Ajk* zceZWq&!Jvbt&Yl${JbkPD)$gt)>=ACj~dbI)ox8(v`DQOFg1~-0k z^^#VoCa9`^jOoP}F$%FKeT^8{)R-D>T5yQsuwTp{k0bzkK zzpLbij{spY7|Qnf2(09!MC~9#M^I!}SrnH+XJgrH9XUZ#8iI<=sBhsK7N_4uyQSIc zGgIcxL4vZmT4|oUz53eB`hPfg?~i_Z=QqAL{V!ji`!{Fry>xZu%a;@3&pp%K# z-CxUXB6Y19?Yn8KjVwlnZt@sH_9~8{8}j=~Q1`eg$gsA}R#t$Y2%^fjvSm369G+5n ztfbROzA1W&V>#xW7-w&IUYjXY*IKf>7TQw@YE4tZ>ruaJ>oHUbHKa7xawCU_l}wWg zr;tHgqbiTEFmTXp6k^Ty0k9IOE1=>Qks6n&L^Mv_lK?|@2wJT)?^}%}yRl$3=F9a3 zYvbrC&g0-n_SZkTMd~KT3W2pNXn?yxJ>4R;$P)=d8PAOYIvg{03UB-)x{#Qoc4lPR zM)X!;rGzalki;?q3oDew_U}D*DCmcWu(V5K2hV7t{*FKQyi{s0}eG&NtEYRsq z_e|(9^kD^Fa}2D{70H9Hn0TxhLQ;UR0F-H&v|=KrhBEj|COaZFlwCS%sYXmP@19w| zZ#P!#=AzxWXV&kTb=P~yBa4P$dtZ7-A-%OXxwSX7tv8iT>f|$Cy|MNe*H(ChHJbfr z$G63E_9zF{hk_%}Mxo6{2&{MzD>6F)D_(e{a6w9D#qTE&2V`LdXaY68h1G!#n61zV zJ{@z_9r&?S3ENjw+(Aa2+9DrAAz&)S9f1pTget-co6-rgnsU)?B+-4S#E39%1w}Zm zM2GahKR5rCAJ6^UcNbo|w({1U@?5Fb^f2Bq`Q-l%_9XTXrGIJf;1>?`|KZQ={9it^ z<@ZjFeSUY(r+4*lPPMX0oz9RF-|o6CP^X@%)Ih6y{RqX#cgJdcq{=C?yF@OuA}nVA zN3dYR*&_O+tOuwEjET80>uZmxOT>Z!e^`=2KhyQkjGnlNI{GjpDbj@(AnDXzrgqx2Yg{!=u~mIcLz>Jp}5V_BN7d{BJp z>avKie)IY5-O*1t2DTC`)cAqHNJy|jWH_qS=B}!h6WmaK|Atk`H!AdNR@T9IQKQZNTAh6m93jsI|(}@g2$GNU@UW4qNuKUq959pI;3T}NR3)U1UP8}9U9L3%D$n0bZGF8Key+PPi^_q zi{t;*p4s=b%m)rD)ji&5+bUpGJV|*=@%BK3n8dW{~)w)ptvNKNl0RMWm@Y5S)2n1x9&W` zy0Y|x4^{<$lmCrR?U34w!(yit@=$o!+*hVnU%IlyZ@}jKZ+>dWhDAQC;8T!{^Xdv@ zA+@a>tF+GJcxjLlOn%M*H5`!C zn(u9tHYlKPRxp07(i#xuZV&3q?9lWDh4)=rc_d~?VIjMRs|vJ*q$jycTc|qpu%y$k z89GvtX`|7Q`lM9eA1eeSur+R`wC9}^VF`b(+YHOsHP#aE_QWC&{< zVr)iSn84|&)bsCOU-{ORMQ+){oAX}`HUP;LG8`WQu)$UM0T5P94hz(c@IolH@Mhf) z!abn}&I{eREo(y{OT`ff+8_2iS7DGhA@=}04?G!wVlY&fXVgc7u&{Usi{felAz99< z`Lq@(=OBEgBmOun@j#ob(**Om3s{!7)u>B2EUexJy7tXdvoLgaIL|Th&#_D;bS2AU zMZH*LeWj_)R^1poBlTff@h}UQJQdan{DG&U%N%bAKW^B))m0s$L^q`OmCS<{u)V>n z4t4%_YJ?S8b(l-VdMu|M9~RTS8Fhq%4GtzK!ce11vr;V+GFXXV3S>@qY3JuaF(K1$ zUB3VQDM6&$-2257J0p!|-G)X=U;WZ^6lDl|L=Yox+I?uZN1BSI%~rG^sG;@&@~}LEAxboUToD$BmB{_= z#{8^ea)T8kzk%_u3r=4vPEEPWTg;956t4tAZa2ozsMn>{ekwjll~gJAbF|}RqFR>p z(_3y6WZ2D)w`U|A7LU$s>3-fwpG5U>vEm^z={m!!{8VnH$czdVpM@WiW~%by13<;L z4Go&Lisn~|R&2Y2uxwfWM7%lyrsJnc`QX)cz9_N^__0kK6>U~{L!(FdP#NyYLNenO zsKdoYEs`U@q&kZ<+WcFW7rsBWBtcjwcPptn)voBKPfxJe_pUE}i_`d#zuzyZZ*4v*6s)u^MgXN z!yrZ^uc1NK001aEwOR{$(&?TAcpk2M$cr+1At9%M3&6@JfYes3)Y|t+oX6^M#!#_U zLMl5HA;xLd^|jE6V7oBO@7O}OK}l~Cvz44liL^=3V;Px1hHK1OxBliG^ zRTem`juK>PpVdl*e7mKk#alBo2_19<2_5AUpkvn-YXeMKGMB7=kgT6PUVHTwa=b{* zFYT*>kLOhAnuDmm%^QVRl6zuxDk+i@UMS4v6vBUr??thPK@9NCOAFt>E{Jqn`o8$W z?)bxac-Vl-@l57?_uAs0UlI{k-*3OTTLpZ=@lJT#8x2892LNzgcYbkocyv@wLa7rG zQab1|G_A!$IBu(TW#;aVv2k&~1qkc=ubn>e!YQ)T2rA(oh8FQDH}5PAk8TOEk0o`; z=({}a`NF1065heHqwy{G8fPud{EA4 z?~}jy;pyjJI0aNkf|&5?vE{S)JS?E@bz-!hG4ctcE z!x#We%dS@)I&K08iEvR^%(p#Yd{*cat35jtH)rx?*LG?>`JvldjR6Q)x{d&$CAUMSfvec zSSa2?D2mmRtWDO(P2~m-0a*ZYVJn#Njmi1%U6UZJ-+J*0xhxk$(21GrM3(x_)x|%b zoabJ8dTZZrpL!w^?1-acKJhRIw`>`jFnxqMqq=*i~d+q+OacttPSm+T;{9sZ83)oM+r zTwGtDUsybNXrixBpy61^qh#7M^NTxo?*X5~T3IWdzczjN$T3D${5TU>AW3V$o!UTn z=#|+Hvrc&qgjA`)4CWHksrejH9EPnzyj_h(9b=FC1B|8hYaK<>l(PwOa?OP;!QuwA z(;8$6qnoAWmE~e-&2$JXQ#*IcXF0yelBA!aqN?w<}H| zkmug~>FHoIMm7!Ye{zqJFy6Z`Nsx#{EHjK3K6Tu6-KiVXi_5Fr3QxXxiWdG14SEa! zfJ@h=^hA2c_&EKob<}>f)`F_b!1j2r zAvGLlWl%GjNHkq{`tIWBmTl104hKkR4-?qlzPDKSV0dKIvF(}Z>9%aWZ%?5&S6nZ> zJ9#CW&0&B-Z|?BEJzcGNr3UrZ$6Y1-(0r~KB0Ek)jLdH-&Y~SC;l1;u%9NbLQuAW? zVN{~gm`kb>#z}PI-ASh90UUn%=%-#dHF4zVi5E}p-m@o@Nhb{B;QmkS-M9b53#Xnw za`fbj%=Eo1AoXkJrPc61`GvKP$OXXxbEhbfv$IQ)}cW%$cbjiCO z5FAmdR0FnarC2Pkmx?RP$aCFVC7}VCHft3_1J`G}dhlMR)l_-W)+eQix zJy)sPa51@X_hu4=Me5f3-o8gGn*jn^kxkoo&DGk9dYMwWw6%(#PD!8if1Z!!lL9y^EL@taoLjL*1 zJKwo-PXIXm|NPVYA_r~N#&=~1`pYZ#{_Nr%aRdIx&+JpVmQ+pj=yLpEd9Usi@>u}5 zcYi5c7$n}S0OJ@Mq_plj-!+M~{KRQ3U`Q1Ckm5z^gwwvv2=_LVtm_zv({k z`Cw+QM$t4QdZK+C#A)e#k$2gh>np;on zptaf>Us4Bf>zSUcKd@J7j)`6W)j$m-Kkt>5C-&?*eDJB@Rn)8}HE7f-w8|L>bf#$r zJQV$1+TMj`Q&ik&{x0ZTP4?=}-MbG?O!W8n2dC+-UAqq*p2(y#8$Qveu3dF(+hOxR zuuy5pNt}H>sd}x}tpeEQkLvYZyY~b<-GM_Bo#%%qcJA6u_D?30P9zcmdK&j%4c^rw zuy3ta3;Zcbkuy!J>cVo_aa>p`JE>%ncq87wF>5wpvE&3(yVeM{u<15G_CBmf`am*- z1yPoCPzAIDZ)%tJC4_Kj1dQ4I&o12l%l8G5Zd?Dq_{{!pNxO}uBmL$3^IyMkTe1N^ zw?A@lr_-ha6Vtp-tB%mZ4p~g|1#4S}^FI}IWJ9u~^*si1o7@+AXI}G+x2#dUtiEY3z+5-TvvR1nA!Q4}a zCg`&IHGCX6tVcYx;&5BCagRwNrSnMXBvK?pTQdKYBu&Y8oGCc0 zjptQ%r7*db;o#NU?`aO z4GeABF}{6lJe$w8Ya!HFKIj(m*1PA)lY!nW$7F%Jeto887F#S``Gx79piw&Ky4?{;_~Y9T8TJ- z=trOu-d$L1crZfQ=*1)GV*c0&GN087!Lts}M zpy|1kPE^9(zNL%a<`!0}s2n6D8$7?Tc8afTK;`~%1Rl-`sE!wqgE=Len z({Xi2z;&J8f!a?&!0}K_~$1OF}|})wR<5({oQ9nh>L0M>7BbSEuI|*X_Og z572uxpM>5-7{XFfdw&xVmJ^w%C7>i4H*q|d!!84{GcB>KV;z|z=db{W;Um<+hN`Ub zh$L^e1Byf?ben+XsY#%&RU8-?Jn_P*!%rW5{)JPACXPPuKR-Be^tqF#4on<f zEcMr8K#u|U=jS2J6>=E^GX84G zU%6D0XJesG)-E8>aa-qKT3OBI@-1lJRQF}0nXCZ&N4orHW^c{TOxu=4E~5#*Y(lNOxrW;O~C+fD%mM?)fTp^S+la-}(Bv zTjB9YqQUcNa1pUj=n!O-I7e2R~j2e!)|DFg^0t#>X-5B~VUYo`MijOdj~)H%4- zT5ama^wP@eFaBHy6fCW*F0ZUEudEgdeMb);Bv|a(BNNhCsxPK$%I4jBUg;OYm{WtLET{@4Uz^y(h$7#k0G#vi}+&XH%1bMR{N z>eR7kk0;Y0FzVGHP6__inE*2ZIbR=ubw`B@>EE} z1jN-U!ozR!__!mi!0(QtR6-|So)JQ^^2M!~>D?p`OV+$O0%66;kThj@DoC9tolZ>4 zKQEX+QcGwn)W%43X=sqpAgTCE_?D@%`3ez{=K7023WVKppvq(CmH7})gu2%0~n|k#}KQ3AJnE%_G zx-tFocVD@9`O12!yleNKaq2fYzqs=5g~>PHKKt&4$@i~b59V|Fpx7lK2xXu0CufOW{wQ@6<1dn7FDsH;1gGh#lqlFVW92u-?F{Ek-^anYMV8L2!acAlFL`G z508vCn@y?G9U!dE_oDi-dp=85GVNNU#{Is?dmGIrecwZ)rw+GB^>yE%;{UNmSgOvM;o zn=UUjb=B(+$SZ3ldYMS3Z+z=$PbR&(R=P4hcks}Jxby3^TD@Ll-itejBa<|S3poI| zIXhQ&YEll1-iAVd0c3d$KYac4lY94(Bnk5Bdlx1P14CQ4Z41B=x!k;WVRGA!@ebBV z7=wK|4!+69Z697WUH9~vceam@Z`rbqtS10jS8v|hI<^yJWM7b2i!o%3Hg5Xi=`;KG zALuI-f`$82KqIU`MZJ1sI#(DP9w=m@;1wCc3Q0)%2qE?jx`xfA@40`Wc7G26}XBWJa=$4(2Ny-|Mk95W{>7lEtS15l&3<#k;Tw!hhIPS4KG%yw>#v)L@7@JsNUvDs`X z0I+R4ShJ>S!SB$q!}eIpXO8CX%vUOvk&)3h`mn5~&t#2n9SyiJ4ufzSsOU{2$S%-K z$yw3zE4Z_nbiGzf>6m=?8?$q{Tt1af%d_nZ|w7eGSEy(q=Nop7X>`JxSbTP)j zCW{8>ESJl1y+_G+(NL#8a&RV7EU^cP7 zHwj4%u20X|P2d;}U^xqpB5ZRd>!qtV=K>i^`ng%7t>`(`S`{0HVbGzPH)rP>9_$z! z*H8yQEw7b(@_pi#Bs6&Q%`+I_@WBJbll{ZjJNSs;pm#4!Zr?H9S11rH%OR}5`V`E6 z)n5bGsGR&arML4r341j*K29uS0c(@M%}go*0JFE}2RCmE|G@;>-w#ipIpK#)U<`(@ z9!_4JLW%U)_&5OM6Ie&cv}{0HZ?1oAZ40Ju3ffBn|{k!O!{hiu44Sd%x}=&S=?01)MyMbs(e$>3E;>dD6* zVL5E~!)VM}yl@tTcrr@OTCaJbt`f(QLhyzS@E=^`ifVKv=mC#NAs z=4aq$3e+V47#b*S>g&lTAc^ZacAD_&Spy6*ZPl{|BwF)(6_$2EFPn#2ZKXH&wTQDPbL%m3^=s-?2(DhLxmn+ zWUNpKi_9l~Datx)vw2$`OkJx4-m7yLFJ;o{fq}sePik9$z^t_0;k(AR-Mc*}vRCw3 zL@tGnwjOO^- zA~4$G#}8p~&00{r{6rL|A|DOHWJPWFaF9 zrdskK7W)KUOvHD8=hEEQ-{Uvn$c~{e{le3d9@pw!N%IZ_C~f%Bsacclb{#=)vOV+a zjp}SVQ^52h=~qB<0AxeUGlvPlg}KP2vG?+ zgcVRu2q0s$KX>lV{Pi2thYnBl77Co6hyirZ&87@Oa;=mr*?g~RcM)&e-G#-udy6zI z4Hzrh0iV=6khAH!KYiyMXvW0RV*p?v&=J(V_Ms%cvxEi)l4ll9-<~fywPXAD5S;si zH{LmP8Var~0D+UmHhQF?|`1 z%RM@ewYa+8o)Tn4#$;8UKt6%VnR<6&@#^&( zyLRuPQ}6?Xg?$awHmyV^7tsHsLw%)U5rhnW5E4g$LReEbril(nrnOoC=i4-ywU09dx&sr4i3r+;lA z-^5o+z^hBt)iBbMzA9_yb?c%ri7$9@${gfv7Ztw@Y2OwUw!8WxAJ3SoBrT$ z9Z^}dLD6YOY_7{S=@myX1n{G4cmLg6*93&M=}W(OMC$lgdFbg@fCOPpP0!8VTWnY7 zv&0!$izck_@V-5T-W*X056~rP{+9G6+P@#uvfn;8IWRc%#NK@Y?h7!*joEfBA-(d1 zSL;cq0l;t zMQ6`XdKeBJp5Wpu7={r+8d`>-1Ay&Rnp#rV4Ne(O`qrv9&z{?{V{B;Crr@O>AIg3A zN2f`Ys78TP!fmDVh2fFWc2Tr%b9?!(PM>)GxuIMt0Alx-R#(a+cGhw;W-K9G1f2#q_WVbU@R> z&{lI8fO?A*D#{pz8Kv7Ni0I@HcxYV#f3e#X$FwaC?~>AJ7K`LkpyJv2PRskH6iSfeTK zF;`2ILS@4+G6tBX630RYPIq8?0(EY_e1$Pk12G2MvU~d^^DRoTtyP@hY6SonE?p@W z*Ph(FuUf5gSd8YpEYqqq+rnNh+mrAb72E9GNsul?*dvJ2wCr3@hFJNDvp>M0)k>wW zP^ecO`f3FLPwX7iH7#Jo$X$G;TB}wnS|U}c)u*QCUj50L@4tTLXBRG4To@b~edf6n zyPw>WebY`cTrXXm`RY3#2ncKV%fEaq z4t^AgDw;~ez&GF(AAfc2&c8czML<}?U;4#k^hhW|(Gb3X6!+g*Sgf~T)5s`ryaSR; zje+1rYSswC3YN?z+EAkDx^JJGbgH#u&mJe@AkEqkT`Wjz;4`7TR@MN5Sr%7TQ@H{S zaDuc3+C`O1005jl&#QqMBW!-)bSGOC+zA4}Wml@T(cvKgSXf#y za{Y#3V1WK4XbA2vuU?v(KKktOTCH~d>Xm`Pq5i?49-o;CpkffydTn~{+RWU6LlcEU zAvn;%36s*>OHR$qRbALVHjXIo6;d?o1X;6jIvm0yzbtA|W(R_@wBuvu!@?|MWvQ}H zqxt~TxuYSe@TA@dRM!Oa`9 zb8o+U{>`)Je*EU!J=xsOvF&;PYISdM>Fslqm#^J$TP*}0d7?Ld=$32 zS_I!m7JNsn?rtgN_2>%Ujwa~Hx^1D4ZCXPFNI`&nKZuIGqS={n83GA6-X5zJlC(BN z@l7vXnEsFNOmXXZW^DM&fBRXfeMzOzd4hm~ScK&%nwR|5)!Tpa=KDOt8XNxIUwRgC z921906$Bsl5!Qwut81mpH#>?FsUpm1o~~;buTIS`Ebe>iz~JBz5y*7eK6(4xWVW}! zAuQ;GpjP_xJ*H)!JwG|Vd(YU`QO#GZ2!i|3=`#Vs+E`rrE3cg3A%K$8D#`!c?vD@Ic!{c5`;_?!w|T&peY)>4BN+;NgkBzCx{5TV7hkZSQL? zolb8mycVY3;wW-0up*>ITGc=S-;Do`8pl_X<%;XE($HwWvh9G#0KC*Z2End7j zH9Ru9XYW1$D5$03O11X-nRoU*bzo?4h||!eB@n7cQ&>>F!-`uUQnwz%wyj()|5!{N zE1%0dww2H4ZL2eNEGw7K+rc!Kw=64{Z%=J@n$72J)5`Y>^K*I2vU+lP+qSZ~yklFr zT;8;-zTUiLS=oHvGOcVrPY{;4yUAxcvQLyw9sd(^{y;1g zuOgsZ=ZJOi#61$z*zJ)k+U} z-qTa9RLH9t|JCP@9vm4O^t=|yBMbJxYRSTGqquy3VR?1y)@_4>L*x@{^=3BBUr|iU zp1-&7?Dlcn;*X1ES^0dv(rDFI*4{mLzOT@qN~QoaLfFljTe@y^_T)ew0IuJdURf=s zQmJ~qE}hou^>iwgPNfbX_(X67v-$kunl;?lV>^`#SFV*y<|m(f9xx{RHlNSi!MWEf zKeAc>c?-0=i^aj-p0!f>^3`kmKCxfJEdU(=uHBgSJg-nFkmUyk2I=>@Ui&(7>B{xH zi%Yp&{u56fur15TCC0XAv+QmZ);7plFW)^@=@vXC5cg zbg3QPksAp+76IfFP_Ni)>!mwOs|OEFaNpW-Y{#*OM@ECqNoY`BTP2C0iG%vsSory{aBqHiWYjQ>ln%IAuT-nmYOPo*-CJ1PF*Y7}xJX*&+4GZqgG1S% zZy=UywdtfWQpf?o_k4tfF}U^Wx%1~!sr3G*4x}?_QFWC9XDs`On&V7OUC-unPww4^ z0Q6S9TCJWvKe_*@0|P@tz#fGGo*7~04#2U?H*elFEqmAQJ)5^~qt{<`9H(3yDD?K` zbH%mN2eWgo2c)qe1_>*K>-In{eg6Hah2_;PTet1nvnRMaF%Vd#HOn$PKLdbjwYIdf ziUAHCo@l3rJ;1LY%RE_9#Sk7|Kg184!|Lb}js>VQMN$VA>n0anPJz2e?AH=J_k2yw z6qQXsDS@bX9zac@5}F)ih51kEuv(_?VyCy9W6dn2A9)IW<$R)R^Q_b;q56X}Z5=-MF(jHG4ak&57^A7!Qw((kjw= z*=mAOG@WV-7K>%O?p7PEC-?4q;>o=rbNthvp6~6`4a2gmS_>{+pMHO8`r6HzMhmuV z-L`#fJlHnJg*V9@{yYD+CkPi406 z7=QZcv9>$RqMX@L9esdR&|02%@bJX&@CcdH0R7_o*ZK;DR4T>i{o5Ul+r!$(mTgZw zxo^wXZCqY%CYv=f`T3R7>u1hhxH{Enww~C#&tZ8z|`Rvl}_vQu?o)pV*YSTh|hnI0J(edd$L0b|7FzEV?04YcLGuRHuNbl730LV#wg z@y9t2D;U8r3xqgddmH`;-Xh#hC{MTz1X0}>$&!C@@#fcl#@nEdjgNf!?;ICRPhxUI zFvuWbWTv;|`|scS4{u#@TVBllc64mycYpafhYD%N0jU#Qr3PiuVaGJEp#iU8&O-5u z7B&`XA18RDTq*%THkUJ4#z%UfUDqXuk4T4D_%8JRM2c;QOesLr#~}p7pM_OtDOTF| zu<9ku&k9*ih~W_V@{$M~GTR+C$rpl~%_0Net~3BqnXB)=xZEwQ5zmJa@L} zxoHx zXSCZ1`k;1NMd!!KYCkMRe(A>sVM#mUa0N%5j?IGURyCxAqbelB6x{rPIHR}Z+vjh5 z?Ppg7gf;qypMOp|nA5`=Q(Yza!pN)Ncz5d0&R*|!AD(=2`xifVjC_jb*VFSVBnm6E zWHtkbX*W`}5lK4|MHL=|A0uD^4|)J}h6Rutc}|kur6B>IBBtI@`VmMmCw#+{_=45` zq-aiB)5m>ZBxvjM1BWCZ9et;Q<@YX_3mw7oQ|=*Zh1#RWR$P*f=(OTF^%^ow&#Uw`Ks?*1{FOL2?< z`E-l>UZH7U0dB3>Y>k){dkSbM@Y!=H#$?mSu(}?AN6J1n?BG)wf)1I2m@6(ih9hhn7TB1P_d7uX7TG|eAVs`HTKQxq5~&Ybuip=j5;rLH4x*BCxnZ=Q#b zu%y;1so`5{-Ik8zm?4@`(ON5!>2uo!=RFQ!4 zatL5VyoBNXpC?w@k-=)1jF`qRGAjdo6h>B$Ujoy2fE$ap( z(@8B#r4kiYTZ+qM4427bF~AZ0SFj!rWV|7pNlUXiSYTx2m7$8dQ7g1VlJqQ z3~(1c4IB#Hbdsvr-2D#DVlx;xj0Q4{CfyRm@n}MCP)DdRoig=y%=RUL}t z3zzJQg`8EsMSx)L6LVJOS^P3Uh!l7Py24q4uMmeengl@^ls551pRZGcFVf6?``#vn;Q~c@A zrtkfC|NeVFxHKJ~MIug<08a(zhW8V3IE$V-m2RmkT|>Y5nTf$%CZq!R@mlXQrLyp)JrGsBwH_wILZQl$pbN?Sz4`!tNPY^ zQ(t}Sa#!E$*v`#g{`^T0NFvb-6Y_Xt>dycA>O1j2G@UTM^vlm586OQ7UL&I{RJcT} zO^bsRq~I>*k{HVfCbk8hN}5CzIK(oiH3+2+SQ@E@B*;#+uVU_mFd7R92s6Z=r4Z&+ zHafY9Oh(v6N`6u_7Zd%dc8f= z$o)@$=lGHFQB|D)JtEP2SdwIK@frC6>fv-om5+wwvzW{ytaem!pX)Py5*<0FpN>@_ zgHDbfP#hw)g+MVlh)!{$xtq{^1@ZJsJEXriTXi6H$w6#yJ+RCajZ$fk6~}E!Jyvwy zoS4TT?Y7Ce-X;AR>ApMu`hz@DW~*2%#$~`e?DYh({SzMn!eW7s^m5L5vP7am^tuF> zc~7`iMyv$MjlIEEUA(>cm2bb{bzeR8_ddD*AAahP6fbo3xH7-|m2ba6dS|H~Nkji{ zpWXl8Jo5=d*FscR6yga&JXImuXH-l?7sr~zJ~+ae1uV7#A?sCoE~%ovI&>9Q%Z@U5 z6%IXOT9Ble1;y)EpmLT+=0jlVT4*;J@Z};ZB^@bBUm?mi)fMU_q9OUEkTYHrmiL0# z5}yX;Qsg{gFFg{3MdOh;%R6)`7R3ulv=tfu#f_`B&?nBeEf3>=`{Q#h;;QQM@3}qO z+IQeim~TFEdSKh|AN|)Sf9|QB(oY#1D*VIe_kZ;t|LWg9u*1+bd1}6(s(2JLh}nH8 zSJto`|Elx3(h$_@u*hvWwo-pYig!t-EO%D%`|;>OKOURc zC7sM3cdh^2DeMetdJHmG-^0=f-JD8}LA-6Z)?mdjcrF2I6=9QBN~k>*t@^^=rrW{L`O5c4F7a zr=Hxdw;GX%l|i7PNXO#TSS)0mB5FwiTS1(hSR95lF_l=)cy=hikCf}N6g-Y4rj=UC zjBu{IlA}f|ahWN)V$ozYO)MmZ$P;Ky3EvmTV;JJ0b7(~`UUg?1&mypF3lOsn^g5YT zdsZ<-LVY5VB}q6kq{g_+5OW+W97dyr`nJ$Zchw)p7d;oI3FM{ETfD1jRwXo4GR9>;0H8tZ9}!>oaV zC6Sja3TUyz9txH&`PZj=0OR0GcCqb28s$z;5vQ>9;?_@jUj!Q9JZHuWaokp1&PpZEZjT0ZCN(iCqkIGNXG)IF@xf}@bp)th^^6KpJ z`mg`#_hWvMzMk~&|H{dO+ehG|c%V>jB|b|Cs#cOXg2airZM6D^aTqR^+G?;`*HdX# z2qb20EC32AF^W*EazBh^7AhHp0ksq>UlMKnz64mBOjRey&6I#Fq~PGN65Odk77~cj z5MhyH8)K$cV34%)(H<#p70HIsOowI5yAxV6>BR>`_Jr)^PBwaf!+W6uYLN! zwqe`0FvgZ;ic`+-rqR^{YSd9eJWLRh%_J9ZE{2_mr&sjIkAVRZP(wOe03 zb7`?`iwma{#%K1A|H6UYyEYa4R2iV31Y-b}W&dEsNQ63!9iso+POm};q0W=ebN?-v zeoJRv)M~~5vhrJ`Xe_`hN&Y9xfnhb)pjQhh?Ce7EELU_XqN-{V zb-x=q0#S_jKvB0NVsQuxFKj?cs!OUhV=Qsu<0uXb$*Kb7iK+2~buqgFV+lE^J&JCF zR_w8wQ`|6@>8?-}Ih@5|9}WSvTCH+vz2&;4(%OkVTmRMH{nWqsrQ<)pZ~MV*oA!?m ze0Kl%=MV1u{lE3e|KsmI|Ak{uWL&3QT3@(#x3s=CfA{uUadrOg?c(ano!hromzQqe znq661ygfU!ym#iwpN=rf)1R+?y4rGdJ7Q`wMe3)60wZ=Vqo?mKJZ{ znq6I9x_f7?xVm!p&fNN1asKY@()!xH`8(xuX<=dBw9Lh&`;KF;EH70nPH}amUaPGa zR~z;E`g+lAHcO?omg|;F>#bIcLvz@}mT6)STbAizOxh5rI5MlNBz~dh3xu>L%;F|X z@OfD*!`NY_{8xjFa4v%%vpE^e9HH`#afI6f>JdFwro^)js;&Ymmlo&YQYCYmlx{1{ zZ@^5&qAH=p=|0^gz+$E_CqA|!I9jZ}R3S&s;e~`PM~dt)X{YyxkFfBAtwHP=ODd1V zB-;c?8c}tro`EYqi?5S}jkuSbGf^V}FGK{^B-6L_HjO z(liYa(vXG_(#dm8Lt6Wx>w4$8rqlB^>VY&3`76;hjsA$>^Dwm;Gz9DRF!AtK)~5%s zQrH3^m>((l5nB2b<2qD+G$cyTYWj)SC8g>Z=3#!AYRTe35i?3F6C!F66p9`Sm0YC= zOC?{1-wdgQLaA|2%3g&y>BA8g7C{#KWwj5Pw~83ak$|?41iR6^55otUW$byTRVKK@ zb=`8gh-naYQ0t~7FTQ4YH@X?TCEgUmn#)#b$Q9L?Uj{f+p<=c zmmJ$#U0JeiYjt(maqQKV<%(?=S5_*HQ!K7l9H+RtQgNKM;%c>0Szjww9A|y4NS@Pk zYSro*wS4=%D=Us|6<3!nfBi-OQ*6sxU0HT)dv&Efzgn%3PgyIjlC{&g4!S} zc(wB`O+(PeSp>cT;t4WPkY5jC2jlYWB?GCb+))E2mc_}p1xFNCuP=s(ifw*6kyuft zZIQr|?g0()+8Hl^g52&;OP@%^^{UG$MPIu}dtuB}1t4|MzREQg$?kzd4#sNrIZj%< z%2=59>iN8tci%va!^0Y=n^G*yK5xYMSOaHXu~3R&-sj)+&Z!)a$iGBH3s( zlF5|ox~X)!<+ak8jEB9RY!+jj&E}AXvbj9cw0v)`rt7)hUfs}pd;4_5AkFgf`CcQD z$mM%=!^q`>WsH1puWsnsT#igNU8ASDe4ael4Lz672k#>5A!{a|Le`nj_v(h8>+RKa zJ>T1lG%cIUgNAx~vKZq`Hrv8px~Io&x#@Je*=#10sYaubFcP&|)i8`&t*YyKrQ#q> zt5lr!-k|nRu*c$L@OOo#vCLt|oe$Xe`>2j7*As~2wj`fx$-7L_N}MHQa6BwgA-Rk; z4sF@CkDEjk#vw2ETOct7fkRbPB|ztXB1q|sH=uDd~-1M$|KcwBEoBO;5GM zsuyD-O%$byK1K*j96DmMEt2N)BE2QBPHi9t!2}0*3i}8xSU#8u)Ea{S#Nx05Sy0o+ zOEmXHkWoNL1uyw9sXd3htD_i-7)lsAyMk0mp~pcyhd0JbN0`(Dts-AATgZo__!?;JGjKR*hjMz8}t)qIpusW`f>SF07>Fsikxkx0}V^<*klZ`4!iwA*qsnVwdwmFdZP z7-w^N0O;-Q({;VCuV5q-h5ms=D%n3Un98JwHVvnHGJ~6jGuiB>khdo6C=k zZpr0)hetQ(^1UOQw*=GS(aq%5Y%afPcr0&K28zw%Z8`in&W(5OUNC46jh4$hCc->xh>o3&c_!y z2UJK0x1C&c=7*|FpsEKrU#W__*jEnAreRsXAHF*Q=6mNrZ1+6hbI6pW&c?($(i#I$ zBx*4IirCIZwwN@l;LEzw90SDqxF9UrO7l=U#QyboppODug|7m|gI7|770E_P8`a<# zs2te1dZf-Qm4YlBvuBIK2qxwAkh-}JoeaeV%p+MIuToLOVPYacXrm*Ds1OJbM2Tdz zLZXHv;Z=ySOM4tpmBX?jamKX2Inxg{D+0B-su0ddl2}hwCg2Cxi*XmRt?o7TUe#EteU2|1fa&7)Ez$%U^^x@+#{9s#-WFcrsJ$mDZvgJtW zOA=GJXl*(iQmOJ?G02-{B6Ukm%wa2}_QX^B1887CEP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z4*f|)K~#9!teSgpT-ABNf8ROx-j!A>$q&Gm@PiO+2q+ZrWGHVa(@6|T{%eS7I@1RU zblOf!(zG+A5GGA&($EfcLWVd^{^;akXWC4YV%(0#BXRRkwbz7wrovzD%sq0`np;D87%?pDZ(g$6LHfS`aA z2*}zP+Rhk1i#-mZRA5=&$TCM5ShS#$W{x1RONMX4G;u7QZiWfK5S$i6n)Hn^Sd-t~ z^mKz0Cyo;&Swa{H>Os}b0?Rk6O$-|6a}9~DMHIT72b~15coUIGfW;wRav(Lp%td+e zs5sPk5CK)hr_0w6D>#?7&Am%c3&&E1wMs&r&{aAJ-13Gsf-xTFa;s79E^*wa1e&FU zR)~|7z#333B-qd5Xl@#sa;^oZJRYkq*AVrnfJ4Z2O^Uw-oPsuG+8I=o)(^`Z&gr7_ zQ^Bz`Qv*n;*s`9s*-{mpbBGAm3UM40c;{#t9j`NVjGHk$3aCTH;1E1u6(9rB9L@xV zc?()7L@2bSiNnsQFy1T1$b$1z!Lc+Z3TQb$^Jz0AXNoa`_lj4C7$FeJ&6P0* z@3NLEs*@Hsq>yee9>t*;eDhG5BB3EmJra5{1$7>4030GSM2$+$6g4P<;+uS5o(&d* zpC#dQ=cj^Wsb(fi6fb(Z77LNWf{3(~LDUfBs^f9aVPr-XMP)|PXG?=H3)qfQ6*_4lq+4- zrYGp?E|d8bR0^%}7zM@Rc@GXZXH;u3{k}fn*9flv0<=xPN)t~JwM8ZfnJ6-ubTJU!q!7MI#y-#<*P^Y!Pp!Tjv`(Rt67=HvxcN075!TcOzeWKKczAXrdLk>E8NQ_$VbRO-+q(1kvOV`lf2TF-+Z{5MRk6ys7AG;uD z##oJOZ{5jv@4tx+gS~BG;_Pu?`W3vF+kEm})KNsx5=9XG`5fb02{#G7hg=IJsv2VNh~46*XiM zVDN-~8si)El=_%d`1$^$$kZg$XLYl-E2eMdGra!zKe6`mZM=QrEhehnbeAu{+A>Zo zp!8KDj82ge7Mkc=5~a+1&y}*H<29b%J4UsZP_4xrICzYsV^xMnPVhIMy^m+R+5Rk7Zy99UN6+sV<;+~9FXV1Ub2zJz zBC|4I>F_Kc8wUD#nsKVNgrUu6(BE6)=va*d2TyQxyw0x2kMPhJZ)m~Y_t~rX`0YPw zN%FiTuOrQw@qKRq;s`^VS98a$A*;OZ;b@yZx? zX@hci7sSKpc!~9EeuFoU9N~-$w~%;`nhZ>e*D@mUoGfuZL!RC{2GEkQZ6CdWuWo;i ztGArp`hRHi8T|3Rj{$JkKkQ+2tVUmNRKT6hSGPaUP1m2xhJl4mN41`C*Wd4H^J7hI zY%)_7@F@>}{{a1!hz$dMfE3^GXzd6?o6l&?n_6A1r}X!BbxaPM#ZB+?+$hK+s2MLm zKLb^|z2aSlmE4HgFyfW}8D{+lE@t$EXS|-UY0U>nU;G*ASv^D+=&5k>#272j4XGWU zM17U9*Q@M&WF(iEqGGDR{)5LkIq_n;5e#j?Y1>o!V+`#(cLU%p>Dqp|n2E6wi zICz|!t~-aJO{=KZ6Rx^!ko5z-MbH4%T0&nXWZjw`y!V}Lx6jS!?VlW)_gi13Gy|u~ z{*kw+)*4*7We`RAqkI3GYAtD9et&Por#`oP7Nhf^<)6Ry;f_9|$q*6A^R{M`G2d}& zp(RS>Jh%)*Q6r?8uyJsJAH6Vwx$u0vRv3HfBo|u2boC%i=H{q7S!v$K z#zD^?e&YSCu9U%7Fj>G4cD=&ww+yu|dvv_U-+k+OwqCoD^#i?p=9Zzh1B{N>0Jvz= zDo#$s3?Dkqm+!oSzDkKb`^M<2gj8z{sa3f;tXo@I)aj#+?>#cY z=WpA>H+LKW;2-b4zP0X#-}zU*{AX7(w0ZTyI2L#|E9`BLgXc0tF{Ii>NfR=g=Am&? z=R+G-u=jtD^7`8uCdnwj{VJD7hp}Nd>bejNCy!hD&%Bg!?-r7H4dNXuyF6sM^E~`! zozd}H8|~TOoeuHn6Gyn|x^qxfhDVOmS1GZ6pqHa#6a2|vKh7s_-rTl+$F31nb>8#Y zPE{9-GTX=Qr$+g`-@b%(XI181>Yjb$Ow{5cgr3OPKlvI%n^tq>WdjQa6?2_?u+YJ0 z+xFa>qy>W%@fm0K2b?#shF_kj6Zn)q5>}f@#74Lz!It|ehaoFBUxxFmNnC_gkEm-E z=k^~u&d{dSE$vv!=&M8wkDOrp&S6H!YizxCW83~eGe_HY>>A;!4i}=QP-Xt`HRq68 z0oU2|U3u9c!y_jEn5ZXg-*JGg*PX-qfy%ry&ZXa+2eYNIlZF6f0TSICUi^Uj2 zuhbbVmx+Q1^Tre=@Q95Fxy&<(09|2TW;FK z*6Yq;$0G;Xv1^2_*KVX*PddUahO1pNm!=^`9Nm5jr#-DGsR?t%rE9t3(zUI%cR%n9 zpT1?NWpWpyKlkirsgmN0III~hPEOP)2k_?MmpOiPgp!-4zqbb!MWX;Q7O^23mZ(im z6?K~?4$px@#~42J4!7LAY1xw6*Ap^2UT+=tcmLw2r__%)wO(K64(IMCUt{~uVfO4B zXZMq@v3{V^=KmI=Kd*GssZ*l*(pX0tSeTd$kXpWS$_X|3W?K_95 z)?>c(rhdVVJL7%{C#4D!r=?zsOu`v7?G3)hl)Aq!Rz zX*^G>K61?lM#t;i^WZZKA3DLG|G{O8GCi+^2YFlAn3l!_kcV6IyI@6>rJjHcM}+fW z)Zo<6D5QOADq(8ML1`uSjEnKIq3E6TQ(4soriTD<+CbFv%aJ$Px%(CFz4H>*oK;2> zT~u=Bj&J?&B}9Y=?z#q5rMD;K!N0n$b(x>ox{1C@)Ux9{A3fBDYv-dQtY2GcwUC<{ z_vzodh&}tp=KF<9*3Ohb&hE#jX>J8NXxh59J$&bHZ{&xM9^(FQ?_HJ#0$ zF)d~^86+ae3opK;8#k`QWf>x~os|I$fzK$rX<}9~9eTV7PRn@{$_io{WLXJY7M!1E zMZFg*5JoVS)rccUBb~-Xmafe4(j%!E9 z>-=!{AwKu}mv+QwttCxU!Z5@+M;L}2IdTMf?)ew>f(yEX!I9DV0hbJa~|x+4;-U_zpxQe|bk0j8{Y)s3XLY zWfKI}VNE~Yd5l=z32KC52-JcEIPdXli3qS+fNIb>OlnfXCFTH&7v}Vo7_wX#1vDyy z)=~7d8Dfl?r=>xuR3eV!1$$trKqC-JNmBHZJ&MPg6o)Wv0Mmt}4Z2APeTm42;5|kZ zXFMVasxg@fP!YU9Bg|h33VhJ&EiWfRn!Ubx5zED~To~^i=tO79J;gJqD%M)!IHs$s zt6)eYrn@U@Ihffd3uDQm0OJiJ#cMojK|E0y5*x*sZmi_>TW3l{8sL+RFcdI~SV2^Y zT!7Et0wN6+^&!?v?#wzIW+59tPo0Z-`~F!pI6xICqMN1CRrLe`IByno)JvtWMU@>9 zj0lsB23@5Ra_r<({Kgw^@XkALcSM-ivwT|>xOj7}_^Ti`KVZ>8kvZKsiZ?7~SKD=N zA!(5s)BM+Q9M;;ld0_3baV!_c7ck4sV03}7*BB|Z1p52?S+{N-|33iQeTU$!k*lr% O0000字数超出最大允许值,服务器可能拒绝保存!', + 'ok':"确认", + 'cancel':"取消", + 'closeDialog':"关闭对话框", + 'tableDrag':"表格拖动必须引入uiUtils.js文件!", + 'autofloatMsg':"工具栏浮动依赖编辑器UI,您首先需要引入UI文件!", + 'loadconfigError': '获取后台配置项请求出错,上传功能将不能正常使用!', + 'loadconfigFormatError': '后台配置项返回格式出错,上传功能将不能正常使用!', + 'loadconfigHttpError': '请求后台配置项http错误,上传功能将不能正常使用!', + 'snapScreen_plugin':{ + 'browserMsg':"仅支持IE浏览器!", + 'callBackErrorMsg':"服务器返回数据有误,请检查配置项之后重试。", + 'uploadErrorMsg':"截图上传失败,请检查服务器端环境! " + }, + 'insertcode':{ + 'as3':'ActionScript 3', + 'bash':'Bash/Shell', + 'cpp':'C/C++', + 'css':'CSS', + 'cf':'ColdFusion', + 'c#':'C#', + 'delphi':'Delphi', + 'diff':'Diff', + 'erlang':'Erlang', + 'groovy':'Groovy', + 'html':'HTML', + 'java':'Java', + 'jfx':'JavaFX', + 'js':'JavaScript', + 'pl':'Perl', + 'php':'PHP', + 'plain':'Plain Text', + 'ps':'PowerShell', + 'python':'Python', + 'ruby':'Ruby', + 'scala':'Scala', + 'sql':'SQL', + 'vb':'Visual Basic', + 'xml':'XML' + }, + 'confirmClear':"确定清空当前文档么?", + 'contextMenu':{ + 'delete':"删除", + 'selectall':"全选", + 'deletecode':"删除代码", + 'cleardoc':"清空文档", + 'confirmclear':"确定清空当前文档么?", + 'unlink':"删除超链接", + 'paragraph':"段落格式", + 'edittable':"表格属性", + 'aligntd':"单元格对齐方式", + 'aligntable':'表格对齐方式', + 'tableleft':'左浮动', + 'tablecenter':'居中显示', + 'tableright':'右浮动', + 'edittd':"单元格属性", + 'setbordervisible':'设置表格边线可见', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中对齐', + 'justifyjustify':'两端对齐', + 'table':"表格", + 'inserttable':'插入表格', + 'deletetable':"删除表格", + 'insertparagraphbefore':"前插入段落", + 'insertparagraphafter':'后插入段落', + 'deleterow':"删除当前行", + 'deletecol':"删除当前列", + 'insertrow':"前插入行", + 'insertcol':"左插入列", + 'insertrownext':'后插入行', + 'insertcolnext':'右插入列', + 'insertcaption':'插入表格名称', + 'deletecaption':'删除表格名称', + 'inserttitle':'插入表格标题行', + 'deletetitle':'删除表格标题行', + 'inserttitlecol':'插入表格标题列', + 'deletetitlecol':'删除表格标题列', + 'averageDiseRow':'平均分布各行', + 'averageDisCol':'平均分布各列', + 'mergeright':"向右合并", + 'mergeleft':"向左合并", + 'mergedown':"向下合并", + 'mergecells':"合并单元格", + 'splittocells':"完全拆分单元格", + 'splittocols':"拆分成列", + 'splittorows':"拆分成行", + 'tablesort':'表格排序', + 'enablesort':'设置表格可排序', + 'disablesort':'取消表格可排序', + 'reversecurrent':'逆序当前', + 'orderbyasc':'按ASCII字符升序', + 'reversebyasc':'按ASCII字符降序', + 'orderbynum':'按数值大小升序', + 'reversebynum':'按数值大小降序', + 'borderbk':'边框底纹', + 'setcolor':'表格隔行变色', + 'unsetcolor':'取消表格隔行变色', + 'setbackground':'选区背景隔行', + 'unsetbackground':'取消选区背景', + 'redandblue':'红蓝相间', + 'threecolorgradient':'三色渐变', + 'copy':"复制(Ctrl + c)", + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'paste':"粘贴(Ctrl + v)", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'" + }, + 'copymsg': "浏览器不支持,请使用 'Ctrl + c'", + 'pastemsg': "浏览器不支持,请使用 'Ctrl + v'", + 'anthorMsg':"链接", + 'clearColor':'清空颜色', + 'standardColor':'标准颜色', + 'themeColor':'主题颜色', + 'property':'属性', + 'default':'默认', + 'modify':'修改', + 'justifyleft':'左对齐', + 'justifyright':'右对齐', + 'justifycenter':'居中', + 'justify':'默认', + 'clear':'清除', + 'anchorMsg':'锚点', + 'delete':'删除', + 'clickToUpload':"点击上传", + 'unset':'尚未设置语言文件', + 't_row':'行', + 't_col':'列', + 'more':'更多', + 'pasteOpt':'粘贴选项', + 'pasteSourceFormat':"保留源格式", + 'tagFormat':'只保留标签', + 'pasteTextFormat':'只保留文本', + 'autoTypeSet':{ + 'mergeLine':"合并空行", + 'delLine':"清除空行", + 'removeFormat':"清除格式", + 'indent':"首行缩进", + 'alignment':"对齐方式", + 'imageFloat':"图片浮动", + 'removeFontsize':"清除字号", + 'removeFontFamily':"清除字体", + 'removeHtml':"清除冗余HTML代码", + 'pasteFilter':"粘贴过滤", + 'run':"执行", + 'symbol':'符号转换', + 'bdc2sb':'全角转半角', + 'tobdc':'半角转全角' + }, + + 'background':{ + 'static':{ + 'lang_background_normal':'背景设置', + 'lang_background_local':'在线图片', + 'lang_background_set':'选项', + 'lang_background_none':'无背景色', + 'lang_background_colored':'有背景色', + 'lang_background_color':'颜色设置', + 'lang_background_netimg':'网络图片', + 'lang_background_align':'对齐方式', + 'lang_background_position':'精确定位', + 'repeatType':{'options':["居中", "横向重复", "纵向重复", "平铺","自定义"]} + + }, + 'noUploadImage':"当前未上传过任何图片!", + 'toggleSelect':"单击可切换选中状态\n原图尺寸: " + }, + //===============dialog i18N======================= + 'insertimage':{ + 'static':{ + 'lang_tab_remote':"插入图片", //节点 + 'lang_tab_upload':"本地上传", + 'lang_tab_online':"在线管理", + 'lang_tab_search':"图片搜索", + 'lang_input_url':"地 址:", + 'lang_input_size':"大 小:", + 'lang_input_width':"宽度", + 'lang_input_height':"高度", + 'lang_input_border':"边 框:", + 'lang_input_vhspace':"边 距:", + 'lang_input_title':"描 述:", + 'lang_input_align':'图片浮动方式:', + 'lang_imgLoading':" 图片加载中……", + 'lang_start_upload':"开始上传", + 'lock':{'title':"锁定宽高比例"}, //属性 + 'searchType':{'title':"图片类型", 'options':["新闻", "壁纸", "表情", "头像"]}, //select的option + 'searchTxt':{'value':"请输入搜索关键词"}, + 'searchBtn':{'value':"百度一下"}, + 'searchReset':{'value':"清空搜索"}, + 'noneAlign':{'title':'无浮动'}, + 'leftAlign':{'title':'左浮动'}, + 'rightAlign':{'title':'右浮动'}, + 'centerAlign':{'title':'居中独占一行'} + }, + 'uploadSelectFile':'点击选择图片', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'uploadNoPreview':'不能预览', + 'updateStatusReady': '选中_张图片,共_KB。', + 'updateStatusConfirm': '已成功上传_张照片,_张照片上传失败', + 'updateStatusFinish': '共_张(_KB),_张上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错', + 'remoteLockError':"宽高不正确,不能所定比例", + 'numError':"请输入正确的长度或者宽度值!例如:123,400", + 'imageUrlError':"不允许的图片格式或者图片域!", + 'imageLoadError':"图片加载失败!请检查链接地址或网络状态!", + 'searchRemind':"请输入搜索关键词", + 'searchLoading':"图片加载中,请稍后……", + 'searchRetry':" :( ,抱歉,没有找到图片!请重试一次!" + }, + 'attachment':{ + 'static':{ + 'lang_tab_upload': '上传附件', + 'lang_tab_online': '在线附件', + 'lang_start_upload':"开始上传", + 'lang_drop_remind':"可以将文件拖到这里,单次最多可选100个文件" + }, + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '已成功上传_个文件,_个文件上传失败', + 'updateStatusFinish': '共_个(_KB),_个上传成功', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'insertvideo':{ + 'static':{ + 'lang_tab_insertV':"插入视频", + 'lang_tab_searchV':"搜索视频", + 'lang_tab_uploadV':"上传视频", + 'lang_video_url':"视频网址", + 'lang_video_size':"视频尺寸", + 'lang_videoW':"宽度", + 'lang_videoH':"高度", + 'lang_alignment':"对齐方式", + 'videoSearchTxt':{'value':"请输入搜索关键字!"}, + 'videoType':{'options':["全部", "热门", "娱乐", "搞笑", "体育", "科技", "综艺"]}, + 'videoSearchBtn':{'value':"百度一下"}, + 'videoSearchReset':{'value':"清空结果"}, + + 'lang_input_fileStatus':' 当前未上传文件', + 'startUpload':{'style':"background:url(upload.png) no-repeat;"}, + + 'lang_upload_size':"视频尺寸", + 'lang_upload_width':"宽度", + 'lang_upload_height':"高度", + 'lang_upload_alignment':"对齐方式", + 'lang_format_advice':"建议使用mp4格式." + + }, + 'numError':"请输入正确的数值,如123,400", + 'floatLeft':"左浮动", + 'floatRight':"右浮动", + '"default"':"默认", + 'block':"独占一行", + 'urlError':"输入的视频地址有误,请检查后再试!", + 'loading':"  视频加载中,请等待……", + 'clickToSelect':"点击选中", + 'goToSource':'访问源视频', + 'noVideo':"    抱歉,找不到对应的视频,请重试!", + + 'browseFiles':'浏览文件', + 'uploadSuccess':'上传成功!', + 'delSuccessFile':'从成功队列中移除', + 'delFailSaveFile':'移除保存失败文件', + 'statusPrompt':' 个文件已上传! ', + 'flashVersionError':'当前Flash版本过低,请更新FlashPlayer后重试!', + 'flashLoadingError':'Flash加载失败!请检查路径或网络状态', + 'fileUploadReady':'等待上传……', + 'delUploadQueue':'从上传队列中移除', + 'limitPrompt1':'单次不能选择超过', + 'limitPrompt2':'个文件!请重新选择!', + 'delFailFile':'移除失败文件', + 'fileSizeLimit':'文件大小超出限制!', + 'emptyFile':'空文件无法上传!', + 'fileTypeError':'文件类型不允许!', + 'unknownError':'未知错误!', + 'fileUploading':'上传中,请等待……', + 'cancelUpload':'取消上传', + 'netError':'网络错误', + 'failUpload':'上传失败!', + 'serverIOError':'服务器IO错误!', + 'noAuthority':'无权限!', + 'fileNumLimit':'上传个数限制', + 'failCheck':'验证失败,本次上传被跳过!', + 'fileCanceling':'取消中,请等待……', + 'stopUploading':'上传已停止……', + + 'uploadSelectFile':'点击选择文件', + 'uploadAddFile':'继续添加', + 'uploadStart':'开始上传', + 'uploadPause':'暂停上传', + 'uploadContinue':'继续上传', + 'uploadRetry':'重试上传', + 'uploadDelete':'删除', + 'uploadTurnLeft':'向左旋转', + 'uploadTurnRight':'向右旋转', + 'uploadPreview':'预览中', + 'updateStatusReady': '选中_个文件,共_KB。', + 'updateStatusConfirm': '成功上传_个,_个失败', + 'updateStatusFinish': '共_个(_KB),_个成功上传', + 'updateStatusError': ',_张上传失败。', + 'errorNotSupport': 'WebUploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器。', + 'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!', + 'errorExceedSize':'文件大小超出', + 'errorFileType':'文件格式不允许', + 'errorInterrupt':'文件传输中断', + 'errorUploadRetry':'上传失败,请重试', + 'errorHttp':'http请求错误', + 'errorServerUpload':'服务器返回出错' + }, + 'webapp':{ + 'tip1':"本功能由百度APP提供,如看到此页面,请各位站长首先申请百度APPKey!", + 'tip2':"申请完成之后请至ueditor.config.js中配置获得的appkey! ", + 'applyFor':"点此申请", + 'anthorApi':"百度API" + }, + 'template':{ + 'static':{ + 'lang_template_bkcolor':'背景颜色', + 'lang_template_clear' : '保留原有内容', + 'lang_template_select' : '选择模板' + }, + 'blank':"空白文档", + 'blog':"博客文章", + 'resume':"个人简历", + 'richText':"图文混排", + 'sciPapers':"科技论文" + + + }, + 'scrawl':{ + 'static':{ + 'lang_input_previousStep':"上一步", + 'lang_input_nextsStep':"下一步", + 'lang_input_clear':'清空', + 'lang_input_addPic':'添加背景', + 'lang_input_ScalePic':'缩放背景', + 'lang_input_removePic':'删除背景', + 'J_imgTxt':{title:'添加背景图片'} + }, + 'noScarwl':"尚未作画,白纸一张~", + 'scrawlUpLoading':"涂鸦上传中,别急哦~", + 'continueBtn':"继续", + 'imageError':"糟糕,图片读取失败了!", + 'backgroundUploading':'背景图片上传中,别急哦~' + }, + 'music':{ + 'static':{ + 'lang_input_tips':"输入歌手/歌曲/专辑,搜索您感兴趣的音乐!", + 'J_searchBtn':{value:'搜索歌曲'} + }, + 'emptyTxt':'未搜索到相关音乐结果,请换一个关键词试试。', + 'chapter':'歌曲', + 'singer':'歌手', + 'special':'专辑', + 'listenTest':'试听' + }, + 'anchor':{ + 'static':{ + 'lang_input_anchorName':'锚点名字:' + } + }, + 'charts':{ + 'static':{ + 'lang_data_source':'数据源:', + 'lang_chart_format': '图表格式:', + 'lang_data_align': '数据对齐方式', + 'lang_chart_align_same': '数据源与图表X轴Y轴一致', + 'lang_chart_align_reverse': '数据源与图表X轴Y轴相反', + 'lang_chart_title': '图表标题', + 'lang_chart_main_title': '主标题:', + 'lang_chart_sub_title': '子标题:', + 'lang_chart_x_title': 'X轴标题:', + 'lang_chart_y_title': 'Y轴标题:', + 'lang_chart_tip': '提示文字', + 'lang_cahrt_tip_prefix': '提示文字前缀:', + 'lang_cahrt_tip_description': '仅饼图有效, 当鼠标移动到饼图中相应的块上时,提示框内的文字的前缀', + 'lang_chart_data_unit': '数据单位', + 'lang_chart_data_unit_title': '单位:', + 'lang_chart_data_unit_description': '显示在每个数据点上的数据的单位, 比如: 温度的单位 ℃', + 'lang_chart_type': '图表类型:', + 'lang_prev_btn': '上一个', + 'lang_next_btn': '下一个' + } + }, + 'emotion':{ + 'static':{ + 'lang_input_choice':'精选', + 'lang_input_Tuzki':'兔斯基', + 'lang_input_BOBO':'BOBO', + 'lang_input_lvdouwa':'绿豆蛙', + 'lang_input_babyCat':'baby猫', + 'lang_input_bubble':'泡泡', + 'lang_input_youa':'有啊' + } + }, + 'gmap':{ + 'static':{ + 'lang_input_address':'地址', + 'lang_input_search':'搜索', + 'address':{value:"北京"} + }, + searchError:'无法定位到该地址!' + }, + 'help':{ + 'static':{ + 'lang_input_about':'关于UEditor', + 'lang_input_shortcuts':'快捷键', + 'lang_input_introduction':'UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。开源基于BSD协议,允许自由使用和修改代码。', + 'lang_Txt_shortcuts':'快捷键', + 'lang_Txt_func':'功能', + 'lang_Txt_bold':'给选中字设置为加粗', + 'lang_Txt_copy':'复制选中内容', + 'lang_Txt_cut':'剪切选中内容', + 'lang_Txt_Paste':'粘贴', + 'lang_Txt_undo':'重新执行上次操作', + 'lang_Txt_redo':'撤销上一次操作', + 'lang_Txt_italic':'给选中字设置为斜体', + 'lang_Txt_underline':'给选中字加下划线', + 'lang_Txt_selectAll':'全部选中', + 'lang_Txt_visualEnter':'软回车', + 'lang_Txt_fullscreen':'全屏' + } + }, + 'insertframe':{ + 'static':{ + 'lang_input_address':'地址:', + 'lang_input_width':'宽度:', + 'lang_input_height':'高度:', + 'lang_input_isScroll':'允许滚动条:', + 'lang_input_frameborder':'显示框架边框:', + 'lang_input_alignMode':'对齐方式:', + 'align':{title:"对齐方式", options:["默认", "左对齐", "右对齐", "居中"]} + }, + 'enterAddress':'请输入地址!' + }, + 'link':{ + 'static':{ + 'lang_input_text':'文本内容:', + 'lang_input_url':'链接地址:', + 'lang_input_title':'标题:', + 'lang_input_target':'是否在新窗口打开:' + }, + 'validLink':'只支持选中一个链接时生效', + 'httpPrompt':'您输入的超链接中不包含http等协议名称,默认将为您添加http://前缀' + }, + 'map':{ + 'static':{ + lang_city:"城市", + lang_address:"地址", + city:{value:"北京"}, + lang_search:"搜索", + lang_dynamicmap:"插入动态地图" + }, + cityMsg:"请选择城市", + errorMsg:"抱歉,找不到该位置!" + }, + 'searchreplace':{ + 'static':{ + lang_tab_search:"查找", + lang_tab_replace:"替换", + lang_search1:"查找", + lang_search2:"查找", + lang_replace:"替换", + lang_searchReg:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_searchReg1:'支持正则表达式,添加前后斜杠标示为正则表达式,例如“/表达式/”', + lang_case_sensitive1:"区分大小写", + lang_case_sensitive2:"区分大小写", + nextFindBtn:{value:"下一个"}, + preFindBtn:{value:"上一个"}, + nextReplaceBtn:{value:"下一个"}, + preReplaceBtn:{value:"上一个"}, + repalceBtn:{value:"替换"}, + repalceAllBtn:{value:"全部替换"} + }, + getEnd:"已经搜索到文章末尾!", + getStart:"已经搜索到文章头部", + countMsg:"总共替换了{#count}处!" + }, + 'snapscreen':{ + 'static':{ + lang_showMsg:"截图功能需要首先安装UEditor截图插件! ", + lang_download:"点此下载", + lang_step1:"第一步,下载UEditor截图插件并运行安装。", + lang_step2:"第二步,插件安装完成后即可使用,如不生效,请重启浏览器后再试!" + } + }, + 'spechars':{ + 'static':{}, + tsfh:"特殊字符", + lmsz:"罗马字符", + szfh:"数学字符", + rwfh:"日文字符", + xlzm:"希腊字母", + ewzm:"俄文字符", + pyzm:"拼音字母", + yyyb:"英语音标", + zyzf:"其他" + }, + 'edittable':{ + 'static':{ + 'lang_tableStyle':'表格样式', + 'lang_insertCaption':'添加表格名称行', + 'lang_insertTitle':'添加表格标题行', + 'lang_insertTitleCol':'添加表格标题列', + 'lang_orderbycontent':"使表格内容可排序", + 'lang_tableSize':'自动调整表格尺寸', + 'lang_autoSizeContent':'按表格文字自适应', + 'lang_autoSizePage':'按页面宽度自适应', + 'lang_example':'示例', + 'lang_borderStyle':'表格边框', + 'lang_color':'颜色:' + }, + captionName:'表格名称', + titleName:'标题', + cellsName:'内容', + errorMsg:'有合并单元格,不可排序' + }, + 'edittip':{ + 'static':{ + lang_delRow:'删除整行', + lang_delCol:'删除整列' + } + }, + 'edittd':{ + 'static':{ + lang_tdBkColor:'背景颜色:' + } + }, + 'formula':{ + 'static':{ + } + }, + 'wordimage':{ + 'static':{ + lang_resave:"转存步骤", + uploadBtn:{src:"upload.png",alt:"上传"}, + clipboard:{style:"background: url(copy.png) -153px -1px no-repeat;"}, + lang_step:"1、点击顶部复制按钮,将地址复制到剪贴板;2、点击添加照片按钮,在弹出的对话框中使用Ctrl+V粘贴地址;3、点击打开后选择图片上传流程。" + }, + 'fileType':"图片", + 'flashError':"FLASH初始化失败,请检查FLASH插件是否正确安装!", + 'netError':"网络连接错误,请重试!", + 'copySuccess':"图片地址已经复制!", + 'flashI18n':{} //留空默认中文 + }, + 'autosave': { + 'saving':'保存中...', + 'success':'本地保存成功' + } +}; diff --git a/public/vendor/ueditor/themes/default/css/ueditor.css b/public/vendor/ueditor/themes/default/css/ueditor.css new file mode 100644 index 0000000..44ae805 --- /dev/null +++ b/public/vendor/ueditor/themes/default/css/ueditor.css @@ -0,0 +1,1903 @@ +/*基础UI构建 +*/ +/* common layer */ +.edui-default .edui-box { + border: none; + padding: 0; + margin: 0; + overflow: hidden; +} + +.edui-default a.edui-box { + display: block; + text-decoration: none; + color: black; +} + +.edui-default a.edui-box:hover { + text-decoration: none; +} + +.edui-default a.edui-box:active { + text-decoration: none; +} + +.edui-default table.edui-box { + border-collapse: collapse; +} + +.edui-default ul.edui-box { + list-style-type: none; +} + +div.edui-box { + position: relative; + display: -moz-inline-box !important; + display: inline-block !important; + vertical-align: top; +} + +.edui-default .edui-clearfix { + zoom: 1 +} + +.edui-default .edui-clearfix:after { + content: '\20'; + display: block; + clear: both; +} + + * html div.edui-box { + display: inline !important; +} + +*:first-child+html div.edui-box { + display: inline !important; +} + +/* control layout */ +.edui-default .edui-button-body, .edui-splitbutton-body, .edui-menubutton-body, .edui-combox-body { + position: relative; +} + +.edui-default .edui-popup { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; +} + +.edui-default .edui-popup .edui-shadow { + position: absolute; + z-index: -1; +} + +.edui-default .edui-popup .edui-bordereraser { + position: absolute; + overflow: hidden; +} + +.edui-default .edui-tablepicker .edui-canvas { + position: relative; +} + +.edui-default .edui-tablepicker .edui-canvas .edui-overlay { + position: absolute; +} + +.edui-default .edui-dialog-modalmask, .edui-dialog-dragmask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-toolbar { + position: relative; +} + +/* + * default theme + */ +.edui-default .edui-label { + cursor: default; +} + +.edui-default span.edui-clickable { + color: blue; + cursor: pointer; + text-decoration: underline; +} + +.edui-default span.edui-unclickable { + color: gray; + cursor: default; +} +/* 工具栏 */ +.edui-default .edui-toolbar { + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + padding: 1px; + overflow: hidden; /*全屏下单独一行不占位*/ + zoom: 1; + width:auto; + height:auto; +} + +.edui-default .edui-toolbar .edui-button, +.edui-default .edui-toolbar .edui-splitbutton, +.edui-default .edui-toolbar .edui-menubutton, +.edui-default .edui-toolbar .edui-combox { + margin: 1px; +} +/*UI工具栏、编辑区域、底部*/ +.edui-default .edui-editor { + border: 1px solid #d4d4d4; + background-color: white; + position: relative; + overflow: visible; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.edui-editor div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-toolbarbox { + position: relative; + zoom: 1; + -webkit-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + -moz-box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + box-shadow:0 1px 4px rgba(204, 204, 204, 0.6); + border-top-left-radius:2px; + border-top-right-radius:2px; +} + +.edui-default .edui-editor-toolbarboxouter { + border-bottom: 1px solid #d4d4d4; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + /*border: 1px solid #d4d4d4;*/ + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.edui-default .edui-editor-toolbarboxinner { + padding: 2px; +} + +.edui-default .edui-editor-iframeholder { + position: relative; + /*for fix ie6 toolbarmsg under iframe bug. relative -> static */ + /*_position: static !important;* +} + +.edui-default .edui-editor-iframeholder textarea { + font-family: consolas, "Courier New", "lucida console", monospace; + font-size: 12px; + line-height: 18px; +} + +.edui-default .edui-editor-bottombar { + /*border-top: 1px solid #ccc;*/ + /*height: 20px;*/ + /*width: 40%;*/ + /*float: left;*/ + /*overflow: hidden;*/ +} + +.edui-default .edui-editor-bottomContainer { + overflow: hidden; +} + +.edui-default .edui-editor-bottomContainer table { + width: 100%; + height: 0; + overflow: hidden; + border-spacing: 0; +} + +.edui-default .edui-editor-bottomContainer td { + white-space: nowrap; + border-top: 1px solid #ccc; + line-height: 20px; + font-size: 12px; + font-family: Arial, Helvetica, Tahoma, Verdana, Sans-Serif; +} + +.edui-default .edui-editor-wordcount { + text-align: right; + margin-right: 5px; + color: #aaa; +} +.edui-default .edui-editor-scale { + width: 12px; +} +.edui-default .edui-editor-scale .edui-editor-icon { + float: right; + width: 100%; + height: 12px; + margin-top: 10px; + background: url(../images/scale.png) no-repeat; + cursor: se-resize; +} +.edui-default .edui-editor-breadcrumb { + margin: 2px 0 0 3px; +} + +.edui-default .edui-editor-breadcrumb span { + cursor: pointer; + text-decoration: underline; + color: blue; +} + +.edui-default .edui-toolbar .edui-for-fullscreen { + float: right; +} + +.edui-default .edui-bubble .edui-popup-content { + border: 1px solid #DCAC6C; + background-color: #fff6d9; + padding: 5px; + font-size: 10pt; + font-family: "宋体"; +} + +.edui-default .edui-bubble .edui-shadow { + /*box-shadow: 1px 1px 3px #818181;*/ + /*-webkit-box-shadow: 2px 2px 3px #818181;*/ + /*-moz-box-shadow: 2px 2px 3px #818181;*/ + /*filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius = '2', MakeShadow = 'true', ShadowOpacity = '0.5');*/ +} + +.edui-default .edui-editor-toolbarmsg { + background-color: #FFF6D9; + border-bottom: 1px solid #ccc; + position: absolute; + bottom: -25px; + left: 0; + z-index: 1009; + width: 99.9%; +} + +.edui-default .edui-editor-toolbarmsg-upload { + font-size: 14px; + color: blue; + width: 100px; + height: 16px; + line-height: 16px; + cursor: pointer; + position: absolute; + top: 5px; + left: 350px; +} + +.edui-default .edui-editor-toolbarmsg-label { + font-size: 12px; + line-height: 16px; + padding: 4px; +} + +.edui-default .edui-editor-toolbarmsg-close { + float: right; + width: 20px; + height: 16px; + line-height: 16px; + cursor: pointer; + color: red; +} +/*可选中菜单按钮*/ +.edui-default .edui-list .edui-bordereraser { + display: none; +} + +.edui-default .edui-listitem { + padding: 1px; + white-space: nowrap; +} + +.edui-default .edui-list .edui-state-hover { + position: relative; + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-for-fontfamily .edui-listitem-label { + min-width: 130px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-insertcode .edui-listitem-label { + min-width: 120px; + _width: 120px; + font-size: 12px; + height: 22px; + line-height: 22px; + padding-left: 5px; +} +.edui-default .edui-for-underline .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + font-size: 12px; +} + +.edui-default .edui-for-fontsize .edui-listitem-label { + min-width: 120px; + _width: 120px; + padding: 3px 5px; + +} + +.edui-default .edui-for-paragraph .edui-listitem-label { + min-width: 200px; + _width: 200px; + padding: 2px 5px; +} + +.edui-default .edui-for-rowspacingtop .edui-listitem-label, +.edui-default .edui-for-rowspacingbottom .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-lineheight .edui-listitem-label { + min-width: 53px; + _width: 53px; + padding: 2px 5px; +} + +.edui-default .edui-for-customstyle .edui-listitem-label { + min-width: 200px; + _width: 200px; + width: 200px !important; + padding: 2px 5px; +} +/* 可选中按钮弹出菜单*/ +.edui-default .edui-menu { + z-index: 3000; +} + +.edui-default .edui-menu .edui-popup-content { + padding: 3px; +} + +.edui-default .edui-menu-body { + _width: 150px; + min-width: 170px; + background: url("../images/sparator_v.png") repeat-y 25px; +} + +.edui-default .edui-menuitem-body { +} + +.edui-default .edui-menuitem { + height: 20px; + cursor: default; + vertical-align: top; +} + +.edui-default .edui-menuitem .edui-icon { + width: 20px !important; + height: 20px !important; + background: url(../images/icons.png) 0 -4000px; + background: url(../images/icons.gif) 0 -4000px\9; +} + +.edui-default .edui-menuitem .edui-label { + font-size: 12px; + line-height: 20px; + height: 20px; + padding-left: 10px; +} + +.edui-default .edui-state-checked .edui-menuitem-body { + background: url("../images/icons-all.gif") no-repeat 6px -205px; +} + +.edui-default .edui-state-disabled .edui-menuitem-label { + color: gray; +} + + +/*不可选中菜单按钮 */ +.edui-default .edui-toolbar .edui-combox-body .edui-button-body { + width: 60px; + font-size: 12px; + height: 20px; + line-height: 20px; + padding-left: 5px; + white-space: nowrap; + margin: 0 3px 0 0; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-combox .edui-combox-body { + border: 1px solid #CCC; + background-color: white; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-splitborder { + display: none; +} + +.edui-default .edui-toolbar .edui-combox-body .edui-arrow { + border-left: 1px solid #CCC; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow { + border-left: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-checked .edui-combox-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow { + border-left: 1px solid #DCAC6C; +} + +.edui-toolbar .edui-state-disabled .edui-combox-body { + background-color: #F0F0EE; + opacity: 0.3; + filter: alpha(opacity = 30); +} + +.edui-toolbar .edui-state-opened .edui-combox-body { + background-color: white; + border: 1px solid gray; +} +/*普通按钮样式及状态*/ +.edui-default .edui-toolbar .edui-button .edui-icon, +.edui-default .edui-toolbar .edui-menubutton .edui-icon, +.edui-default .edui-toolbar .edui-splitbutton .edui-icon { + height: 20px !important; + width: 20px !important; + background-image: url(../images/icons.png); + background-image: url(../images/icons.gif) \9; +} + +.edui-default .edui-toolbar .edui-button .edui-button-wrap { + padding: 1px; + position: relative; +} + +.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap { + background-color: #fff5d4; + padding: 0; + border: 1px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap { + background-color: #ffe69f; + padding: 0; + border: 1px solid #dcac6c; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap { + background-color: #ffffff; + padding: 0; + border: 1px solid gray; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-label { + color: #ccc; +} +.edui-default .edui-toolbar .edui-state-disabled .edui-icon { + opacity: 0.3; + filter: alpha(opacity = 30); +} + +/* toolbar icons */ +.edui-default .edui-for-undo .edui-icon { + background-position: -160px 0; +} + +.edui-default .edui-for-redo .edui-icon { + background-position: -100px 0; +} + +.edui-default .edui-for-bold .edui-icon { + background-position: 0 0; +} + +.edui-default .edui-for-italic .edui-icon { + background-position: -60px 0; +} + +.edui-default .edui-for-fontborder .edui-icon { + background-position:-160px -40px; +} +.edui-default .edui-for-underline .edui-icon { + background-position: -140px 0; +} + +.edui-default .edui-for-strikethrough .edui-icon { + background-position: -120px 0; +} + +.edui-default .edui-for-subscript .edui-icon { + background-position: -600px 0; +} + +.edui-default .edui-for-superscript .edui-icon { + background-position: -620px 0; +} + +.edui-default .edui-for-blockquote .edui-icon { + background-position: -220px 0; +} + +.edui-default .edui-for-forecolor .edui-icon { + background-position: -720px 0; +} + +.edui-default .edui-for-backcolor .edui-icon { + background-position: -760px 0; +} + +.edui-default .edui-for-inserttable .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-autotypeset .edui-icon { + background-position: -640px -40px; +} + +.edui-default .edui-for-justifyleft .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-justifycenter .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-justifyright .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-justifyjustify .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-insertorderedlist .edui-icon { + background-position: -80px 0; +} + +.edui-default .edui-for-insertunorderedlist .edui-icon { + background-position: -20px 0; +} + +.edui-default .edui-for-lineheight .edui-icon { + background-position: -725px -40px; +} + +.edui-default .edui-for-rowspacingbottom .edui-icon { + background-position: -745px -40px; +} + +.edui-default .edui-for-rowspacingtop .edui-icon { + background-position: -765px -40px; +} + +.edui-default .edui-for-horizontal .edui-icon { + background-position: -360px 0; +} + +.edui-default .edui-for-link .edui-icon { + background-position: -500px 0; +} + +.edui-default .edui-for-code .edui-icon { + background-position: -440px -40px; +} + +.edui-default .edui-for-insertimage .edui-icon { + background-position: -726px -77px; +} + +.edui-default .edui-for-insertframe .edui-icon { + background-position: -240px -40px; +} + +.edui-default .edui-for-emoticon .edui-icon { + background-position: -60px -20px; +} + +.edui-default .edui-for-spechars .edui-icon { + background-position: -240px 0; +} + +.edui-default .edui-for-help .edui-icon { + background-position: -340px 0; +} + +.edui-default .edui-for-print .edui-icon { + background-position: -440px -20px; +} + +.edui-default .edui-for-preview .edui-icon { + background-position: -420px -20px; +} + +.edui-default .edui-for-selectall .edui-icon { + background-position: -400px -20px; +} + +.edui-default .edui-for-searchreplace .edui-icon { + background-position: -520px -20px; +} + +.edui-default .edui-for-map .edui-icon { + background-position: -40px -40px; +} + +.edui-default .edui-for-gmap .edui-icon { + background-position: -260px -40px; +} + +.edui-default .edui-for-insertvideo .edui-icon { + background-position: -320px -20px; +} + +.edui-default .edui-for-time .edui-icon { + background-position: -160px -20px; +} + +.edui-default .edui-for-date .edui-icon { + background-position: -140px -20px; +} + +.edui-default .edui-for-cut .edui-icon { + background-position: -680px 0; +} + +.edui-default .edui-for-copy .edui-icon { + background-position: -700px 0; +} + +.edui-default .edui-for-paste .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-formatmatch .edui-icon { + background-position: -40px 0; +} + +.edui-default .edui-for-pasteplain .edui-icon { + background-position: -360px -20px; +} + +.edui-default .edui-for-directionalityltr .edui-icon { + background-position: -20px -20px; +} + +.edui-default .edui-for-directionalityrtl .edui-icon { + background-position: -40px -20px; +} + +.edui-default .edui-for-source .edui-icon { + background-position: -261px -0px; +} + +.edui-default .edui-for-removeformat .edui-icon { + background-position: -580px 0; +} + +.edui-default .edui-for-unlink .edui-icon { + background-position: -640px 0; +} + +.edui-default .edui-for-touppercase .edui-icon { + background-position: -786px 0; +} + +.edui-default .edui-for-tolowercase .edui-icon { + background-position: -806px 0; +} + +.edui-default .edui-for-insertrow .edui-icon { + background-position: -478px -76px; +} + +.edui-default .edui-for-insertrownext .edui-icon { + background-position: -498px -76px; +} + +.edui-default .edui-for-insertcol .edui-icon { + background-position: -455px -76px; +} + +.edui-default .edui-for-insertcolnext .edui-icon { + background-position: -429px -76px; +} + +.edui-default .edui-for-mergeright .edui-icon { + background-position: -60px -40px; +} + +.edui-default .edui-for-mergedown .edui-icon { + background-position: -80px -40px; +} + +.edui-default .edui-for-splittorows .edui-icon { + background-position: -100px -40px; +} + +.edui-default .edui-for-splittocols .edui-icon { + background-position: -120px -40px; +} + +.edui-default .edui-for-insertparagraphbeforetable .edui-icon { + background-position: -140px -40px; +} + +.edui-default .edui-for-deleterow .edui-icon { + background-position: -660px -20px; +} + +.edui-default .edui-for-deletecol .edui-icon { + background-position: -640px -20px; +} + +.edui-default .edui-for-splittocells .edui-icon { + background-position: -800px -20px; +} + +.edui-default .edui-for-mergecells .edui-icon { + background-position: -760px -20px; +} + +.edui-default .edui-for-deletetable .edui-icon { + background-position: -620px -20px; +} + +.edui-default .edui-for-cleardoc .edui-icon { + background-position: -520px 0; +} + +.edui-default .edui-for-fullscreen .edui-icon { + background-position: -100px -20px; +} + +.edui-default .edui-for-anchor .edui-icon { + background-position: -200px 0; +} + +.edui-default .edui-for-pagebreak .edui-icon { + background-position: -460px -40px; +} + +.edui-default .edui-for-imagenone .edui-icon { + background-position: -480px -40px; +} + +.edui-default .edui-for-imageleft .edui-icon { + background-position: -500px -40px; +} + +.edui-default .edui-for-wordimage .edui-icon { + background-position: -660px -40px; +} + +.edui-default .edui-for-imageright .edui-icon { + background-position: -520px -40px; +} + +.edui-default .edui-for-imagecenter .edui-icon { + background-position: -540px -40px; +} + +.edui-default .edui-for-indent .edui-icon { + background-position: -400px 0; +} + +.edui-default .edui-for-outdent .edui-icon { + background-position: -540px 0; +} + +.edui-default .edui-for-webapp .edui-icon { + background-position: -601px -40px +} + +.edui-default .edui-for-table .edui-icon { + background-position: -580px -20px; +} + +.edui-default .edui-for-edittable .edui-icon { + background-position: -420px -40px; +} + +.edui-default .edui-for-template .edui-icon { + background-position: -339px -40px; +} + +.edui-default .edui-for-delete .edui-icon { + background-position: -360px -40px; +} + +.edui-default .edui-for-attachment .edui-icon { + background-position: -620px -40px; +} + +.edui-default .edui-for-edittd .edui-icon { + background-position: -700px -40px; +} + +.edui-default .edui-for-snapscreen .edui-icon { + background-position: -581px -40px +} + +.edui-default .edui-for-scrawl .edui-icon { + background-position: -801px -41px +} + +.edui-default .edui-for-background .edui-icon { + background-position: -680px -40px; +} + +.edui-default .edui-for-music .edui-icon { + background-position: -18px -40px +} + +.edui-default .edui-for-formula .edui-icon { + background-position: -200px -40px +} + +.edui-default .edui-for-aligntd .edui-icon { + background-position: -236px -76px; +} + +.edui-default .edui-for-insertparagraphtrue .edui-icon { + background-position: -625px -76px; +} + +.edui-default .edui-for-insertparagraph .edui-icon { + background-position: -602px -76px; +} + +.edui-default .edui-for-insertcaption .edui-icon { + background-position: -336px -76px; +} + +.edui-default .edui-for-deletecaption .edui-icon { + background-position: -362px -76px; +} + +.edui-default .edui-for-inserttitle .edui-icon { + background-position: -286px -76px; +} + +.edui-default .edui-for-deletetitle .edui-icon { + background-position: -311px -76px; +} + +.edui-default .edui-for-aligntable .edui-icon { + background-position: -440px 0; +} + +.edui-default .edui-for-tablealignment-left .edui-icon { + background-position: -460px 0; +} + +.edui-default .edui-for-tablealignment-center .edui-icon { + background-position: -420px 0; +} + +.edui-default .edui-for-tablealignment-right .edui-icon { + background-position: -480px 0; +} + +.edui-default .edui-for-drafts .edui-icon { + background-position: -560px 0; +} + +.edui-default .edui-for-charts .edui-icon { + background: url( ../images/charts.png ) no-repeat 2px 3px!important; +} + +.edui-default .edui-for-inserttitlecol .edui-icon { + background-position: -673px -76px; +} + +.edui-default .edui-for-deletetitlecol .edui-icon { + background-position: -698px -76px; +} + +.edui-default .edui-for-simpleupload .edui-icon { + background-position: -380px 0px; +} +/*splitbutton*/ +.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow, +.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow { + background: url(../images/icons.png) -741px 0; + _background: url(../images/icons.gif) -741px 0; + height: 20px; + width: 9px; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body { + padding: 1px; +} + +.edui-default .edui-toolbar .edui-splitborder { + width: 1px; + height: 20px; +} + +.edui-default .edui-toolbar .edui-state-hover .edui-splitborder { + width: 1px; + border-left: 0px solid #dcac6c; +} + +.edui-default .edui-toolbar .edui-state-active .edui-splitborder { + width: 0; + border-left: 1px solid gray; +} + +.edui-default .edui-toolbar .edui-state-opened .edui-splitborder { + width: 1px; + border: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body { + background-color: #fff5d4; + border: 1px solid #dcac6c; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body { + background-color: #FFE69F; + border: 1px solid #DCAC6C; + padding: 0; +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body { + background-color: #ffffff; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-state-disabled .edui-arrow { + opacity: 0.3; + _filter: alpha(opacity = 30); +} + +.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body, +.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body { + background-color: white; + border: 1px solid gray; + padding: 0; +} + +.edui-default .edui-for-insertorderedlist .edui-bordereraser, +.edui-default .edui-for-lineheight .edui-bordereraser, +.edui-default .edui-for-rowspacingtop .edui-bordereraser, +.edui-default .edui-for-rowspacingbottom .edui-bordereraser, +.edui-default .edui-for-insertunorderedlist .edui-bordereraser { + background-color: white; +} + +/* 解决嵌套导致的图标问题 */ +.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon, +.edui-default .edui-for-lineheight .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon, +.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon, +.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon { + /*background-position: 0 -40px;*/ + background-image: none ; +} + +/* 弹出菜单 */ +.edui-default .edui-popup { + z-index: 3000; + background-color: #ffffff; + width:auto; + height:auto; + +} + +.edui-default .edui-popup .edui-shadow { + left: 0; + top: 0; + width: 100%; + height: 100%; +} + +.edui-default .edui-popup-content { + border:1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + padding: 5px; + background:#ffffff; +} + +.edui-default .edui-popup .edui-bordereraser { + background-color: white; + height: 3px; +} + +.edui-default .edui-menu .edui-bordereraser { + height: 3px; +} + +.edui-default .edui-anchor-topleft .edui-bordereraser { + left: 1px; + top: -2px; +} + +.edui-default .edui-anchor-topright .edui-bordereraser { + right: 1px; + top: -2px; +} + +.edui-default .edui-anchor-bottomleft .edui-bordereraser { + left: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-default .edui-anchor-bottomright .edui-bordereraser { + right: 0; + bottom: -6px; + height: 7px; + border-left: 1px solid gray; + border-right: 1px solid gray; +} + +.edui-popup div{ + width:auto; + height:auto; +} +.edui-default .edui-editor-messageholder { + display: block; + width: 150px; + height: auto; + border: 0; + margin: 0; + padding: 0; + position: absolute; + top: 28px; + right: 3px; +} + +.edui-default .edui-message{ + min-height: 10px; + text-shadow: 0 1px 0 rgba(255,255,255,0.5); + padding: 0; + margin-bottom: 3px; + position: relative; +} +.edui-default .edui-message-body{ + border-radius: 3px; + padding: 8px 15px 8px 8px; + color: #c09853; + background-color: #fcf8e3; + border: 1px solid #fbeed5; +} +.edui-default .edui-message-type-info{ + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1 +} +.edui-default .edui-message-type-success{ + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6 +} +.edui-default .edui-message-type-danger, +.edui-default .edui-message-type-error{ + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7 +} +.edui-default .edui-message .edui-message-closer { + display: block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 0; + right: 0; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + float: right; + font-size: 20px; + font-weight: bold; + color: #999; + text-shadow: 0 1px 0 #fff; + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; +} +.edui-default .edui-message .edui-message-content { + font-size: 10pt; + word-wrap: break-word; + word-break: normal; +} +/* 弹出对话框按钮和对话框大小 */ +.edui-default .edui-dialog { + z-index: 2000; + position: absolute; + +} + +.edui-dialog div{ + width:auto; +} + +.edui-default .edui-dialog-wrap { + margin-right: 6px; + margin-bottom: 6px; +} + +.edui-default .edui-dialog-fullscreen-flag { + margin-right: 0; + margin-bottom: 0; +} + +.edui-default .edui-dialog-body { + position: relative; + padding:2px 0 0 2px; + _zoom: 1; +} + +.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body { + padding: 0; +} + +.edui-default .edui-dialog-shadow { + position: absolute; + z-index: -1; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.edui-default .edui-dialog-foot { + background-color: white; +} + +.edui-default .edui-dialog-titlebar { + height: 26px; + border-bottom: 1px solid #c6c6c6; + background: url(../images/dialog-title-bg.png) repeat-x bottom; + position: relative; + cursor: move; +} +.edui-default .edui-dialog-caption { + font-weight: bold; + font-size: 12px; + line-height: 26px; + padding-left: 5px; +} + +.edui-default .edui-dialog-draghandle { + height: 26px; +} + +.edui-default .edui-dialog-closebutton { + position: absolute !important; + right: 5px; + top: 3px; +} + +.edui-default .edui-dialog-closebutton .edui-button-body { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../images/icons-all.gif") no-repeat 0 -59px; +} + +.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -89px; +} + +.edui-default .edui-dialog-foot { + height: 40px; +} + +.edui-default .edui-dialog-buttons { + position: absolute; + right: 0; +} + +.edui-default .edui-dialog-buttons .edui-button { + margin-right: 10px; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-button-body { + background: url("../images/icons-all.gif") no-repeat; + height: 24px; + width: 96px; + font-size: 12px; + line-height: 24px; + text-align: center; + cursor: default; +} + +.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body { + background: url("../images/icons-all.gif") no-repeat 0 -30px; +} + +.edui-default .edui-dialog iframe { + border: 0; + padding: 0; + margin: 0; + vertical-align: top; +} + +.edui-default .edui-dialog-modalmask { + opacity: 0.3; + filter: alpha(opacity = 30); + background-color: #ccc; + position: absolute; + /*z-index: 1999;*/ +} + +.edui-default .edui-dialog-dragmask { + position: absolute; + /*z-index: 2001;*/ + background-color: transparent; + cursor: move; +} + +.edui-default .edui-dialog-content { + position: relative; +} + +.edui-default .dialogcontmask { + cursor: move; + visibility: hidden; + display: block; + position: absolute; + width: 100%; + height: 100%; + opacity: 0; + filter: alpha(opacity = 0); +} + +/*link-dialog*/ +.edui-default .edui-for-link .edui-dialog-content { + width: 420px; + height: 200px; + overflow: hidden; +} +/*background-dialog*/ +.edui-default .edui-for-background .edui-dialog-content { + width: 440px; + height: 280px; + overflow: hidden; +} + +/*template-dialog*/ +.edui-default .edui-for-template .edui-dialog-content { + width: 630px; + height: 390px; + overflow: hidden; +} + +/*scrawl-dialog*/ +.edui-default .edui-for-scrawl .edui-dialog-content { + width: 515px; + *width: 506px; + height: 360px; +} + +/*spechars-dialog*/ +.edui-default .edui-for-spechars .edui-dialog-content { + width: 620px; + height: 500px; + *width: 630px; + *height: 570px; +} + +/*image-dialog*/ +.edui-default .edui-for-insertimage .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} +/*webapp-dialog*/ +.edui-default .edui-for-webapp .edui-dialog-content { + width: 560px; + _width: 565px; + height: 450px; + overflow: hidden; +} + +/*image-insertframe*/ +.edui-default .edui-for-insertframe .edui-dialog-content { + width: 350px; + height: 200px; + overflow: hidden; +} + +/*wordImage-dialog*/ +.edui-default .edui-for-wordimage .edui-dialog-content { + width: 620px; + height: 380px; + overflow: hidden; +} + +/*attachment-dialog*/ +.edui-default .edui-for-attachment .edui-dialog-content { + width: 650px; + height: 400px; + overflow: hidden; +} + + +/*map-dialog*/ +.edui-default .edui-for-map .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*gmap-dialog*/ +.edui-default .edui-for-gmap .edui-dialog-content { + width: 550px; + height: 400px; +} + +/*video-dialog*/ +.edui-default .edui-for-insertvideo .edui-dialog-content { + width: 590px; + height: 390px; +} + +/*anchor-dialog*/ +.edui-default .edui-for-anchor .edui-dialog-content { + width: 320px; + height: 60px; + overflow: hidden; +} + +/*searchreplace-dialog*/ +.edui-default .edui-for-searchreplace .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*help-dialog*/ +.edui-default .edui-for-help .edui-dialog-content { + width: 400px; + height: 420px; +} + +/*edittable-dialog*/ +.edui-default .edui-for-edittable .edui-dialog-content { + width: 540px; + _width:590px; + height: 335px; +} + +/*edittip-dialog*/ +.edui-default .edui-for-edittip .edui-dialog-content { + width: 225px; + height: 60px; +} + +/*edittd-dialog*/ +.edui-default .edui-for-edittd .edui-dialog-content { + width: 240px; + height: 50px; +} +/*snapscreen-dialog*/ +.edui-default .edui-for-snapscreen .edui-dialog-content { + width: 400px; + height: 220px; +} + +/*music-dialog*/ +.edui-default .edui-for-music .edui-dialog-content { + width: 515px; + height: 360px; +} + +/*段落弹出菜单*/ +.edui-default .edui-for-paragraph .edui-listitem-label { + font-family: Tahoma, Verdana, Arial, Helvetica; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p { + font-size: 22px; + line-height: 27px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1 { + font-weight: bolder; + font-size: 32px; + line-height: 36px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2 { + font-weight: bolder; + font-size: 27px; + line-height: 29px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3 { + font-weight: bolder; + font-size: 19px; + line-height: 23px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4 { + font-weight: bolder; + font-size: 16px; + line-height: 19px +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5 { + font-weight: bolder; + font-size: 13px; + line-height: 16px; +} + +.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6 { + font-weight: bolder; + font-size: 12px; + line-height: 14px; +} +/* 表格弹出菜单 */ +.edui-default .edui-for-inserttable .edui-splitborder { + display: none +} +.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow { + width: 0 +} +.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{ + border-left: 1px solid transparent; +} +.edui-default .edui-tablepicker .edui-infoarea { + height: 14px; + line-height: 14px; + font-size: 12px; + width: 220px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-label { + float: left; +} + +.edui-default .edui-dialog-buttons .edui-label { + line-height: 24px; +} + +.edui-default .edui-tablepicker .edui-infoarea .edui-clickable { + float: right; +} + +.edui-default .edui-tablepicker .edui-pickarea { + background: url("../images/unhighlighted.gif") repeat; + height: 220px; + width: 220px; +} + +.edui-default .edui-tablepicker .edui-pickarea .edui-overlay { + background: url("../images/highlighted.gif") repeat; +} + +/* 颜色弹出菜单 */ +.edui-default .edui-colorpicker-topbar { + height: 27px; + width: 200px; + /*border-bottom: 1px gray dashed;*/ +} + +.edui-default .edui-colorpicker-preview { + height: 20px; + border: 1px inset black; + margin-left: 1px; + width: 128px; + float: left; +} + +.edui-default .edui-colorpicker-nocolor { + float: right; + margin-right: 1px; + font-size: 12px; + line-height: 14px; + height: 14px; + border: 1px solid #333; + padding: 3px 5px; + cursor: pointer; +} + +.edui-default .edui-colorpicker-tablefirstrow { + height: 30px; +} + +.edui-default .edui-colorpicker-colorcell { + width: 14px; + height: 14px; + display: block; + margin: 0; + cursor: pointer; +} + +.edui-default .edui-colorpicker-colorcell:hover { + width: 14px; + height: 14px; + margin: 0; +} +.edui-default .edui-colorpicker-advbtn{ + display: block; + text-align: center; + cursor: pointer; + height:20px; +} +.arrow_down{ + background: white url('../images/arrow_down.png') no-repeat center; +} +.arrow_up{ + background: white url('../images/arrow_up.png') no-repeat center; +} +/*高级的样式*/ +.edui-colorpicker-adv{ + position: relative; + overflow: hidden; + height: 180px; + display: none; +} +.edui-colorpicker-plant, .edui-colorpicker-hue { + border: solid 1px #666; +} +.edui-colorpicker-pad { + width: 150px; + height: 150px; + left: 14px; + top: 13px; + position: absolute; + background: red; + overflow: hidden; + cursor: crosshair; +} +.edui-colorpicker-cover{ + position: absolute; + top: 0; + left: 0; + width: 150px; + height: 150px; + background: url("../images/tangram-colorpicker.png") -160px -200px; +} +.edui-colorpicker-padDot{ + position: absolute; + top: 0; + left: 0; + width: 11px; + height: 11px; + overflow: hidden; + background: url(../images/tangram-colorpicker.png) 0px -200px repeat-x; + z-index: 1000; + +} +.edui-colorpicker-sliderMain { + position: absolute; + left: 171px; + top: 13px; + width: 19px; + height: 152px; + background: url(../images/tangram-colorpicker.png) -179px -12px no-repeat; + +} +.edui-colorpicker-slider { + width: 100%; + height: 100%; + cursor: pointer; +} +.edui-colorpicker-thumb{ + position: absolute; + top: 0; + cursor: pointer; + height: 3px; + left: -1px; + right: -1px; + border: 1px solid black; + background: white; + opacity: .8; +} +/*自动排版弹出菜单*/ +.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body { + font-size: 12px; + margin-bottom: 3px; + clear: both; +} + +.edui-default .edui-autotypesetpicker-body table { + border-collapse: separate; + border-spacing: 2px; +} + +.edui-default .edui-autotypesetpicker-body td { + font-size: 12px; + word-wrap:break-word; +} + +.edui-default .edui-autotypesetpicker-body td input { + margin: 3px 3px 3px 4px; + *margin: 1px 0 0 0; +} +/*自动排版弹出菜单*/ +.edui-default .edui-cellalignpicker .edui-cellalignpicker-body { + width: 70px; + font-size: 12px; + cursor: default; +} + +.edui-default .edui-cellalignpicker-body table { + border-collapse: separate; + border-spacing: 0; +} +.edui-default .edui-cellalignpicker-body td{ + padding: 1px; +} +.edui-default .edui-cellalignpicker-body .edui-icon{ + height: 20px; + width: 20px; + padding: 1px; + background-image: url(../images/table-cell-align.png); +} + +.edui-default .edui-cellalignpicker-body .edui-left{ + background-position: 0 0; +} + +.edui-default .edui-cellalignpicker-body .edui-center{ + background-position: -25px 0; +} +.edui-default .edui-cellalignpicker-body .edui-right{ + background-position: -51px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{ + background-position: -73px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{ + background-position: -98px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{ + background-position: -124px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left { + background-position: -146px 0; + background-color: #f1f4f5; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center { + background-position: -245px 0; +} + +.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right { + background-position: -271px 0; +} +/*分隔线*/ +.edui-default .edui-toolbar .edui-separator { + width: 2px; + height: 20px; + margin: 2px 4px 2px 3px; + background: url(../images/icons.png) -181px 0; + background: url(../images/icons.gif) -181px 0 \9; +} + +/*颜色按钮 */ +.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump { + position: absolute; + overflow: hidden; + bottom: 1px; + left: 1px; + width: 18px; + height: 4px; +} +/*表情按钮及弹出菜单*/ +/*去除了表情的下拉箭头*/ +.edui-default .edui-for-emotion .edui-icon { + background-position: -60px -20px; +} +.edui-default .edui-for-emotion .edui-popup-content iframe +{ + width: 514px; + height: 380px; + overflow: hidden; +} +.edui-default .edui-for-emotion .edui-popup-content +{ + position: relative; + z-index: 555 +} + +.edui-default .edui-for-emotion .edui-splitborder { + display: none +} + +.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow +{ + width: 0 +} +.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder +{ + border-left: 1px solid transparent; +} +/*contextmenu*/ +.edui-default .edui-hassubmenu .edui-arrow { + height: 20px; + width: 20px; + float: right; + background: url("../images/icons-all.gif") no-repeat 10px -233px; +} + +.edui-default .edui-menu-body .edui-menuitem { + padding: 1px; +} + +.edui-default .edui-menuseparator { + margin: 2px 0; + height: 1px; + overflow: hidden; +} + +.edui-default .edui-menuseparator-inner { + border-bottom: 1px solid #e2e3e3; + margin-left: 29px; + margin-right: 1px; +} + +.edui-default .edui-menu-body .edui-state-hover { + padding: 0 !important; + background-color: #fff5d4; + border: 1px solid #dcac6c; +} +/*弹出菜单*/ +.edui-default .edui-shortcutmenu { + padding: 2px; + width: 190px; + height: 50px; + background-color: #fff; + border: 1px solid #ccc; + border-radius: 5px; +} + +/*粘贴弹出菜单*/ +.edui-default .edui-wordpastepop .edui-popup-content{ + border: none; + padding: 0; + width: 54px; + height: 21px; +} +.edui-default .edui-pasteicon { + width: 100%; + height: 100%; + background-image: url('../images/wordpaste.png'); + background-position: 0 0; +} + +.edui-default .edui-pasteicon.edui-state-opened { + background-position: 0 -34px; +} + +.edui-default .edui-pastecontainer { + position: relative; + visibility: hidden; + width: 97px; + background: #fff; + border: 1px solid #ccc; +} + +.edui-default .edui-pastecontainer .edui-title { + font-weight: bold; + background: #F8F8FF; + height: 25px; + line-height: 25px; + font-size: 12px; + padding-left: 5px; +} + +.edui-default .edui-pastecontainer .edui-button { + overflow: hidden; + margin: 3px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon, +.edui-default .edui-pastecontainer .edui-button .edui-tagicon, +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{ + float: left; + cursor: pointer; + width: 29px; + height: 29px; + margin-left: 5px; + background-image: url('../images/wordpaste.png'); + background-repeat: no-repeat; +} +.edui-default .edui-pastecontainer .edui-button .edui-richtxticon { + margin-left: 0; + background-position: -109px 0; +} +.edui-default .edui-pastecontainer .edui-button .edui-tagicon { + background-position: -148px 1px; +} + +.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon { + background-position: -72px 0; +} + +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon { + background-position: -109px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{ + background-position: -148px -34px; +} +.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{ + background-position: -72px -34px; +} \ No newline at end of file diff --git a/public/vendor/ueditor/themes/default/css/ueditor.min.css b/public/vendor/ueditor/themes/default/css/ueditor.min.css new file mode 100644 index 0000000..63d297c --- /dev/null +++ b/public/vendor/ueditor/themes/default/css/ueditor.min.css @@ -0,0 +1,8 @@ +/*! + * UEditor + * version: ueditor + * build: Tue Aug 25 2015 15:23:01 GMT+0800 (CST) + */ + + +.edui-default .edui-box{border:0;padding:0;margin:0;overflow:hidden}.edui-default a.edui-box{display:block;text-decoration:none;color:#000}.edui-default a.edui-box:hover{text-decoration:none}.edui-default a.edui-box:active{text-decoration:none}.edui-default table.edui-box{border-collapse:collapse}.edui-default ul.edui-box{list-style-type:none}div.edui-box{position:relative;display:-moz-inline-box!important;display:inline-block!important;vertical-align:top}.edui-default .edui-clearfix{zoom:1}.edui-default .edui-clearfix:after{content:'\20';display:block;clear:both}* html div.edui-box{display:inline!important}:first-child+html div.edui-box{display:inline!important}.edui-default .edui-button-body,.edui-splitbutton-body,.edui-menubutton-body,.edui-combox-body{position:relative}.edui-default .edui-popup{position:absolute;-webkit-user-select:none;-moz-user-select:none}.edui-default .edui-popup .edui-shadow{position:absolute;z-index:-1}.edui-default .edui-popup .edui-bordereraser{position:absolute;overflow:hidden}.edui-default .edui-tablepicker .edui-canvas{position:relative}.edui-default .edui-tablepicker .edui-canvas .edui-overlay{position:absolute}.edui-default .edui-dialog-modalmask,.edui-dialog-dragmask{position:absolute;left:0;top:0;width:100%;height:100%}.edui-default .edui-toolbar{position:relative}.edui-default .edui-label{cursor:default}.edui-default span.edui-clickable{color:#00f;cursor:pointer;text-decoration:underline}.edui-default span.edui-unclickable{color:gray;cursor:default}.edui-default .edui-toolbar{cursor:default;-webkit-user-select:none;-moz-user-select:none;padding:1px;overflow:hidden;zoom:1;width:auto;height:auto}.edui-default .edui-toolbar .edui-button,.edui-default .edui-toolbar .edui-splitbutton,.edui-default .edui-toolbar .edui-menubutton,.edui-default .edui-toolbar .edui-combox{margin:1px}.edui-default .edui-editor{border:1px solid #d4d4d4;background-color:#fff;position:relative;overflow:visible;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.edui-editor div{width:auto;height:auto}.edui-default .edui-editor-toolbarbox{position:relative;zoom:1;-webkit-box-shadow:0 1px 4px rgba(204,204,204,.6);-moz-box-shadow:0 1px 4px rgba(204,204,204,.6);box-shadow:0 1px 4px rgba(204,204,204,.6);border-top-left-radius:2px;border-top-right-radius:2px}.edui-default .edui-editor-toolbarboxouter{border-bottom:1px solid #d4d4d4;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.edui-default .edui-editor-toolbarboxinner{padding:2px}.edui-default .edui-editor-iframeholder{position:relative}.edui-default .edui-editor-bottomContainer{overflow:hidden}.edui-default .edui-editor-bottomContainer table{width:100%;height:0;overflow:hidden;border-spacing:0}.edui-default .edui-editor-bottomContainer td{white-space:nowrap;border-top:1px solid #ccc;line-height:20px;font-size:12px;font-family:Arial,Helvetica,Tahoma,Verdana,Sans-Serif}.edui-default .edui-editor-wordcount{text-align:right;margin-right:5px;color:#aaa}.edui-default .edui-editor-scale{width:12px}.edui-default .edui-editor-scale .edui-editor-icon{float:right;width:100%;height:12px;margin-top:10px;background:url(../images/scale.png) no-repeat;cursor:se-resize}.edui-default .edui-editor-breadcrumb{margin:2px 0 0 3px}.edui-default .edui-editor-breadcrumb span{cursor:pointer;text-decoration:underline;color:#00f}.edui-default .edui-toolbar .edui-for-fullscreen{float:right}.edui-default .edui-bubble .edui-popup-content{border:1px solid #DCAC6C;background-color:#fff6d9;padding:5px;font-size:10pt;font-family:"宋体"}.edui-default .edui-bubble .edui-shadow{}.edui-default .edui-editor-toolbarmsg{background-color:#FFF6D9;border-bottom:1px solid #ccc;position:absolute;bottom:-25px;left:0;z-index:1009;width:99.9%}.edui-default .edui-editor-toolbarmsg-upload{font-size:14px;color:#00f;width:100px;height:16px;line-height:16px;cursor:pointer;position:absolute;top:5px;left:350px}.edui-default .edui-editor-toolbarmsg-label{font-size:12px;line-height:16px;padding:4px}.edui-default .edui-editor-toolbarmsg-close{float:right;width:20px;height:16px;line-height:16px;cursor:pointer;color:red}.edui-default .edui-list .edui-bordereraser{display:none}.edui-default .edui-listitem{padding:1px;white-space:nowrap}.edui-default .edui-list .edui-state-hover{position:relative;background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-for-fontfamily .edui-listitem-label{min-width:130px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-insertcode .edui-listitem-label{min-width:120px;_width:120px;font-size:12px;height:22px;line-height:22px;padding-left:5px}.edui-default .edui-for-underline .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px;font-size:12px}.edui-default .edui-for-fontsize .edui-listitem-label{min-width:120px;_width:120px;padding:3px 5px}.edui-default .edui-for-paragraph .edui-listitem-label{min-width:200px;_width:200px;padding:2px 5px}.edui-default .edui-for-rowspacingtop .edui-listitem-label,.edui-default .edui-for-rowspacingbottom .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-lineheight .edui-listitem-label{min-width:53px;_width:53px;padding:2px 5px}.edui-default .edui-for-customstyle .edui-listitem-label{min-width:200px;_width:200px;width:200px!important;padding:2px 5px}.edui-default .edui-menu{z-index:3000}.edui-default .edui-menu .edui-popup-content{padding:3px}.edui-default .edui-menu-body{_width:150px;min-width:170px;background:url(../images/sparator_v.png) repeat-y 25px}.edui-default .edui-menuitem-body{}.edui-default .edui-menuitem{height:20px;cursor:default;vertical-align:top}.edui-default .edui-menuitem .edui-icon{width:20px!important;height:20px!important;background:url(../images/icons.png) 0 -4000px;background:url(../images/icons.gif) 0 -4000px\9}.edui-default .edui-menuitem .edui-label{font-size:12px;line-height:20px;height:20px;padding-left:10px}.edui-default .edui-state-checked .edui-menuitem-body{background:url(../images/icons-all.gif) no-repeat 6px -205px}.edui-default .edui-state-disabled .edui-menuitem-label{color:gray}.edui-default .edui-toolbar .edui-combox-body .edui-button-body{width:60px;font-size:12px;height:20px;line-height:20px;padding-left:5px;white-space:nowrap;margin:0 3px 0 0}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-combox .edui-combox-body{border:1px solid #CCC;background-color:#fff;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-combox-body .edui-splitborder{display:none}.edui-default .edui-toolbar .edui-combox-body .edui-arrow{border-left:1px solid #CCC}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body{background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-hover .edui-combox-body .edui-arrow{border-left:1px solid #dcac6c}.edui-default .edui-toolbar .edui-state-checked .edui-combox-body{background-color:#FFE69F;border:1px solid #DCAC6C}.edui-toolbar .edui-state-checked .edui-combox-body .edui-arrow{border-left:1px solid #DCAC6C}.edui-toolbar .edui-state-disabled .edui-combox-body{background-color:#F0F0EE;opacity:.3;filter:alpha(opacity=30)}.edui-toolbar .edui-state-opened .edui-combox-body{background-color:#fff;border:1px solid gray}.edui-default .edui-toolbar .edui-button .edui-icon,.edui-default .edui-toolbar .edui-menubutton .edui-icon,.edui-default .edui-toolbar .edui-splitbutton .edui-icon{height:20px!important;width:20px!important;background-image:url(../images/icons.png);background-image:url(../images/icons.gif) \9}.edui-default .edui-toolbar .edui-button .edui-button-wrap{padding:1px;position:relative}.edui-default .edui-toolbar .edui-button .edui-state-hover .edui-button-wrap{background-color:#fff5d4;padding:0;border:1px solid #dcac6c}.edui-default .edui-toolbar .edui-button .edui-state-checked .edui-button-wrap{background-color:#ffe69f;padding:0;border:1px solid #dcac6c;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px}.edui-default .edui-toolbar .edui-button .edui-state-active .edui-button-wrap{background-color:#fff;padding:0;border:1px solid gray}.edui-default .edui-toolbar .edui-state-disabled .edui-label{color:#ccc}.edui-default .edui-toolbar .edui-state-disabled .edui-icon{opacity:.3;filter:alpha(opacity=30)}.edui-default .edui-for-undo .edui-icon{background-position:-160px 0}.edui-default .edui-for-redo .edui-icon{background-position:-100px 0}.edui-default .edui-for-bold .edui-icon{background-position:0 0}.edui-default .edui-for-italic .edui-icon{background-position:-60px 0}.edui-default .edui-for-fontborder .edui-icon{background-position:-160px -40px}.edui-default .edui-for-underline .edui-icon{background-position:-140px 0}.edui-default .edui-for-strikethrough .edui-icon{background-position:-120px 0}.edui-default .edui-for-subscript .edui-icon{background-position:-600px 0}.edui-default .edui-for-superscript .edui-icon{background-position:-620px 0}.edui-default .edui-for-blockquote .edui-icon{background-position:-220px 0}.edui-default .edui-for-forecolor .edui-icon{background-position:-720px 0}.edui-default .edui-for-backcolor .edui-icon{background-position:-760px 0}.edui-default .edui-for-inserttable .edui-icon{background-position:-580px -20px}.edui-default .edui-for-autotypeset .edui-icon{background-position:-640px -40px}.edui-default .edui-for-justifyleft .edui-icon{background-position:-460px 0}.edui-default .edui-for-justifycenter .edui-icon{background-position:-420px 0}.edui-default .edui-for-justifyright .edui-icon{background-position:-480px 0}.edui-default .edui-for-justifyjustify .edui-icon{background-position:-440px 0}.edui-default .edui-for-insertorderedlist .edui-icon{background-position:-80px 0}.edui-default .edui-for-insertunorderedlist .edui-icon{background-position:-20px 0}.edui-default .edui-for-lineheight .edui-icon{background-position:-725px -40px}.edui-default .edui-for-rowspacingbottom .edui-icon{background-position:-745px -40px}.edui-default .edui-for-rowspacingtop .edui-icon{background-position:-765px -40px}.edui-default .edui-for-horizontal .edui-icon{background-position:-360px 0}.edui-default .edui-for-link .edui-icon{background-position:-500px 0}.edui-default .edui-for-code .edui-icon{background-position:-440px -40px}.edui-default .edui-for-insertimage .edui-icon{background-position:-726px -77px}.edui-default .edui-for-insertframe .edui-icon{background-position:-240px -40px}.edui-default .edui-for-emoticon .edui-icon{background-position:-60px -20px}.edui-default .edui-for-spechars .edui-icon{background-position:-240px 0}.edui-default .edui-for-help .edui-icon{background-position:-340px 0}.edui-default .edui-for-print .edui-icon{background-position:-440px -20px}.edui-default .edui-for-preview .edui-icon{background-position:-420px -20px}.edui-default .edui-for-selectall .edui-icon{background-position:-400px -20px}.edui-default .edui-for-searchreplace .edui-icon{background-position:-520px -20px}.edui-default .edui-for-map .edui-icon{background-position:-40px -40px}.edui-default .edui-for-gmap .edui-icon{background-position:-260px -40px}.edui-default .edui-for-insertvideo .edui-icon{background-position:-320px -20px}.edui-default .edui-for-time .edui-icon{background-position:-160px -20px}.edui-default .edui-for-date .edui-icon{background-position:-140px -20px}.edui-default .edui-for-cut .edui-icon{background-position:-680px 0}.edui-default .edui-for-copy .edui-icon{background-position:-700px 0}.edui-default .edui-for-paste .edui-icon{background-position:-560px 0}.edui-default .edui-for-formatmatch .edui-icon{background-position:-40px 0}.edui-default .edui-for-pasteplain .edui-icon{background-position:-360px -20px}.edui-default .edui-for-directionalityltr .edui-icon{background-position:-20px -20px}.edui-default .edui-for-directionalityrtl .edui-icon{background-position:-40px -20px}.edui-default .edui-for-source .edui-icon{background-position:-261px -0px}.edui-default .edui-for-removeformat .edui-icon{background-position:-580px 0}.edui-default .edui-for-unlink .edui-icon{background-position:-640px 0}.edui-default .edui-for-touppercase .edui-icon{background-position:-786px 0}.edui-default .edui-for-tolowercase .edui-icon{background-position:-806px 0}.edui-default .edui-for-insertrow .edui-icon{background-position:-478px -76px}.edui-default .edui-for-insertrownext .edui-icon{background-position:-498px -76px}.edui-default .edui-for-insertcol .edui-icon{background-position:-455px -76px}.edui-default .edui-for-insertcolnext .edui-icon{background-position:-429px -76px}.edui-default .edui-for-mergeright .edui-icon{background-position:-60px -40px}.edui-default .edui-for-mergedown .edui-icon{background-position:-80px -40px}.edui-default .edui-for-splittorows .edui-icon{background-position:-100px -40px}.edui-default .edui-for-splittocols .edui-icon{background-position:-120px -40px}.edui-default .edui-for-insertparagraphbeforetable .edui-icon{background-position:-140px -40px}.edui-default .edui-for-deleterow .edui-icon{background-position:-660px -20px}.edui-default .edui-for-deletecol .edui-icon{background-position:-640px -20px}.edui-default .edui-for-splittocells .edui-icon{background-position:-800px -20px}.edui-default .edui-for-mergecells .edui-icon{background-position:-760px -20px}.edui-default .edui-for-deletetable .edui-icon{background-position:-620px -20px}.edui-default .edui-for-cleardoc .edui-icon{background-position:-520px 0}.edui-default .edui-for-fullscreen .edui-icon{background-position:-100px -20px}.edui-default .edui-for-anchor .edui-icon{background-position:-200px 0}.edui-default .edui-for-pagebreak .edui-icon{background-position:-460px -40px}.edui-default .edui-for-imagenone .edui-icon{background-position:-480px -40px}.edui-default .edui-for-imageleft .edui-icon{background-position:-500px -40px}.edui-default .edui-for-wordimage .edui-icon{background-position:-660px -40px}.edui-default .edui-for-imageright .edui-icon{background-position:-520px -40px}.edui-default .edui-for-imagecenter .edui-icon{background-position:-540px -40px}.edui-default .edui-for-indent .edui-icon{background-position:-400px 0}.edui-default .edui-for-outdent .edui-icon{background-position:-540px 0}.edui-default .edui-for-webapp .edui-icon{background-position:-601px -40px}.edui-default .edui-for-table .edui-icon{background-position:-580px -20px}.edui-default .edui-for-edittable .edui-icon{background-position:-420px -40px}.edui-default .edui-for-template .edui-icon{background-position:-339px -40px}.edui-default .edui-for-delete .edui-icon{background-position:-360px -40px}.edui-default .edui-for-attachment .edui-icon{background-position:-620px -40px}.edui-default .edui-for-edittd .edui-icon{background-position:-700px -40px}.edui-default .edui-for-snapscreen .edui-icon{background-position:-581px -40px}.edui-default .edui-for-scrawl .edui-icon{background-position:-801px -41px}.edui-default .edui-for-background .edui-icon{background-position:-680px -40px}.edui-default .edui-for-music .edui-icon{background-position:-18px -40px}.edui-default .edui-for-formula .edui-icon{background-position:-200px -40px}.edui-default .edui-for-aligntd .edui-icon{background-position:-236px -76px}.edui-default .edui-for-insertparagraphtrue .edui-icon{background-position:-625px -76px}.edui-default .edui-for-insertparagraph .edui-icon{background-position:-602px -76px}.edui-default .edui-for-insertcaption .edui-icon{background-position:-336px -76px}.edui-default .edui-for-deletecaption .edui-icon{background-position:-362px -76px}.edui-default .edui-for-inserttitle .edui-icon{background-position:-286px -76px}.edui-default .edui-for-deletetitle .edui-icon{background-position:-311px -76px}.edui-default .edui-for-aligntable .edui-icon{background-position:-440px 0}.edui-default .edui-for-tablealignment-left .edui-icon{background-position:-460px 0}.edui-default .edui-for-tablealignment-center .edui-icon{background-position:-420px 0}.edui-default .edui-for-tablealignment-right .edui-icon{background-position:-480px 0}.edui-default .edui-for-drafts .edui-icon{background-position:-560px 0}.edui-default .edui-for-charts .edui-icon{background:url( ../images/charts.png ) no-repeat 2px 3px!important}.edui-default .edui-for-inserttitlecol .edui-icon{background-position:-673px -76px}.edui-default .edui-for-deletetitlecol .edui-icon{background-position:-698px -76px}.edui-default .edui-for-simpleupload .edui-icon{background-position:-380px 0}.edui-default .edui-toolbar .edui-splitbutton-body .edui-arrow,.edui-default .edui-toolbar .edui-menubutton-body .edui-arrow{background:url(../images/icons.png) -741px 0;_background:url(../images/icons.gif) -741px 0;height:20px;width:9px}.edui-default .edui-toolbar .edui-splitbutton .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-menubutton-body{padding:1px}.edui-default .edui-toolbar .edui-splitborder{width:1px;height:20px}.edui-default .edui-toolbar .edui-state-hover .edui-splitborder{width:1px;border-left:0 solid #dcac6c}.edui-default .edui-toolbar .edui-state-active .edui-splitborder{width:0;border-left:1px solid gray}.edui-default .edui-toolbar .edui-state-opened .edui-splitborder{width:1px;border:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-hover .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-hover .edui-menubutton-body{background-color:#fff5d4;border:1px solid #dcac6c;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-checked .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-checked .edui-menubutton-body{background-color:#FFE69F;border:1px solid #DCAC6C;padding:0}.edui-default .edui-toolbar .edui-splitbutton .edui-state-active .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-active .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-state-disabled .edui-arrow{opacity:.3;_filter:alpha(opacity=30)}.edui-default .edui-toolbar .edui-splitbutton .edui-state-opened .edui-splitbutton-body,.edui-default .edui-toolbar .edui-menubutton .edui-state-opened .edui-menubutton-body{background-color:#fff;border:1px solid gray;padding:0}.edui-default .edui-for-insertorderedlist .edui-bordereraser,.edui-default .edui-for-lineheight .edui-bordereraser,.edui-default .edui-for-rowspacingtop .edui-bordereraser,.edui-default .edui-for-rowspacingbottom .edui-bordereraser,.edui-default .edui-for-insertunorderedlist .edui-bordereraser{background-color:#fff}.edui-default .edui-for-insertorderedlist .edui-popup-body .edui-icon,.edui-default .edui-for-lineheight .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingtop .edui-popup-body .edui-icon,.edui-default .edui-for-rowspacingbottom .edui-popup-body .edui-icon,.edui-default .edui-for-insertunorderedlist .edui-popup-body .edui-icon{background-image:none}.edui-default .edui-popup{z-index:3000;background-color:#fff;width:auto;height:auto}.edui-default .edui-popup .edui-shadow{left:0;top:0;width:100%;height:100%}.edui-default .edui-popup-content{border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 4px rgba(0,0,0,.2);-moz-box-shadow:0 3px 4px rgba(0,0,0,.2);box-shadow:0 3px 4px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;padding:5px;background:#fff}.edui-default .edui-popup .edui-bordereraser{background-color:#fff;height:3px}.edui-default .edui-menu .edui-bordereraser{height:3px}.edui-default .edui-anchor-topleft .edui-bordereraser{left:1px;top:-2px}.edui-default .edui-anchor-topright .edui-bordereraser{right:1px;top:-2px}.edui-default .edui-anchor-bottomleft .edui-bordereraser{left:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-default .edui-anchor-bottomright .edui-bordereraser{right:0;bottom:-6px;height:7px;border-left:1px solid gray;border-right:1px solid gray}.edui-popup div{width:auto;height:auto}.edui-default .edui-editor-messageholder{display:block;width:150px;height:auto;border:0;margin:0;padding:0;position:absolute;top:28px;right:3px}.edui-default .edui-message{min-height:10px;text-shadow:0 1px 0 rgba(255,255,255,.5);padding:0;margin-bottom:3px;position:relative}.edui-default .edui-message-body{border-radius:3px;padding:8px 15px 8px 8px;color:#c09853;background-color:#fcf8e3;border:1px solid #fbeed5}.edui-default .edui-message-type-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.edui-default .edui-message-type-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.edui-default .edui-message-type-danger,.edui-default .edui-message-type-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.edui-default .edui-message .edui-message-closer{display:block;width:16px;height:16px;line-height:16px;position:absolute;top:0;right:0;padding:0;cursor:pointer;background:transparent;border:0;float:right;font-size:20px;font-weight:700;color:#999;text-shadow:0 1px 0 #fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.edui-default .edui-message .edui-message-content{font-size:10pt;word-wrap:break-word;word-break:normal}.edui-default .edui-dialog{z-index:2000;position:absolute}.edui-dialog div{width:auto}.edui-default .edui-dialog-wrap{margin-right:6px;margin-bottom:6px}.edui-default .edui-dialog-fullscreen-flag{margin-right:0;margin-bottom:0}.edui-default .edui-dialog-body{position:relative;padding:2px 0 0 2px;_zoom:1}.edui-default .edui-dialog-fullscreen-flag .edui-dialog-body{padding:0}.edui-default .edui-dialog-shadow{position:absolute;z-index:-1;left:0;top:0;width:100%;height:100%;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.edui-default .edui-dialog-foot{background-color:#fff}.edui-default .edui-dialog-titlebar{height:26px;border-bottom:1px solid #c6c6c6;background:url(../images/dialog-title-bg.png) repeat-x bottom;position:relative;cursor:move}.edui-default .edui-dialog-caption{font-weight:700;font-size:12px;line-height:26px;padding-left:5px}.edui-default .edui-dialog-draghandle{height:26px}.edui-default .edui-dialog-closebutton{position:absolute!important;right:5px;top:3px}.edui-default .edui-dialog-closebutton .edui-button-body{height:20px;width:20px;cursor:pointer;background:url(../images/icons-all.gif) no-repeat 0 -59px}.edui-default .edui-dialog-closebutton .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -89px}.edui-default .edui-dialog-foot{height:40px}.edui-default .edui-dialog-buttons{position:absolute;right:0}.edui-default .edui-dialog-buttons .edui-button{margin-right:10px}.edui-default .edui-dialog-buttons .edui-button .edui-button-body{background:url(../images/icons-all.gif) no-repeat;height:24px;width:96px;font-size:12px;line-height:24px;text-align:center;cursor:default}.edui-default .edui-dialog-buttons .edui-button .edui-state-hover .edui-button-body{background:url(../images/icons-all.gif) no-repeat 0 -30px}.edui-default .edui-dialog iframe{border:0;padding:0;margin:0;vertical-align:top}.edui-default .edui-dialog-modalmask{opacity:.3;filter:alpha(opacity=30);background-color:#ccc;position:absolute}.edui-default .edui-dialog-dragmask{position:absolute;background-color:transparent;cursor:move}.edui-default .edui-dialog-content{position:relative}.edui-default .dialogcontmask{cursor:move;visibility:hidden;display:block;position:absolute;width:100%;height:100%;opacity:0;filter:alpha(opacity=0)}.edui-default .edui-for-link .edui-dialog-content{width:420px;height:200px;overflow:hidden}.edui-default .edui-for-background .edui-dialog-content{width:440px;height:280px;overflow:hidden}.edui-default .edui-for-template .edui-dialog-content{width:630px;height:390px;overflow:hidden}.edui-default .edui-for-scrawl .edui-dialog-content{width:515px;*width:506px;height:360px}.edui-default .edui-for-spechars .edui-dialog-content{width:620px;height:500px;*width:630px;*height:570px}.edui-default .edui-for-insertimage .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-webapp .edui-dialog-content{width:560px;_width:565px;height:450px;overflow:hidden}.edui-default .edui-for-insertframe .edui-dialog-content{width:350px;height:200px;overflow:hidden}.edui-default .edui-for-wordimage .edui-dialog-content{width:620px;height:380px;overflow:hidden}.edui-default .edui-for-attachment .edui-dialog-content{width:650px;height:400px;overflow:hidden}.edui-default .edui-for-map .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-gmap .edui-dialog-content{width:550px;height:400px}.edui-default .edui-for-insertvideo .edui-dialog-content{width:590px;height:390px}.edui-default .edui-for-anchor .edui-dialog-content{width:320px;height:60px;overflow:hidden}.edui-default .edui-for-searchreplace .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-help .edui-dialog-content{width:400px;height:420px}.edui-default .edui-for-edittable .edui-dialog-content{width:540px;_width:590px;height:335px}.edui-default .edui-for-edittip .edui-dialog-content{width:225px;height:60px}.edui-default .edui-for-edittd .edui-dialog-content{width:240px;height:50px}.edui-default .edui-for-snapscreen .edui-dialog-content{width:400px;height:220px}.edui-default .edui-for-music .edui-dialog-content{width:515px;height:360px}.edui-default .edui-for-paragraph .edui-listitem-label{font-family:Tahoma,Verdana,Arial,Helvetica}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-p{font-size:22px;line-height:27px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h1{font-weight:bolder;font-size:32px;line-height:36px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h2{font-weight:bolder;font-size:27px;line-height:29px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h3{font-weight:bolder;font-size:19px;line-height:23px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h4{font-weight:bolder;font-size:16px;line-height:19px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h5{font-weight:bolder;font-size:13px;line-height:16px}.edui-default .edui-for-paragraph .edui-listitem-label .edui-for-h6{font-weight:bolder;font-size:12px;line-height:14px}.edui-default .edui-for-inserttable .edui-splitborder{display:none}.edui-default .edui-for-inserttable .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-inserttable .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-tablepicker .edui-infoarea{height:14px;line-height:14px;font-size:12px;width:220px;margin-bottom:3px;clear:both}.edui-default .edui-tablepicker .edui-infoarea .edui-label{float:left}.edui-default .edui-dialog-buttons .edui-label{line-height:24px}.edui-default .edui-tablepicker .edui-infoarea .edui-clickable{float:right}.edui-default .edui-tablepicker .edui-pickarea{background:url(../images/unhighlighted.gif) repeat;height:220px;width:220px}.edui-default .edui-tablepicker .edui-pickarea .edui-overlay{background:url(../images/highlighted.gif) repeat}.edui-default .edui-colorpicker-topbar{height:27px;width:200px}.edui-default .edui-colorpicker-preview{height:20px;border:1px inset #000;margin-left:1px;width:128px;float:left}.edui-default .edui-colorpicker-nocolor{float:right;margin-right:1px;font-size:12px;line-height:14px;height:14px;border:1px solid #333;padding:3px 5px;cursor:pointer}.edui-default .edui-colorpicker-tablefirstrow{height:30px}.edui-default .edui-colorpicker-colorcell{width:14px;height:14px;display:block;margin:0;cursor:pointer}.edui-default .edui-colorpicker-colorcell:hover{width:14px;height:14px;margin:0}.edui-default .edui-colorpicker-advbtn{display:block;text-align:center;cursor:pointer;height:20px}.arrow_down{background:#fff url(../images/arrow_down.png) no-repeat center}.arrow_up{background:#fff url(../images/arrow_up.png) no-repeat center}.edui-colorpicker-adv{position:relative;overflow:hidden;height:180px;display:none}.edui-colorpicker-plant,.edui-colorpicker-hue{border:solid 1px #666}.edui-colorpicker-pad{width:150px;height:150px;left:14px;top:13px;position:absolute;background:red;overflow:hidden;cursor:crosshair}.edui-colorpicker-cover{position:absolute;top:0;left:0;width:150px;height:150px;background:url(../images/tangram-colorpicker.png) -160px -200px}.edui-colorpicker-padDot{position:absolute;top:0;left:0;width:11px;height:11px;overflow:hidden;background:url(../images/tangram-colorpicker.png) 0 -200px repeat-x;z-index:1000}.edui-colorpicker-sliderMain{position:absolute;left:171px;top:13px;width:19px;height:152px;background:url(../images/tangram-colorpicker.png) -179px -12px no-repeat}.edui-colorpicker-slider{width:100%;height:100%;cursor:pointer}.edui-colorpicker-thumb{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:#fff;opacity:.8}.edui-default .edui-autotypesetpicker .edui-autotypesetpicker-body{font-size:12px;margin-bottom:3px;clear:both}.edui-default .edui-autotypesetpicker-body table{border-collapse:separate;border-spacing:2px}.edui-default .edui-autotypesetpicker-body td{font-size:12px;word-wrap:break-word}.edui-default .edui-autotypesetpicker-body td input{margin:3px 3px 3px 4px;*margin:1px 0 0}.edui-default .edui-cellalignpicker .edui-cellalignpicker-body{width:70px;font-size:12px;cursor:default}.edui-default .edui-cellalignpicker-body table{border-collapse:separate;border-spacing:0}.edui-default .edui-cellalignpicker-body td{padding:1px}.edui-default .edui-cellalignpicker-body .edui-icon{height:20px;width:20px;padding:1px;background-image:url(../images/table-cell-align.png)}.edui-default .edui-cellalignpicker-body .edui-left{background-position:0 0}.edui-default .edui-cellalignpicker-body .edui-center{background-position:-25px 0}.edui-default .edui-cellalignpicker-body .edui-right{background-position:-51px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-left{background-position:-73px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-center{background-position:-98px 0}.edui-default .edui-cellalignpicker-body td.edui-state-hover .edui-right{background-position:-124px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-left{background-position:-146px 0;background-color:#f1f4f5}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-center{background-position:-245px 0}.edui-default .edui-cellalignpicker-body td.edui-cellalign-selected .edui-right{background-position:-271px 0}.edui-default .edui-toolbar .edui-separator{width:2px;height:20px;margin:2px 4px 2px 3px;background:url(../images/icons.png) -181px 0;background:url(../images/icons.gif) -181px 0 \9}.edui-default .edui-toolbar .edui-colorbutton .edui-colorlump{position:absolute;overflow:hidden;bottom:1px;left:1px;width:18px;height:4px}.edui-default .edui-for-emotion .edui-icon{background-position:-60px -20px}.edui-default .edui-for-emotion .edui-popup-content iframe{width:514px;height:380px;overflow:hidden}.edui-default .edui-for-emotion .edui-popup-content{position:relative;z-index:555}.edui-default .edui-for-emotion .edui-splitborder{display:none}.edui-default .edui-for-emotion .edui-splitbutton-body .edui-arrow{width:0}.edui-default .edui-toolbar .edui-for-emotion .edui-state-active .edui-splitborder{border-left:1px solid transparent}.edui-default .edui-hassubmenu .edui-arrow{height:20px;width:20px;float:right;background:url(../images/icons-all.gif) no-repeat 10px -233px}.edui-default .edui-menu-body .edui-menuitem{padding:1px}.edui-default .edui-menuseparator{margin:2px 0;height:1px;overflow:hidden}.edui-default .edui-menuseparator-inner{border-bottom:1px solid #e2e3e3;margin-left:29px;margin-right:1px}.edui-default .edui-menu-body .edui-state-hover{padding:0!important;background-color:#fff5d4;border:1px solid #dcac6c}.edui-default .edui-shortcutmenu{padding:2px;width:190px;height:50px;background-color:#fff;border:1px solid #ccc;border-radius:5px}.edui-default .edui-wordpastepop .edui-popup-content{border:0;padding:0;width:54px;height:21px}.edui-default .edui-pasteicon{width:100%;height:100%;background-image:url(../images/wordpaste.png);background-position:0 0}.edui-default .edui-pasteicon.edui-state-opened{background-position:0 -34px}.edui-default .edui-pastecontainer{position:relative;visibility:hidden;width:97px;background:#fff;border:1px solid #ccc}.edui-default .edui-pastecontainer .edui-title{font-weight:700;background:#F8F8FF;height:25px;line-height:25px;font-size:12px;padding-left:5px}.edui-default .edui-pastecontainer .edui-button{overflow:hidden;margin:3px 0}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon,.edui-default .edui-pastecontainer .edui-button .edui-tagicon,.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{float:left;cursor:pointer;width:29px;height:29px;margin-left:5px;background-image:url(../images/wordpaste.png);background-repeat:no-repeat}.edui-default .edui-pastecontainer .edui-button .edui-richtxticon{margin-left:0;background-position:-109px 0}.edui-default .edui-pastecontainer .edui-button .edui-tagicon{background-position:-148px 1px}.edui-default .edui-pastecontainer .edui-button .edui-plaintxticon{background-position:-72px 0}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-richtxticon{background-position:-109px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-tagicon{background-position:-148px -34px}.edui-default .edui-pastecontainer .edui-button .edui-state-hover .edui-plaintxticon{background-position:-72px -34px} \ No newline at end of file diff --git a/public/vendor/ueditor/themes/default/dialogbase.css b/public/vendor/ueditor/themes/default/dialogbase.css new file mode 100644 index 0000000..cd663d5 --- /dev/null +++ b/public/vendor/ueditor/themes/default/dialogbase.css @@ -0,0 +1,100 @@ +/*弹出对话框页面样式组件 +*/ + +/*reset +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + outline: 0; + font-size: 100%; +} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + +ins { + text-decoration: none; +} + +del { + text-decoration: line-through; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/*module +*/ +body { + background-color: #fff; + font: 12px/1.5 sans-serif, "宋体", "Arial Narrow", HELVETICA; + color: #646464; +} + +/*tab*/ +.tabhead { + position: relative; + z-index: 10; +} + +.tabhead span { + display: inline-block; + padding: 0 5px; + height: 30px; + border: 1px solid #ccc; + background: url("images/dialog-title-bg.png") repeat-x; + text-align: center; + line-height: 30px; + cursor: pointer; + *margin-right: 5px; +} + +.tabhead span.focus { + height: 31px; + border-bottom: none; + background: #fff; +} + +.tabbody { + position: relative; + top: -1px; + margin: 0 auto; + border: 1px solid #ccc; +} + +/*button*/ +a.button { + display: block; + text-align: center; + line-height: 24px; + text-decoration: none; + height: 24px; + width: 95px; + border: 0; + color: #838383; + background: url(../../themes/default/images/icons-all.gif) no-repeat; +} + +a.button:hover { + background-position: 0 -30px; +} \ No newline at end of file diff --git a/public/vendor/ueditor/themes/default/images/anchor.gif b/public/vendor/ueditor/themes/default/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aa797b2240a432d9f3f1d166ed5542eaf684937 GIT binary patch literal 184 zcmZ?wbhEHb6kygJ|Uu&?oD;%Ae!z@09(NL_hv#6Slx0y!YR{?r|LJZgAju=f-$sQVWNL{+Tsz18#+~Ke%+zTWns()WcPwy8dQcr!JH# U&i)o#ra{o6vp4_np&fqGg-1;GP^BJO_p_?A6nLIYwB=H*Qp>A8nZf?fNnCY(uvZL zYMq5r=M|ASom0_?Sn7~VE3B<^mcq1BrHIr9EGW>Ifm~m?y<>mJPIAsKPjWszPx7z| z^K(;^4e+i)B*?S*guTS?B+Vho2 z`WG1Kuclp>qR!nSa-c>gf6E3&1HPK$>6qGXeOCp%qBL8aEd$S;?m%#@0uH|roliGe zy#i~1E?Ad#U1t}6uwt+qqgIm=xY8r0F*7 zl{ZWo1&^Wcj_roRaNKw0cq|%;M#7eRWh<*7;!rva!w3Wdg+kTSXqlOr3+!(Y+UH1c!M>bUYK1<=lG*1pq%m&P~1QC>Rx($IJPWjnN zpR&G{Rq^JvgludxnIl{D8LgfGe-+MHCcM_UcHp8Td8VLE6B~29!k7r659<2nKp^Fl zj!GszzF7d5gy6DP@ZR1H93XOu{-OI@l6&5C>BJ*|uw%klayELyqgg z(1r2VJa0I-7Tj#n#oR8}RJ&g+`2!5Q8%of3mwZ1ylT{6m^cuZ3bEx<+w~3H6c=s2I zHqmMPM&{IH<=Icl=QPsL@wWkIaQ9;d5!{KiwDTAp6ANhcA|rcd_*y;vPo-D@#WUD8 zxj?H-u8_-Qb;^#oX{dywAOO4sP%-&Maru89peVTaNW45UP{=b_+ByMxH6aCa_?|l> lFG7akQpaiL%L!NFwXt25X8cm0x*UH6P&xU?o7rDC{|kH`9-#mL literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/arrow_down.png b/public/vendor/ueditor/themes/default/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e9257e83b00375259f2f724c7cbac03d0df5ceb2 GIT binary patch literal 1610 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1OegIswNQ-xSi<4Z1u2!m4XhFqBbF8wG<_`!+|HhuxMFc&SLMF{7Z@fVvH$#8 ze|mSH#FSX^%>h00S4ci?>YufC3b$>be$N&e)g9;i=5%xkTh1s~5&sk~hpZURp;Qa?iE^5gq z0+?2AoO*aq`+eIDGp&3MoLz0RPBnf@mZEj!Y0cZVUxN2^iyZs(a?eI%oljxTtdUFo z4zJtT6vh6mc<(8@dEybWbJNr%Pc%*VvF}gIi|llP_mw#+z3j zapfmJXkU5iJgMMaq6;%eEr0F`fv2A$yk@Z1O`YMLW4b!$#En-43)(gNwO&tIE1$YR z{=f_5V<-h{r;w^f@VvOcJ`XH-Laf=HZ$7pE8y$b zea|FcbA8_y&V4&;c0EYAF6z7Uq;gWX%!S@_GP~BiYk9@S9hp{rSmuZc`!rX#z78?b z>^=VrHI}o6**U$5wKDVU&pfZEJI56Y zoT$4mvucV;+x1h4)@uJZd{#I=XN5ldnP;uVH#)aA-sLj_f6xsvx)X=xc_v2 z@-mt-`NgS3hTn0)cfZMswpSgNlI1YlD$F(+3=d#Wzp$P!&XKAJY literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/arrow_up.png b/public/vendor/ueditor/themes/default/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..74277af1e6a8ef91f8fe664efde11377a5292dbc GIT binary patch literal 1649 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE;=WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2c=9J8kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d2fv+#z;JjjJKmmhHzap_f-%!s$KQ|ZTFR<$3lAu(CGq9>I4yi0i)elN7 z&Mz%W2F6F4GE6ft?C@IzQV4X7m48ttFj5k8T=J7kb5rw5JY8&+fHHb1nJHGr&Zcf= zZpLmdj^@s;MuvtK&X$(07A9_{2F`9K1|}9TGqCA(Gj?@#HgIt=cQbG_G;}qxFf=l- zbaON}GPN)@wKR5t>GjMjE=kNwPKDW<3A7ig*AcH?E9aur#FG4?ko^1{SPBTp$S=t+ z&d4uNa1J(A2+zz*$uBPkMGnNTE~!PCWvMA{Mftf3;Lx?o#9}*PUqke!kP~A1K*#8V zk_J*zfe8WAABYK0_&^Rk>!juZ^GgvhW0Y{Wv@$R-E%tPA45_#^WvZ{gh@(K;>Z+== zX-At4KPH3-+4r@v2}X8*AN$Mh@OiHNYs3&%QbHW!0`#zh1`9tBzYV@8G#Wg&l2-#)h$FUdfE_lvm%b2=kt^Ebzn( zr(4oF%+7xg2Te=y(fqh}+AK?Nt8-e6Vo~YWrY1FhH}uX($oOv&HCTs__< zzEdCca~LbgR5%PtJYh=3FjGRGp=cUaJC^c^yU)Zr^k2P zlm5xRG;W0~lefT@)ERLuic?K4bNlUNS|KodrrwHIUNWEc`M1i>U^rI0VS1uR{)PLi zihmWG2&`Lpzrjh}nD@mILlb2Uhtt|CHp`N!r`KF5c$VaRcJZF}LJe(& zwV}p~KZGbP@?1Z4Mc+d4`MOQrYgSe4X#ZDh+%|1dL)h$@nv3?ZH`~Z?rV3X7(F@K> zb+Z2u>#VllaHj5&E!~}`b21Ja)w^fT&+2mzy!OR_pE1^}_1<=w+EA5Nm$Hp%M~^AK zU)Z92;jd=Sl<1n3x7z+*ci#Wo(IT=)J{K*+Q?C!N1MD&Sbd le02W-shBsPKJ+s%GgK)^wA}p_d>&K@c)I$ztaD0e0svXmV!r?Y literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/button-bg.gif b/public/vendor/ueditor/themes/default/images/button-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec7fa2eabf0705226fe0c488d65198508bf547e9 GIT binary patch literal 1114 zcmV-g1f}~&Nk%w1VKM+R0OkMy00030|Nr{?`~Uyg|Nq+c_4NPz*Z=(3`t{5D_RRV9 z%lr1t{P@xN^27S{$occg`t-~D_Rjb6(E0Jf`t!&5^V9k7zxnUL`S8H{@x=P_$@uNP z`0c*=@5lM`q&aU|6w)f(-(ZHJcKyq);w!1v|A_vOL(=ELpXz3||{+03)&lq#;^N`q z;o#ul-{0Tf-rm~U+Sk|D(9qET|Nj6000000000000000000000A^8LW004OaEC2ui z05SkF000O7fO%_oc!h?Ch>41ei+5{zWp`--l$Dm3n3+> zsF_HyqQ#3CGiszrN8-khAVaF@xTd7ZlPFWFT*=ZTojPn{%A85Frp=o;W!90Hv!~CW zBj>nb)267=qezn~UCPvr&^vA(N|o9Msu?(T?r7c0wX4^!V8PmfVC>oFmqw6)fdnp04j^zqp|u`Sa-0r=OsK#f}aaILMz*zrOwZ z`0-!pup>tY5FP|5;D7`cXyAbdg3v(@I*72r2M|Um;e-@cXrYB0h@gWGA&@Y_haiS1 z;)o=cSRx4_Z1{o+CA8?`i!jD0v_{FvJiptdPRD zl1w(~KIEzAo_zM{=bwE7aRU-l5Rn8GGXU|#qKr1`=%bKE+9(h+P>}@@TWDd06i{^P z>8GHED(a}AN@0Z-TXdns6;*su#jCK!D(kGY)*7p;S18d%0YNN*1r}fgE9|hu7HjOW g!~VKN5CsU(L=jFzEA6z@R%`9G*G3VB0D%AiJBq`ncK`qY literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/cancelbutton.gif b/public/vendor/ueditor/themes/default/images/cancelbutton.gif new file mode 100644 index 0000000000000000000000000000000000000000..df4bc2c06d485df4403d689c98ee745a4cde8e97 GIT binary patch literal 1227 zcmV;+1T_0cNk%w1VH^Ms0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}g000R80N?d8lSPY`ECmaSA@vT~rz=b%E}1xSN+M*v*63=s zj2W|z%bEpKgUQntPOMg`Ql)Ygt58`0p~(cQlP6A|I&tD;)03AgfeIBOG>DKjY^XJ4==@p5kGnYDTB5w7&K^jxZs(hL{cL~lH}dPcdt$q zD_5TQ&|`gZmzMqH0#&%8nU(?9AzvZOs&E($thW17wAnF=2dS zixx%10*e+@Tw%iubG*?-5ob)X#T8L>VFrIHgwcf)I#^*u6G{}}gcVlU-~$+ANa4h3 zU5Eh&8T;8#LljaNAp~tsNC8C^Rb1i1Av~P%1{`$QfyY)`G0{dGGhE??7h#NH1{!Ik pfd&v=WTQt8w{C>_-)j6kG zmZ@`2opZWct<*WE%jHsMvsp;f^!~Ol**?^DO`hifs44&=f~umb34Y07v! zehXl>0V0C67HciWn4KjeEEWr@sxtk4|8?WtNwEFcm{Yc@Vy$H`7@(^3dc70h4xmY} zPa;B+{C!@Q<^CQRW6lMfrwb>zFkriOfWsf}arIZ0*)jKSzW9HD4>|2i1+FOg^6oL0 zuMGL+PHkt#*vvh~NQ@CxMMM#xZ40h-e^cjfe*)md?7iRY1HqRBjSwR0J%@RRXP>@> zkKcbjGFwIi5M!jSYpSZEsw%t>6uuy+C;C8K=M*aB-KzlIq|@mbYi)bIUbpA-`I#n_ zWy#v)_!v+R^=b{kGLNXLO{}#BFq6sTxvIY0l+`3NPhQ=Ac;nXf2W4IstBgcUD^b-d zJ3eY@@JRF1!NCEoR?7f{5J-}wDJcQkB4Re+sH#y!e2lU916r{A&pdHrm;e9(07*qo IM6N<$g2apNRsaA1 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/cursor_h.gif b/public/vendor/ueditor/themes/default/images/cursor_h.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7c3e7e9eb5755d57ec03c34097c258244abe61a GIT binary patch literal 253 zcmVG|6H_V+Po~-c6$N^_IEGZ*Iy1qOk3oThS@Yxn_+t|0*P6|%n+#L~Iyf|E zrg84hNMwpx9_!-6|BEHhl_}FHLcZHi@xo+A>tN1bvzr~8Z#Ex)a8Qdkef% WRW|>PuXh3sXYh3Ob6Mw<&;$VH);Gui literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/cursor_v.gif b/public/vendor/ueditor/themes/default/images/cursor_v.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb508db552b6ac3f670f9ce1fcb1e55669db0dd6 GIT binary patch literal 370 zcmZ?wbhEHbQBhG}zIty_2L(xqFsZe72A-PqWelao_UPVUE#AKKd5`}glJC@2UB2rw`(IB?*A zqN1XRh{(>JJ55YXczAeJRaJNI-YqUJE-x?t@#Dumd-if8Ejy6@I4`1w~F!Qzky-V-VnInOpfk+|GDYn9AS7wc)Z8bf!!3 zZ2HZ7qm!>fg-@N3u_S6BtfcFRaLzUWGF!q z%AzEfB~`D;I)q^T@hn>GjrE?{UdLiPgP&3w>7tmXsgPC#5>G@))3jVemdgxLP8K0W zSvgGh3k4G=ZtO?YCn3lc(TL2c!850)DFo3*HcZxKVg(a36p4}m^OOpp{&p|bt$J&&x7~}fl`AqcVt%cEU2}27dM96QnwD)g zZI46N>oIHU?{_Z!WDf$^W^<7J82vsuXemZ#a;t%OX9%BFi literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/filescan.png b/public/vendor/ueditor/themes/default/images/filescan.png new file mode 100644 index 0000000000000000000000000000000000000000..1d271588692c1726e3521032f71d8354b66fab0e GIT binary patch literal 4282 zcmV;r5Jm5aP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z1?NdbK~#9!?3_!lWmOT!t7_HW`<(lvZ{H>$5@Q?MbURQ7v;-We31bE(&WQtc=8P#* zJ^>RAGY2LPoG<`iA;Azj5j8?%(@{|Rrqg}SeH_nzt+lGk!3`$J>9zR)_4^3F{8#PT zwH|0@w>~=R#xaCo;QT)bAR=2$bLC54z`uWZXJ>os!rqRXD)>5Ct=DbG|LMoaAAPtV zqsuDDy0Eu%cX7;h6_SXkyDE`Hs)|_+RL#s~l~6S^U{h07RdpjpS*mJmV5%lAYcg42 zYzC^PUb8;eGBi_DHBVMimZ_OBn2DN*C#!@612YBy00VGYWefng9mabnt1%|`QJ|@- zb{M%IV-y|6=tc_6np$#ZL?jAC!HpCk3W~x&NP#f8tfH(yAjpIiCy*XdM^2q-7i~-=?qyF|ON2^@cMp^Y}+eiJ= zPt5SQf4hHopf5kRuZCXbH*{D4g!a!nXOGO4|Mc*1Kq4exhGkg<0BnF_DCXma5@Kk8eAef@ z?2cRSvq~InbK7S&!|chLA{&|^6Cnro&7Cs*$qXKunc0ODW$`B)7FFQNWfiFc6A=?p zU2$EzkP>ypM8qLbRfozyhUH|{Aq3(;P}kIC@8FBcswogKGtOr)dh1YRJ_BatS%te> zko-_-;a>+}cMF;d*wS#g4;mo*DclFBVuZsTxSb-t^})%_wO+e&fCPSX;Ij~dDZF>< z`06g9nccjzdi~vdt5M9OwINuz*Mw)k_VCrm_80*AVLVwb*L`wT8w-}qtA5xA0DkSA zfBp5t<#XS<+_0a~+AM3#@|(YWyj=D8)1STZ{P(V{x~RT)|G=_^dt3D@zq`p>b+zha z8@+{}2-v(1JZ5d9bkUD?mt|qh#!+-V4zox~%DBDJRix%rU#Ha~$0O@8F4T;LT`2ENxy zTx1bXR*4Yov=z?8W7UY?H=K|aGBNYKsrPmzd+Sh?#mw!B!>p+v+Lh$D?~AgkDx5SN z>blz5LVv2D2-j7pYsP?7Gx>a`2-S=M8O$t;sTcSXmI=&QQp#PMy=IlEDoKf@>&DX) z@!y?tQ(A@GbsW2OTrRSB2VX4kfpXXK1(JTT$i8J*P8Q)oK>WoUw_kYW&F#vClxP#Y z^!zhuX1{;ugI~S=$K~;vOWDZ9gZ=M6`}B9e`2+*Nw=d7GJ#{Db3-HJ6J_}McKRmcR z0|0D4db9nW?p8e@@1=$Epyn(CjR4{F=jz zK-Z|fJ9%*b4xkVkWP}9TgSo6C3J96OB3KJHxR7GF6f81WLhVpT7gDNPs$hx1M$it- zWtEqqfQ<~6KwI!+O~}gU$%>#IsJ~M>nXGs&s|EFWR#{d$mz6Re`^&{9so@8s|^FfM#}lHq)$07*qoM6N<$f|`Fa&Hw-a literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/highlighted.gif b/public/vendor/ueditor/themes/default/images/highlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..9272b4915ad2b8d4052a19b4c80a41b7c71cf1f1 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfb1_to#iH~&L`;!hSvE(RtB9R?r($ulrHOzB@K_Ll!X=Ym_^ zj literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/icons-all.gif b/public/vendor/ueditor/themes/default/images/icons-all.gif new file mode 100644 index 0000000000000000000000000000000000000000..21915e59dede0aa22cda8c7097a14f0f1f68906c GIT binary patch literal 3750 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 b4O*493C(v}$CrKE*L~j?e&ctU0s;U#>#h02 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/icons.png b/public/vendor/ueditor/themes/default/images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..c015e3aac9a84ebad11b932e84722124772d9641 GIT binary patch literal 19694 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ÏmvOE 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 b`u_(2Nr-(&rSM literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/loaderror.png b/public/vendor/ueditor/themes/default/images/loaderror.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff3336457d48dbecbc11698ef8245441a94f82 GIT binary patch literal 3209 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/loading.gif b/public/vendor/ueditor/themes/default/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..b713e27dfba708a01c380e7c731a13b52a34edfc GIT binary patch literal 734 zcmZ?wbhEHb6krfw*v!jdZ*RYU|9&kkt+4ULFya6I z{|pQa5E95x{Lk&@8WQa67~pE8XTZz|68g!)$-uzNpaWzB4HaNuV6okB(sT7*i`QqX zc^L!>4t!=<(wVp51?zD`Kkg=-D~S>;skcR%7#$omMC>21xN*pcHs0c0tRNsF(;}SM ziPc1Fu!&|20tT$-nJa`fCQUjv@kC+C3!quI1U@ISvoqf2Xk|(i=IUl?N@{e_G3Yq3 z;U-H^uFrB+CTuRW+i+5nfx|fagWLs?!jQY{X6=arU0riqs^&x$2`7X};t z37RYmQ;O#*G6uOVn*=nAm7~Q)&(!ybaj}oz`WtJ?PQSHN#^y?3ICf5PGS1Ha8pE+k zgJmJh5y6y1=@^y-ft=a0ZG|ZdPArq?H(+2`(;|7`F{6Xpbl>GI8B?M_My|#ljzAN4 z3Pb@-+?qdUsm6)xA>j@^Y0K7lSt}-Mopvo#qQ-sCkLXFkyF zSLvgkf4d8-w;?feL$4)lp3HYoMI*E5@=0AueT*09aVgICcu;r3k!5-F!GZ%U3=K0F z9S$(a^)KPCsC4r`z65*B*uc`x?)kvPGDl;Yns{Fj0|R3#FisfHGY4!D^0$zE1ljvXNk%w1VH^N10QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~EC2ui02}}=000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Na$VuFhf5;SOl zQR2k}8962Z;Gkkb01ZqM%&2mp#+Cvv!u%%_X3ds21*#in3e-1?2?(ltc28ctYrP)k z{Pb@UlQicB-E)}JlDi_MMmXbuk803?iR{rRp~2S#dR_^-LU%))h*>DmHq0rnjf;8~ zsJM}rcHp`#D%4?EVW;cduL6J7ThT2kQ{cJka07oF;i3Wu4ZceYpGm&F`Sa-04-5zZJCANLt@XPdKI8X22WQ%mvv4FO#q2N BK}7%n literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/pagebreak.gif b/public/vendor/ueditor/themes/default/images/pagebreak.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d1cffd64af72709b1180b3b0a51bbfe30bcb8c6 GIT binary patch literal 54 zcmZ?wbhEHb{( zJaZG%Q-e|yQz{EjrrH1%u?6^qxTdA0{r~^J*gJ9sP=u)@$S?Rm!_(~sUO=9vr;B4q z#jTK2Cpj4yIG7J^{J*Sr7aP;;!*evU*UP7-zWuuR&zi{Xq6rL2tqds~bx9pSO$?r{ KelF{r5}E*+%QgN0 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/sortable.png b/public/vendor/ueditor/themes/default/images/sortable.png new file mode 100644 index 0000000000000000000000000000000000000000..1bca649698e187a80e1b1951fde99ddea3d7b038 GIT binary patch literal 2851 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 BXOsW{ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/spacer.gif b/public/vendor/ueditor/themes/default/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bfd67a2d6f72ac3a55cbfcea5866e841d22f5d9 GIT binary patch literal 43 mcmZ?wbhEHbWMp7uXkdT>#h)yUAf^t80Ld^gF}W}@SOWlZ0R#L1 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/sparator_v.png b/public/vendor/ueditor/themes/default/images/sparator_v.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf5662da8c36a446e1e08eb71b992c730ab8d15 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-Y0V1m%Ufcz7ii6yp7}lMWc?smOq&xaLGB9lH z=l+w(3gmMZctjR6Fz_7)VaDV6D^h@h{GKk3Arj%q6<>aQ{Qv(yqp%0-vU7cb$AD4{ Mp00i_>zopr0ET%XRR910 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/table-cell-align.png b/public/vendor/ueditor/themes/default/images/table-cell-align.png new file mode 100644 index 0000000000000000000000000000000000000000..ddf42853ea5c00663e74d9195d1f1264ab684252 GIT binary patch literal 1847 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 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/toolbar_bg.png b/public/vendor/ueditor/themes/default/images/toolbar_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab685f4236ad543601b0d7dc43e429e041bee98 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI{!2~3a95{LaNJ*BsMwA5Sra_n`~3ut zhqFCqhNk>9eAm}?**d-K>ErgL-9FQkEgB1_|9|!V%ggstduo?ezj^hOMS@|yt(J@G Th3lO_a~V8c{an^LB{Ts5X5&F_ literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/unhighlighted.gif b/public/vendor/ueditor/themes/default/images/unhighlighted.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ad0b67ae634d41e76848ec0b6696e8ac7e06983 GIT binary patch literal 111 zcmZ?wbhEHb6k`x$Sjfci#j9d&%3_1)z0Fq~5a+uP;QtU1Nea;29 zx*cclynVJpP9xwz=Q6F#ReGoPZ4xWkEPX#)_EqLPYsO~h_`vc#s_EX6+DxrJi$d-_ L>N=ao&0q}x{nsuG literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/upload.png b/public/vendor/ueditor/themes/default/images/upload.png new file mode 100644 index 0000000000000000000000000000000000000000..08d4d9268204a20ca343bf75784302cc706d2417 GIT binary patch literal 6608 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 O00001IobTth)ve1{+;xF-z$zX1$@cbk;N#jz zM8mU4YCupmEU?Nii0lQg^bRCan?Ab3%VAH658-8xBFJMB`IuzR@?X?_cxg~njWe8Z z7he1{t~NY@;sD2oqwB>InLWHP3|(&rFL;_%YXisG!f|)t`LI~xqj*wKLbXWp)f$eo z4#asOE4^bXVR1zDClZ^-`L@9YE{GEUM6w@>B$|*3C13A^6xxLq**_!Pdr{&MM+{D{ z56z@TzG*@hw6S^P4v136mt~*C)1y;z@#LIHDjO7zE0$NBVk(?tEAPD`x}r!4rSvo+ zGrN|Z-`M*gk?fXS+qo0;d0 zh<&hBzt>Fxc`eUN=*S8tip(N)4%c-Hsa$abS1kGZZD3dwRL~Y&OiQls$!Zy(aK#~| zjPP=1B(V$A*qhVABln1FxZ*mlSSnXYWQzzgJF1owUC)i7_7-#saE!r1=5SG$fWQ*I z?G_O^BB^|7ZhisN&MW7LKFbwbTU$SV{P_O;`{w56#>U3_`uf`1+Un}+%F2pDp;%g4 zT3lS5pP!e@<#Tg$GMVhlmoKxkvokX@)6>(Flao@ZbYfycB9V-bkB^RyibNuzP$&=x zMn*=4hK2?Q2l;$HkH;Gr80hQk>+S93a=9E1r@OnG&1QFYb~2ev27}Sj(b3-C-qzOE z+}zyQ*hr;PDHIBkNX*O2%g)YDPEJltOhlnjzdrQ8MQa@l0suN-^vmE^6Tt3mAau_$ zXbql@q{N)M&$25b1FG78WjFA2Q`{wpcH+plH-T+lc4H{-V^L{To}?sY^7t- zRp-#0EC|Fh>5nV9*osg354U2y3FFpwXQ!`Na;JKQ;uHrYmb=qU|MBr zTOt(Y=@VUlJq+6mQt^WJ9lIJTz?$6jvB@_0Ijg#xyHYhx6QE$9@Q;P`SNru{MQcx_ z>I9eqMm;}}tfJ*J&?Udq;ijL1AIs^TNj%ED8++(4bqQ3YK5><%~obS)3oEv z2`L9EwBilZbt=4c48b+h%ydj29TQf1;FclAt3p@D@Iv$C>k|Ryx={((b>+iEv*M}T zw2%>2(|!*aqioP7@6#WGj~%z23qkbWx? zq>K{ydFDHsgH&Ab#e8p|DBB+i&e7YjgH&Dp_Cc?zbGzF=vu-e#1^&&3UitP6Qvg=W z;+>M!e1J%3O7HX-hEcUA+~cC@8WAyj^bml>?&AT`HEEBQ}9Z=3X$i*Zty)I zU*Zj5^tvjIuB=l9Z9~T)&b;Eg=FK&TO>3g*yVOqt8d@&{JXvVbxz7~cYII$TQHvSS zgJ#LpO3a#6>HScB5@i5vKw}cnyiI*AUkCSPz7s6};*mIoCN(8C-gssBWz<}Twr?3} zMG(-KVyeCT&UjVicgg-NE@GN=DKAW@1zjD3zqggT>WPOqXK6a*HA(U%`Q-^?%QNdz M>|NJq=D?r-0Tclc1poj5 literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/default/images/word.gif b/public/vendor/ueditor/themes/default/images/word.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ef5d09b7b30c4f3225f77788462e429cc494b9b GIT binary patch literal 1019 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 bp?H9uNI6(~=EJQ&zcn<}bW|&qZNmQtXU+rA literal 0 HcmV?d00001 diff --git a/public/vendor/ueditor/themes/iframe.css b/public/vendor/ueditor/themes/iframe.css new file mode 100644 index 0000000..774013a --- /dev/null +++ b/public/vendor/ueditor/themes/iframe.css @@ -0,0 +1 @@ +/*可以在这里添加你自己的css*/ diff --git a/public/vendor/ueditor/third-party/SyntaxHighlighter/shCore.js b/public/vendor/ueditor/third-party/SyntaxHighlighter/shCore.js new file mode 100644 index 0000000..3249184 --- /dev/null +++ b/public/vendor/ueditor/third-party/SyntaxHighlighter/shCore.js @@ -0,0 +1,3655 @@ +// XRegExp 1.5.1 +// (c) 2007-2012 Steven Levithan +// MIT License +// +// Provides an augmented, extensible, cross-browser implementation of regular expressions, +// including support for additional syntax, flags, and methods + +var XRegExp; + +if (XRegExp) { + // Avoid running twice, since that would break references to native globals + throw Error("can't load XRegExp twice in the same frame"); +} + +// Run within an anonymous function to protect variables and avoid new globals +(function (undefined) { + + //--------------------------------- + // Constructor + //--------------------------------- + + // Accepts a pattern and flags; returns a new, extended `RegExp` object. Differs from a native + // regular expression in that additional syntax and flags are supported and cross-browser + // syntax inconsistencies are ameliorated. `XRegExp(/regex/)` clones an existing regex and + // converts to type XRegExp + XRegExp = function (pattern, flags) { + var output = [], + currScope = XRegExp.OUTSIDE_CLASS, + pos = 0, + context, tokenResult, match, chr, regex; + + if (XRegExp.isRegExp(pattern)) { + if (flags !== undefined) + throw TypeError("can't supply flags when constructing one RegExp from another"); + return clone(pattern); + } + // Tokens become part of the regex construction process, so protect against infinite + // recursion when an XRegExp is constructed within a token handler or trigger + if (isInsideConstructor) + throw Error("can't call the XRegExp constructor within token definition functions"); + + flags = flags || ""; + context = { // `this` object for custom tokens + hasNamedCapture: false, + captureNames: [], + hasFlag: function (flag) {return flags.indexOf(flag) > -1;}, + setFlag: function (flag) {flags += flag;} + }; + + while (pos < pattern.length) { + // Check for custom tokens at the current position + tokenResult = runTokens(pattern, pos, currScope, context); + + if (tokenResult) { + output.push(tokenResult.output); + pos += (tokenResult.match[0].length || 1); + } else { + // Check for native multicharacter metasequences (excluding character classes) at + // the current position + if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) { + output.push(match[0]); + pos += match[0].length; + } else { + chr = pattern.charAt(pos); + if (chr === "[") + currScope = XRegExp.INSIDE_CLASS; + else if (chr === "]") + currScope = XRegExp.OUTSIDE_CLASS; + // Advance position one character + output.push(chr); + pos++; + } + } + } + + regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, "")); + regex._xregexp = { + source: pattern, + captureNames: context.hasNamedCapture ? context.captureNames : null + }; + return regex; + }; + + + //--------------------------------- + // Public properties + //--------------------------------- + + XRegExp.version = "1.5.1"; + + // Token scope bitflags + XRegExp.INSIDE_CLASS = 1; + XRegExp.OUTSIDE_CLASS = 2; + + + //--------------------------------- + // Private variables + //--------------------------------- + + var replacementToken = /\$(?:(\d\d?|[$&`'])|{([$\w]+)})/g, + flagClip = /[^gimy]+|([\s\S])(?=[\s\S]*\1)/g, // Nonnative and duplicate flags + quantifier = /^(?:[?*+]|{\d+(?:,\d*)?})\??/, + isInsideConstructor = false, + tokens = [], + // Copy native globals for reference ("native" is an ES3 reserved keyword) + nativ = { + exec: RegExp.prototype.exec, + test: RegExp.prototype.test, + match: String.prototype.match, + replace: String.prototype.replace, + split: String.prototype.split + }, + compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups + compliantLastIndexIncrement = function () { + var x = /^/g; + nativ.test.call(x, ""); + return !x.lastIndex; + }(), + hasNativeY = RegExp.prototype.sticky !== undefined, + nativeTokens = {}; + + // `nativeTokens` match native multicharacter metasequences only (including deprecated octals, + // excluding character classes) + nativeTokens[XRegExp.INSIDE_CLASS] = /^(?:\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S]))/; + nativeTokens[XRegExp.OUTSIDE_CLASS] = /^(?:\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u[\dA-Fa-f]{4}|c[A-Za-z]|[\s\S])|\(\?[:=!]|[?*+]\?|{\d+(?:,\d*)?}\??)/; + + + //--------------------------------- + // Public methods + //--------------------------------- + + // Lets you extend or change XRegExp syntax and create custom flags. This is used internally by + // the XRegExp library and can be used to create XRegExp plugins. This function is intended for + // users with advanced knowledge of JavaScript's regular expression syntax and behavior. It can + // be disabled by `XRegExp.freezeTokens` + XRegExp.addToken = function (regex, handler, scope, trigger) { + tokens.push({ + pattern: clone(regex, "g" + (hasNativeY ? "y" : "")), + handler: handler, + scope: scope || XRegExp.OUTSIDE_CLASS, + trigger: trigger || null + }); + }; + + // Accepts a pattern and flags; returns an extended `RegExp` object. If the pattern and flag + // combination has previously been cached, the cached copy is returned; otherwise the newly + // created regex is cached + XRegExp.cache = function (pattern, flags) { + var key = pattern + "/" + (flags || ""); + return XRegExp.cache[key] || (XRegExp.cache[key] = XRegExp(pattern, flags)); + }; + + // Accepts a `RegExp` instance; returns a copy with the `/g` flag set. The copy has a fresh + // `lastIndex` (set to zero). If you want to copy a regex without forcing the `global` + // property, use `XRegExp(regex)`. Do not use `RegExp(regex)` because it will not preserve + // special properties required for named capture + XRegExp.copyAsGlobal = function (regex) { + return clone(regex, "g"); + }; + + // Accepts a string; returns the string with regex metacharacters escaped. The returned string + // can safely be used at any point within a regex to match the provided literal string. Escaped + // characters are [ ] { } ( ) * + ? - . , \ ^ $ | # and whitespace + XRegExp.escape = function (str) { + return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + }; + + // Accepts a string to search, regex to search with, position to start the search within the + // string (default: 0), and an optional Boolean indicating whether matches must start at-or- + // after the position or at the specified position only. This function ignores the `lastIndex` + // of the provided regex in its own handling, but updates the property for compatibility + XRegExp.execAt = function (str, regex, pos, anchored) { + var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")), + match; + r2.lastIndex = pos = pos || 0; + match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (anchored && match && match.index !== pos) + match = null; + if (regex.global) + regex.lastIndex = match ? r2.lastIndex : 0; + return match; + }; + + // Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing + // syntax and flag changes. Should be run after XRegExp and any plugins are loaded + XRegExp.freezeTokens = function () { + XRegExp.addToken = function () { + throw Error("can't run addToken after freezeTokens"); + }; + }; + + // Accepts any value; returns a Boolean indicating whether the argument is a `RegExp` object. + // Note that this is also `true` for regex literals and regexes created by the `XRegExp` + // constructor. This works correctly for variables created in another frame, when `instanceof` + // and `constructor` checks would fail to work as intended + XRegExp.isRegExp = function (o) { + return Object.prototype.toString.call(o) === "[object RegExp]"; + }; + + // Executes `callback` once per match within `str`. Provides a simpler and cleaner way to + // iterate over regex matches compared to the traditional approaches of subverting + // `String.prototype.replace` or repeatedly calling `exec` within a `while` loop + XRegExp.iterate = function (str, regex, callback, context) { + var r2 = clone(regex, "g"), + i = -1, match; + while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (regex.global) + regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback` + callback.call(context, match, ++i, str, regex); + if (r2.lastIndex === match.index) + r2.lastIndex++; + } + if (regex.global) + regex.lastIndex = 0; + }; + + // Accepts a string and an array of regexes; returns the result of using each successive regex + // to search within the matches of the previous regex. The array of regexes can also contain + // objects with `regex` and `backref` properties, in which case the named or numbered back- + // references specified are passed forward to the next regex or returned. E.g.: + // var xregexpImgFileNames = XRegExp.matchChain(html, [ + // {regex: /]+)>/i, backref: 1}, // tag attributes + // {regex: XRegExp('(?ix) \\s src=" (? [^"]+ )'), backref: "src"}, // src attribute values + // {regex: XRegExp("^http://xregexp\\.com(/[^#?]+)", "i"), backref: 1}, // xregexp.com paths + // /[^\/]+$/ // filenames (strip directory paths) + // ]); + XRegExp.matchChain = function (str, chain) { + return function recurseChain (values, level) { + var item = chain[level].regex ? chain[level] : {regex: chain[level]}, + regex = clone(item.regex, "g"), + matches = [], i; + for (i = 0; i < values.length; i++) { + XRegExp.iterate(values[i], regex, function (match) { + matches.push(item.backref ? (match[item.backref] || "") : match[0]); + }); + } + return ((level === chain.length - 1) || !matches.length) ? + matches : recurseChain(matches, level + 1); + }([str], 0); + }; + + + //--------------------------------- + // New RegExp prototype methods + //--------------------------------- + + // Accepts a context object and arguments array; returns the result of calling `exec` with the + // first value in the arguments array. the context is ignored but is accepted for congruity + // with `Function.prototype.apply` + RegExp.prototype.apply = function (context, args) { + return this.exec(args[0]); + }; + + // Accepts a context object and string; returns the result of calling `exec` with the provided + // string. the context is ignored but is accepted for congruity with `Function.prototype.call` + RegExp.prototype.call = function (context, str) { + return this.exec(str); + }; + + + //--------------------------------- + // Overriden native methods + //--------------------------------- + + // Adds named capture support (with backreferences returned as `result.name`), and fixes two + // cross-browser issues per ES3: + // - Captured values for nonparticipating capturing groups should be returned as `undefined`, + // rather than the empty string. + // - `lastIndex` should not be incremented after zero-length matches. + RegExp.prototype.exec = function (str) { + var match, name, r2, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.apply(this, arguments); + if (match) { + // Fix browsers whose `exec` methods don't consistently return `undefined` for + // nonparticipating capturing groups + if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { + r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", "")); + // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed + // matching due to characters outside the match + nativ.replace.call((str + "").slice(match.index), r2, function () { + for (var i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) + match[i] = undefined; + } + }); + } + // Attach named capture properties + if (this._xregexp && this._xregexp.captureNames) { + for (var i = 1; i < match.length; i++) { + name = this._xregexp.captureNames[i - 1]; + if (name) + match[name] = match[i]; + } + } + // Fix browsers that increment `lastIndex` after zero-length matches + if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + } + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return match; + }; + + // Fix browser bugs in native method + RegExp.prototype.test = function (str) { + // Use the native `exec` to skip some processing overhead, even though the altered + // `exec` would take care of the `lastIndex` fixes + var match, origLastIndex; + if (!this.global) + origLastIndex = this.lastIndex; + match = nativ.exec.call(this, str); + // Fix browsers that increment `lastIndex` after zero-length matches + if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) + this.lastIndex--; + if (!this.global) + this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + return !!match; + }; + + // Adds named capture support and fixes browser bugs in native method + String.prototype.match = function (regex) { + if (!XRegExp.isRegExp(regex)) + regex = RegExp(regex); // Native `RegExp` + if (regex.global) { + var result = nativ.match.apply(this, arguments); + regex.lastIndex = 0; // Fix IE bug + return result; + } + return regex.exec(this); // Run the altered `exec` + }; + + // Adds support for `${n}` tokens for named and numbered backreferences in replacement text, + // and provides named backreferences to replacement functions as `arguments[0].name`. Also + // fixes cross-browser differences in replacement text syntax when performing a replacement + // using a nonregex search value, and the value of replacement regexes' `lastIndex` property + // during replacement iterations. Note that this doesn't support SpiderMonkey's proprietary + // third (`flags`) parameter + String.prototype.replace = function (search, replacement) { + var isRegex = XRegExp.isRegExp(search), + captureNames, result, str, origLastIndex; + + // There are too many combinations of search/replacement types/values and browser bugs that + // preclude passing to native `replace`, so don't try + //if (...) + // return nativ.replace.apply(this, arguments); + + if (isRegex) { + if (search._xregexp) + captureNames = search._xregexp.captureNames; // Array or `null` + if (!search.global) + origLastIndex = search.lastIndex; + } else { + search = search + ""; // Type conversion + } + + if (Object.prototype.toString.call(replacement) === "[object Function]") { + result = nativ.replace.call(this + "", search, function () { + if (captureNames) { + // Change the `arguments[0]` string primitive to a String object which can store properties + arguments[0] = new String(arguments[0]); + // Store named backreferences on `arguments[0]` + for (var i = 0; i < captureNames.length; i++) { + if (captureNames[i]) + arguments[0][captureNames[i]] = arguments[i + 1]; + } + } + // Update `lastIndex` before calling `replacement` (fix browsers) + if (isRegex && search.global) + search.lastIndex = arguments[arguments.length - 2] + arguments[0].length; + return replacement.apply(null, arguments); + }); + } else { + str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`) + result = nativ.replace.call(str, search, function () { + var args = arguments; // Keep this function's `arguments` available through closure + return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) { + // Numbered backreference (without delimiters) or special variable + if ($1) { + switch ($1) { + case "$": return "$"; + case "&": return args[0]; + case "`": return args[args.length - 1].slice(0, args[args.length - 2]); + case "'": return args[args.length - 1].slice(args[args.length - 2] + args[0].length); + // Numbered backreference + default: + // What does "$10" mean? + // - Backreference 10, if 10 or more capturing groups exist + // - Backreference 1 followed by "0", if 1-9 capturing groups exist + // - Otherwise, it's the string "$10" + // Also note: + // - Backreferences cannot be more than two digits (enforced by `replacementToken`) + // - "$01" is equivalent to "$1" if a capturing group exists, otherwise it's the string "$01" + // - There is no "$0" token ("$&" is the entire match) + var literalNumbers = ""; + $1 = +$1; // Type conversion; drop leading zero + if (!$1) // `$1` was "0" or "00" + return $0; + while ($1 > args.length - 3) { + literalNumbers = String.prototype.slice.call($1, -1) + literalNumbers; + $1 = Math.floor($1 / 10); // Drop the last digit + } + return ($1 ? args[$1] || "" : "$") + literalNumbers; + } + // Named backreference or delimited numbered backreference + } else { + // What does "${n}" mean? + // - Backreference to numbered capture n. Two differences from "$n": + // - n can be more than two digits + // - Backreference 0 is allowed, and is the entire match + // - Backreference to named capture n, if it exists and is not a number overridden by numbered capture + // - Otherwise, it's the string "${n}" + var n = +$2; // Type conversion; drop leading zeros + if (n <= args.length - 3) + return args[n]; + n = captureNames ? indexOf(captureNames, $2) : -1; + return n > -1 ? args[n + 1] : $0; + } + }); + }); + } + + if (isRegex) { + if (search.global) + search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows) + else + search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows) + } + + return result; + }; + + // A consistent cross-browser, ES3 compliant `split` + String.prototype.split = function (s /* separator */, limit) { + // If separator `s` is not a regex, use the native `split` + if (!XRegExp.isRegExp(s)) + return nativ.split.apply(this, arguments); + + var str = this + "", // Type conversion + output = [], + lastLastIndex = 0, + match, lastLength; + + // Behavior for `limit`: if it's... + // - `undefined`: No limit + // - `NaN` or zero: Return an empty array + // - A positive number: Use `Math.floor(limit)` + // - A negative number: No limit + // - Other: Type-convert, then use the above rules + if (limit === undefined || +limit < 0) { + limit = Infinity; + } else { + limit = Math.floor(+limit); + if (!limit) + return []; + } + + // This is required if not `s.global`, and it avoids needing to set `s.lastIndex` to zero + // and restore it to its original value when we're done using the regex + s = XRegExp.copyAsGlobal(s); + + while (match = s.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.) + if (s.lastIndex > lastLastIndex) { + output.push(str.slice(lastLastIndex, match.index)); + + if (match.length > 1 && match.index < str.length) + Array.prototype.push.apply(output, match.slice(1)); + + lastLength = match[0].length; + lastLastIndex = s.lastIndex; + + if (output.length >= limit) + break; + } + + if (s.lastIndex === match.index) + s.lastIndex++; + } + + if (lastLastIndex === str.length) { + if (!nativ.test.call(s, "") || lastLength) + output.push(""); + } else { + output.push(str.slice(lastLastIndex)); + } + + return output.length > limit ? output.slice(0, limit) : output; + }; + + + //--------------------------------- + // Private helper functions + //--------------------------------- + + // Supporting function for `XRegExp`, `XRegExp.copyAsGlobal`, etc. Returns a copy of a `RegExp` + // instance with a fresh `lastIndex` (set to zero), preserving properties required for named + // capture. Also allows adding new flags in the process of copying the regex + function clone (regex, additionalFlags) { + if (!XRegExp.isRegExp(regex)) + throw TypeError("type RegExp expected"); + var x = regex._xregexp; + regex = XRegExp(regex.source, getNativeFlags(regex) + (additionalFlags || "")); + if (x) { + regex._xregexp = { + source: x.source, + captureNames: x.captureNames ? x.captureNames.slice(0) : null + }; + } + return regex; + } + + function getNativeFlags (regex) { + return (regex.global ? "g" : "") + + (regex.ignoreCase ? "i" : "") + + (regex.multiline ? "m" : "") + + (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 + (regex.sticky ? "y" : ""); + } + + function runTokens (pattern, index, scope, context) { + var i = tokens.length, + result, match, t; + // Protect against constructing XRegExps within token handler and trigger functions + isInsideConstructor = true; + // Must reset `isInsideConstructor`, even if a `trigger` or `handler` throws + try { + while (i--) { // Run in reverse order + t = tokens[i]; + if ((scope & t.scope) && (!t.trigger || t.trigger.call(context))) { + t.pattern.lastIndex = index; + match = t.pattern.exec(pattern); // Running the altered `exec` here allows use of named backreferences, etc. + if (match && match.index === index) { + result = { + output: t.handler.call(context, match, scope), + match: match + }; + break; + } + } + } + } catch (err) { + throw err; + } finally { + isInsideConstructor = false; + } + return result; + } + + function indexOf (array, item, from) { + if (Array.prototype.indexOf) // Use the native array method if available + return array.indexOf(item, from); + for (var i = from || 0; i < array.length; i++) { + if (array[i] === item) + return i; + } + return -1; + } + + + //--------------------------------- + // Built-in tokens + //--------------------------------- + + // Augment XRegExp's regular expression syntax and flags. Note that when adding tokens, the + // third (`scope`) argument defaults to `XRegExp.OUTSIDE_CLASS` + + // Comment pattern: (?# ) + XRegExp.addToken( + /\(\?#[^)]*\)/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + } + ); + + // Capturing group (match the opening parenthesis only). + // Required for support of named capturing groups + XRegExp.addToken( + /\((?!\?)/, + function () { + this.captureNames.push(null); + return "("; + } + ); + + // Named capturing group (match the opening delimiter only): (? + XRegExp.addToken( + /\(\?<([$\w]+)>/, + function (match) { + this.captureNames.push(match[1]); + this.hasNamedCapture = true; + return "("; + } + ); + + // Named backreference: \k + XRegExp.addToken( + /\\k<([\w$]+)>/, + function (match) { + var index = indexOf(this.captureNames, match[1]); + // Keep backreferences separate from subsequent literal numbers. Preserve back- + // references to named groups that are undefined at this point as literal strings + return index > -1 ? + "\\" + (index + 1) + (isNaN(match.input.charAt(match.index + match[0].length)) ? "" : "(?:)") : + match[0]; + } + ); + + // Empty character class: [] or [^] + XRegExp.addToken( + /\[\^?]/, + function (match) { + // For cross-browser compatibility with ES3, convert [] to \b\B and [^] to [\s\S]. + // (?!) should work like \b\B, but is unreliable in Firefox + return match[0] === "[]" ? "\\b\\B" : "[\\s\\S]"; + } + ); + + // Mode modifier at the start of the pattern only, with any combination of flags imsx: (?imsx) + // Does not support x(?i), (?-i), (?i-m), (?i: ), (?i)(?m), etc. + XRegExp.addToken( + /^\(\?([imsx]+)\)/, + function (match) { + this.setFlag(match[1]); + return ""; + } + ); + + // Whitespace and comments, in free-spacing (aka extended) mode only + XRegExp.addToken( + /(?:\s+|#.*)+/, + function (match) { + // Keep tokens separated unless the following token is a quantifier + return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)"; + }, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("x");} + ); + + // Dot, in dotall (aka singleline) mode only + XRegExp.addToken( + /\./, + function () {return "[\\s\\S]";}, + XRegExp.OUTSIDE_CLASS, + function () {return this.hasFlag("s");} + ); + + + //--------------------------------- + // Backward compatibility + //--------------------------------- + + // Uncomment the following block for compatibility with XRegExp 1.0-1.2: + /* + XRegExp.matchWithinChain = XRegExp.matchChain; + RegExp.prototype.addFlags = function (s) {return clone(this, s);}; + RegExp.prototype.execAll = function (s) {var r = []; XRegExp.iterate(s, this, function (m) {r.push(m);}); return r;}; + RegExp.prototype.forEachExec = function (s, f, c) {return XRegExp.iterate(s, this, f, c);}; + RegExp.prototype.validate = function (s) {var r = RegExp("^(?:" + this.source + ")$(?!\\s)", getNativeFlags(this)); if (this.global) this.lastIndex = 0; return s.search(r) === 0;}; + */ + +})(); + +// +// Begin anonymous function. This is used to contain local scope variables without polutting global scope. +// +if (typeof(SyntaxHighlighter) == 'undefined') var SyntaxHighlighter = function() { + +// CommonJS + if (typeof(require) != 'undefined' && typeof(XRegExp) == 'undefined') + { + XRegExp = require('XRegExp').XRegExp; + } + +// Shortcut object which will be assigned to the SyntaxHighlighter variable. +// This is a shorthand for local reference in order to avoid long namespace +// references to SyntaxHighlighter.whatever... + var sh = { + defaults : { + /** Additional CSS class names to be added to highlighter elements. */ + 'class-name' : '', + + /** First line number. */ + 'first-line' : 1, + + /** + * Pads line numbers. Possible values are: + * + * false - don't pad line numbers. + * true - automaticaly pad numbers with minimum required number of leading zeroes. + * [int] - length up to which pad line numbers. + */ + 'pad-line-numbers' : false, + + /** Lines to highlight. */ + 'highlight' : false, + + /** Title to be displayed above the code block. */ + 'title' : null, + + /** Enables or disables smart tabs. */ + 'smart-tabs' : true, + + /** Gets or sets tab size. */ + 'tab-size' : 4, + + /** Enables or disables gutter. */ + 'gutter' : true, + + /** Enables or disables toolbar. */ + 'toolbar' : true, + + /** Enables quick code copy and paste from double click. */ + 'quick-code' : true, + + /** Forces code view to be collapsed. */ + 'collapse' : false, + + /** Enables or disables automatic links. */ + 'auto-links' : false, + + /** Gets or sets light mode. Equavalent to turning off gutter and toolbar. */ + 'light' : false, + + 'unindent' : true, + + 'html-script' : false + }, + + config : { + space : ' ', + + /** Enables use of + * + * ``` + */ + findParent:function (node, filterFn, includeSelf) { + if (node && !domUtils.isBody(node)) { + node = includeSelf ? node : node.parentNode; + while (node) { + if (!filterFn || filterFn(node) || domUtils.isBody(node)) { + return filterFn && !filterFn(node) && domUtils.isBody(node) ? null : node; + } + node = node.parentNode; + } + } + return null; + }, + /** + * 查找node的节点名为tagName的第一个祖先节点, 查找的起点是node节点的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var node = UE.dom.domUtils.findParentByTagName( document.getElementsByTagName("div")[0], [ "BODY" ] ); + * //output: BODY + * console.log( node.tagName ); + * ``` + */ + + /** + * 查找node的节点名为tagName的祖先节点, 如果includeSelf的值为true,则查找的起点是给定的节点node, + * 否则, 起点是node的父节点。 + * @method findParentByTagName + * @param { Node } node 需要查找的节点对象 + * @param { Array } tagNames 需要查找的父节点的名称数组 + * @param { Boolean } includeSelf 查找过程是否包含node节点自身 + * @warning 查找的终点是到body节点为止 + * @return { Node | NULL } 如果找到符合条件的节点, 则返回该节点, 否则返回NULL + * @example + * ```javascript + * var queryTarget = document.getElementsByTagName("div")[0]; + * var node = UE.dom.domUtils.findParentByTagName( queryTarget, [ "DIV" ], true ); + * //output: true + * console.log( queryTarget === node ); + * ``` + */ + findParentByTagName:function (node, tagNames, includeSelf, excludeFn) { + tagNames = utils.listToMap(utils.isArray(tagNames) ? tagNames : [tagNames]); + return domUtils.findParent(node, function (node) { + return tagNames[node.tagName] && !(excludeFn && excludeFn(node)); + }, includeSelf); + }, + /** + * 查找节点node的祖先节点集合, 查找的起点是给定节点的父节点,结果集中不包含给定的节点。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + * @grammar UE.dom.domUtils.findParents(node) => Array //返回一个祖先节点数组集合,不包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf) => Array //返回一个祖先节点数组集合,includeSelf指定是否包含自身 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn) => Array //返回一个祖先节点数组集合,filterFn指定过滤条件,返回true的node将被选取 + * @grammar UE.dom.domUtils.findParents(node,includeSelf,filterFn,closerFirst) => Array //返回一个祖先节点数组集合,closerFirst为true的话,node的直接父亲节点是数组的第0个 + */ + + /** + * 查找节点node的祖先节点集合, 如果includeSelf的值为true, + * 则返回的结果集中允许出现当前给定的节点, 否则, 该节点不会出现在其结果集中。 + * @method findParents + * @param { Node } node 需要查找的节点对象 + * @param { Boolean } includeSelf 查找的结果中是否允许包含当前查找的节点对象 + * @return { Array } 给定节点的祖先节点数组 + */ + findParents:function (node, includeSelf, filterFn, closerFirst) { + var parents = includeSelf && ( filterFn && filterFn(node) || !filterFn ) ? [node] : []; + while (node = domUtils.findParent(node, filterFn)) { + parents.push(node); + } + return closerFirst ? parents : parents.reverse(); + }, + + /** + * 在节点node后面插入新节点newNode + * @method insertAfter + * @param { Node } node 目标节点 + * @param { Node } newNode 新插入的节点, 该节点将置于目标节点之后 + * @return { Node } 新插入的节点 + */ + insertAfter:function (node, newNode) { + return node.nextSibling ? node.parentNode.insertBefore(newNode, node.nextSibling): + node.parentNode.appendChild(newNode); + }, + + /** + * 删除节点node及其下属的所有节点 + * @method remove + * @param { Node } node 需要删除的节点对象 + * @return { Node } 返回刚删除的节点对象 + * @example + * ```html + *

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

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

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

    xxaaxx

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

    xxaaxx

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

    xxxx[xxxx]x

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

    xxxx[xxxx]x

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

    xxxx[xxxx]x

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

    xxxx[xxxx]x

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

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

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

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

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

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

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

    123456

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

    123456

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

    1

    2

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

    1

    2

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

    test

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

    old text

    + * editor.setContent('

    new text

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

    old text

    new text

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

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

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

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

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

    ' + cont + '

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

    132

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

    132

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

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

    $1

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

    '

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

    htmlparser

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

    xx|xxx

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

    CC

    + * //结果

    xx

    CC

    xxx

    + * //

    xxxx

    |

    xxx

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

    xxxx

    xxxx

    xxx

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

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

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

    |<[p> ==>

    |

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


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

    ' + pN.innerHTML + '

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

    ' + str + '

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

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

    xx

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

    ' + + '' + + '

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

    '+domUtils.fillHtml+'

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

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

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

    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�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 W6bp_Ic3p@70000 { + router.push({ + name: name, + params: params, + query: query + }) +} +new Vue({ + vuetify, + router, + store, + render: h => h(App) +}).$mount('#app') diff --git a/VUE-WEB/lions-web/src/pages/auth/login.vue b/VUE-WEB/lions-web/src/pages/auth/login.vue new file mode 100644 index 0000000..ece4aac --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/auth/login.vue @@ -0,0 +1,177 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/auth/verify.vue b/VUE-WEB/lions-web/src/pages/auth/verify.vue new file mode 100644 index 0000000..33a5b3b --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/auth/verify.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/VUE-WEB/lions-web/src/pages/files/index.vue b/VUE-WEB/lions-web/src/pages/files/index.vue new file mode 100644 index 0000000..144ac69 --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/files/index.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/files/show.vue b/VUE-WEB/lions-web/src/pages/files/show.vue new file mode 100644 index 0000000..66c47f9 --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/files/show.vue @@ -0,0 +1,51 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/index/index.vue b/VUE-WEB/lions-web/src/pages/index/index.vue new file mode 100644 index 0000000..ce9b922 --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/index/index.vue @@ -0,0 +1,189 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/layouts/common.vue b/VUE-WEB/lions-web/src/pages/layouts/common.vue new file mode 100644 index 0000000..cf8b3ff --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/layouts/common.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/vote/diff.vue b/VUE-WEB/lions-web/src/pages/vote/diff.vue new file mode 100644 index 0000000..a49ad39 --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/vote/diff.vue @@ -0,0 +1,331 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/vote/equal.vue b/VUE-WEB/lions-web/src/pages/vote/equal.vue new file mode 100644 index 0000000..251d42d --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/vote/equal.vue @@ -0,0 +1,315 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/pages/vote/index.vue b/VUE-WEB/lions-web/src/pages/vote/index.vue new file mode 100644 index 0000000..27bbdca --- /dev/null +++ b/VUE-WEB/lions-web/src/pages/vote/index.vue @@ -0,0 +1,179 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/plugins/toast/index.js b/VUE-WEB/lions-web/src/plugins/toast/index.js new file mode 100644 index 0000000..8f73e08 --- /dev/null +++ b/VUE-WEB/lions-web/src/plugins/toast/index.js @@ -0,0 +1,34 @@ +import Toast from "./toast" +import Vue from 'vue' + +let currentToast; + +const index = (message, color) => { + if (currentToast) { + currentToast.close() + } + + currentToast = createToast({ + Vue, + message, + color: color || 'success', + onClose: () => { + currentToast = null + } + }); +}; + +function createToast({Vue, message, color, onClose}) { + const Constructor = Vue.extend(Toast) + + let toast = new Constructor() + toast.message = message + toast.color = color + toast.timeout = 1000 + toast.$mount(); + toast.$on('close', onClose) + document.body.appendChild(toast.$el) + return toast +} + +export default index \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/plugins/toast/toast.vue b/VUE-WEB/lions-web/src/plugins/toast/toast.vue new file mode 100644 index 0000000..c77b986 --- /dev/null +++ b/VUE-WEB/lions-web/src/plugins/toast/toast.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/plugins/utils.js b/VUE-WEB/lions-web/src/plugins/utils.js new file mode 100644 index 0000000..13cdec5 --- /dev/null +++ b/VUE-WEB/lions-web/src/plugins/utils.js @@ -0,0 +1,8 @@ +const isWechat = () => { + let ua = navigator.userAgent.toLowerCase(); + return (/micromessenger/.test(ua)) ? true : false; +} + +export default { + isWechat +} \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/plugins/vuetify.js b/VUE-WEB/lions-web/src/plugins/vuetify.js new file mode 100644 index 0000000..24beabf --- /dev/null +++ b/VUE-WEB/lions-web/src/plugins/vuetify.js @@ -0,0 +1,13 @@ +import Vue from 'vue' +import Vuetify from 'vuetify' +import 'vuetify/dist/vuetify.min.css' +import '@mdi/font/css/materialdesignicons.css' + +Vue.use(Vuetify) + +export default new Vuetify({ + icons: { + iconfont: 'mdi' + }, + theme: {} +}) \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/router/index.js b/VUE-WEB/lions-web/src/router/index.js new file mode 100644 index 0000000..93e0a30 --- /dev/null +++ b/VUE-WEB/lions-web/src/router/index.js @@ -0,0 +1,123 @@ +import VueRouter from "vue-router" +import store from "@/store" + +const routes = [ + { + path: '/', + name: 'Index', + component: () => import(/* webpackChunkName: "index" */ '@/pages/index/index'), + meta: { + title: '首页', + keepAlive: true, + requireAuth: true + } + }, { + path: '/vote', + name: 'VoteIndex', + component: () => import(/* webpackChunkName: "index" */ '@/pages/vote/index'), + meta: { + title: '推举规则', + keepAlive: true, + requireAuth: true + } + }, { + path: '/vote_equal/:id', + name: 'Vote_equal', + component: () => import(/* webpackChunkName: "index" */ '@/pages/vote/equal'), + meta: { + title: '等额推举', + keepAlive: true, + requireAuth: true + } + }, { + path: '/vote_diff/:id', + name: 'Vote_diff', + component: () => import(/* webpackChunkName: "index" */ '@/pages/vote/diff'), + meta: { + title: '差额推举', + keepAlive: true, + requireAuth: true + } + }, { + path: '/files', + name: 'FileIndex', + component: () => import(/* webpackChunkName: "index" */ '@/pages/files/index'), + meta: { + title: '文件审阅', + keepAlive: true, + requireAuth: true + } + }, { + path: '/files/:id', + name: 'FileShow', + component: () => import(/* webpackChunkName: "index" */ '@/pages/files/show'), + meta: { + title: '审阅', + keepAlive: true, + requireAuth: true + } + }, { + path: '/auth', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/layouts/common'), + children: [ + { + path: 'login', + name: 'AuthLogin', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/auth/login'), + meta: { + title: '推举系统登录' + } + }, { + path: 'verify', + name: 'AuthVerify', + component: () => import(/* webpackChunkName: "auth" */ '@/pages/auth/verify'), + meta: { + title: '验证手机号' + } + } + ] + } +]; + +const router = new VueRouter({ + mode: 'history', + routes +}); + +router.beforeEach((to, from, next) => { + let hasLogin = store.state.hasLogin; + if (to.name === 'AuthLogin') { + // 如果已经登录,直接跳转到首页去 + if (hasLogin) { + next({ + name: 'Index' + }); + return + } + + let tk = localStorage.getItem('accessToken') + + if (tk) { + store.commit('login', tk); + next({ + name: 'Index' + }); + return + } + } else if (to.meta.requireAuth === true) { + if (hasLogin === false) { + next({ + name: 'AuthLogin', + params: { + next: to.path + } + }); + return + } + } + store.state.showFooter = to.meta.showFooter || false; + + next() +}); + +export default router \ No newline at end of file diff --git a/VUE-WEB/lions-web/src/store/index.js b/VUE-WEB/lions-web/src/store/index.js new file mode 100644 index 0000000..4520a9e --- /dev/null +++ b/VUE-WEB/lions-web/src/store/index.js @@ -0,0 +1,49 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex); + +const store = new Vuex.Store({ + state: { + hasLogin: false, + accessToken: '', + userInfo: null, + }, + mutations: { + login(state, token) { + state.hasLogin = true; + state.accessToken = token; + localStorage.setItem('accessToken', token) + }, + logout(state) { + state.hasLogin = false; + state.accessToken = ""; + state.userInfo = null; + localStorage.removeItem('accessToken') + localStorage.removeItem('userInfo') + } + }, + getters: {}, + actions: { + /** + * 登录并获取用户基础信息 + * @param dispatch + * @param commit + * @param token + * @returns {Promise} + */ + async doLogin({commit}, token) { + commit('login', token) + }, + /** + * 登出方法 + * @param commit + * @returns {Promise} + */ + async doLogout({commit}) { + commit('logout') + } + } +}); + +export default store diff --git a/app/Admin/Actions/CleanData.php b/app/Admin/Actions/CleanData.php new file mode 100644 index 0000000..8c071ad --- /dev/null +++ b/app/Admin/Actions/CleanData.php @@ -0,0 +1,37 @@ +update(['sign' => 0]); + + DB::table('item_logs')->truncate(); + + return $this->response()->success('清理成功')->refresh(); + } + + function dialog() + { + return $this->confirm('确认要清理数据么'); + } + + public function html() + { + return << 清理数据 +HTML; + } + +} \ No newline at end of file diff --git a/app/Admin/Actions/DestroyData.php b/app/Admin/Actions/DestroyData.php new file mode 100644 index 0000000..4657395 --- /dev/null +++ b/app/Admin/Actions/DestroyData.php @@ -0,0 +1,127 @@ +confirm('确定要销毁数据么,一旦操作不可恢复?'); + } + + public function handle(Model $model) + { + try { + if ($model->archives) { + // return $this->response()->error('数据销毁失败')->refresh(); + } + // 先做存档 + $archives = []; + + foreach ($model->items as $key => $item) { + $archives[$key] = [ + 'item_id' => $item->id, + 'item_name' => $item->name, + 'total' => User::where('type', 0)->count(), + 'sign' => User::where('type', 0)->where('sign', 1)->count(), + 'tickets' => $item->logs()->sum('result'), + ]; + } + $model->archives = $archives; + $model->save(); + + if ($model->type == 'diff') { + $download = $this->exportDiff($model); + } else { + $download = $this->exportEqual($model); + } + + // $model->logs()->delete(); + + return $this->response()->success('数据销毁完成')->refresh()->download($download); + } catch (\RuntimeException $exception) { + return $this->response()->error('数据销毁失败'.$exception->getMessage())->refresh(); + } + } + + /** + * Notes : 等额数据导出 + * + * @Date : 2022/5/4 15:39 + * @Author : + * @param $vote + * @return string + * @throws CopyFileException + * @throws CreateTemporaryFileException + */ + public function exportEqual($vote) + { + $templateProcessor = new TemplateProcessor(storage_path('app/public/DENG_FEN.docx')); + + $templateProcessor->setValue('TOTAL1', $vote->logs()->distinct('user_id')->count()); + $templateProcessor->setValue('TITLE', $vote->title); + + $i = 0; + $tpl = ''; + foreach ($vote->items as $item) { + $i++; + $tpl .= $i.'. '.$item->name.' '.$item->logs()->sum('result')." 票 "; + } + + $templateProcessor->setValue('LOOPS', $tpl); + $save = 'download_'.uniqid().'.docx'; + $templateProcessor->saveAs(storage_path('app/public/'.$save)); + + return '/storage/'.$save; + } + + /** + * Notes: 差额数据倒出 + * + * @Author: + * @Date : 2020/5/7 4:34 下午 + * @param $vote + * @return string + * @throws CopyFileException + * @throws CreateTemporaryFileException + */ + protected function exportDiff($vote): string + { + $templateProcessor = new TemplateProcessor(storage_path('app/public/CHA_E.docx')); + + $templateProcessor->setValue('TOTAL', $vote->logs()->distinct('user_id')->count()); + $templateProcessor->setValue('TITLE', $vote->title); + $templateProcessor->setValue('DATE', date('Y年m月d日', time())); + + $data = $vote->items; + + $data = $data->sortByDesc(function ($item) { + return $item->logs()->sum('result'); + }); + + $i = 0; + $tpl = ''; + foreach ($data as $item) { + $i++; + $tpl .= $i.'. '.$item->name.' '.$item->logs()->sum('result')." 票"; + } + + $templateProcessor->setValue('TPL', $tpl); + + $save = 'download_'.uniqid().'.docx'; + $templateProcessor->saveAs(storage_path('app/public/'.$save)); + + return '/storage/'.$save; + } + +} diff --git a/app/Admin/Actions/ExportCha.php b/app/Admin/Actions/ExportCha.php new file mode 100644 index 0000000..13975e1 --- /dev/null +++ b/app/Admin/Actions/ExportCha.php @@ -0,0 +1,49 @@ +setValue('TOTAL', $vote->logs()->distinct('user_id')->count()); + $templateProcessor->setValue('TITLE', $vote->title); + + $i = 0; + $tpl = ''; + foreach ($vote->items as $item) { + $i++; + $tpl .= $i . '. ' . $item->name . ' ' . $item->logs()->sum('result') . " 票\r"; + } + + $templateProcessor->setValue('TPL', $tpl); + + $save = 'chae_1.docx'; + $templateProcessor->saveAs(storage_path('app/public/' . $save)); + + return $this->response()->success('倒出成功')->download('/storage/' . $save); + } + + public function html() + { + return << 差额数据倒出 +HTML; + } + +} diff --git a/app/Admin/Actions/ExportDeng.php b/app/Admin/Actions/ExportDeng.php new file mode 100644 index 0000000..d8ccf28 --- /dev/null +++ b/app/Admin/Actions/ExportDeng.php @@ -0,0 +1,48 @@ +setValue('TOTAL1', $vote1->logs()->distinct('user_id')->count()); + + foreach ($vote1->items as $item) { + $templateProcessor->setValue('ITEM_' . $item->id, $item->logs()->sum('result')); + } + $vote3 = Vote::find(3); + $templateProcessor->setValue('TOTAL3', $vote1->logs()->distinct('user_id')->count()); + foreach ($vote3->items as $item) { + $templateProcessor->setValue('ITEM_' . $item->id, $item->logs()->sum('result')); + } + + $save = 'denge_1.docx'; + $templateProcessor->saveAs(storage_path('app/public/' . $save)); + + return $this->response()->success('倒出成功')->download('/storage/' . $save); + } + + public function html() + { + return << 等额数据倒出 +HTML; + } + +} diff --git a/app/Admin/Actions/Replicate.php b/app/Admin/Actions/Replicate.php new file mode 100644 index 0000000..549c0f4 --- /dev/null +++ b/app/Admin/Actions/Replicate.php @@ -0,0 +1,42 @@ +confirm('确定复制活动链接么?'); + } + + public function handle(Model $model) + { + try { + DB::transaction(function () use ($model) { + $new = $model->replicate(); + $new->status = 0; + $new->save(); + foreach ($model->items as $item) { + $new->items()->create([ + 'name' => $item->name, + 'cover' => $item->cover, + 'desc' => $item->desc, + 'desc2' => $item->desc2, + ]); + } + }); + + return $this->response()->success('活动链接复制完成')->refresh(); + } catch (\RuntimeException $exception) { + return $this->response()->error('活动链接复制出错了')->refresh(); + } + } + +} diff --git a/app/Admin/Actions/UserImport.php b/app/Admin/Actions/UserImport.php new file mode 100644 index 0000000..b794138 --- /dev/null +++ b/app/Admin/Actions/UserImport.php @@ -0,0 +1,79 @@ +file('file'); + // if ($file->extension() != 'csv') { + // return $this->response()->error('必须使用csv文件' . $file->extension()); + // } + $handle = fopen($file, 'r'); + if (!$handle) { + exit('读取文件失败'); + } + $failed = 0; + $success = 0; + while (($data = fgetcsv($handle)) !== false) { + if (empty($data[0])) { + continue; + } + + if (strlen($data[0]) != 11) { + $failed++; + continue; + } + if ($this->preg_is_utf8($data[1])) { + $name = $data[1]; + } else { + $name = iconv('gbk', 'utf-8', $data[1]); + } + try { + User::create([ + 'parent_id' => $request->parent_id ?: 1, + 'mobile' => $data[0], + 'name' => $name, + ]); + $success++; + } catch (\Exception $exception) { + $failed++; + } + } + fclose($handle); + + return $this->response()->success('批量处理成功' . $success . '条,失败' . $failed . '条')->refresh(); + } + + function preg_is_utf8($string) + { + return preg_match('/^.*$/u', $string) > 0;//preg_match('/^./u', $string) + } + + public function form() + { + $parents = User::select()->where('type', 1)->pluck('name', 'id'); + $this->select('parent_id')->options($parents); + $this->file('file', '请选择文件')->help('CSV - 手机号-姓名'); + } + + public function html() + { + return << 批量导入 +HTML; + } + +} diff --git a/app/Admin/Controllers/ArticleController.php b/app/Admin/Controllers/ArticleController.php new file mode 100644 index 0000000..aec810d --- /dev/null +++ b/app/Admin/Controllers/ArticleController.php @@ -0,0 +1,41 @@ +column('id', '#ID#'); + $grid->column('title', '文章标题'); + $grid->column('sort', '序号'); + $grid->column('created_at', '创建时间'); + + return $grid; + } + + public function form() + { + $form = new Form(new Article); + + $form->text('title', '文章标题'); + $form->number('category_id', '分类ID') + ->help('审阅文件固定写 2 '); + $form->textarea('desc'); + $form->ueditor('content', '文章内容')->rules('required', ['required' => '详情不能为空']); + $form->number('sort', '序号')->default(0)->rules('required', ['required' => '序号必须填写'])->help('倒序优先'); + + return $form; + } + +} diff --git a/app/Admin/Controllers/AuthController.php b/app/Admin/Controllers/AuthController.php new file mode 100644 index 0000000..3488577 --- /dev/null +++ b/app/Admin/Controllers/AuthController.php @@ -0,0 +1,10 @@ +title('Dashboard') + ->description('Description...'); + } + +} diff --git a/app/Admin/Controllers/ItemController.php b/app/Admin/Controllers/ItemController.php new file mode 100644 index 0000000..7d55bd4 --- /dev/null +++ b/app/Admin/Controllers/ItemController.php @@ -0,0 +1,82 @@ +header($vote->title) + ->description('投票列表') + ->body($this->grid($vote)); + } + + protected function grid($vote) + { + $grid = new Grid(new Item); + $grid->model()->where('vote_id', $vote->id); + $grid->column('cover')->image('', 80); + $grid->column('id', '#ID#'); + $grid->column('name'); + $grid->column('sort'); + $grid->column('得票数')->display(function () { + return $this->logs()->where('result', 1)->count(); + }); + $grid->column('created_at', '创建时间')->date('Y-m-d H:i:s'); + + return $grid; + } + + function create(Content $content, Vote $vote) + { + return $content + ->header($vote->title) + ->description('新增条目') + ->body($this->form($vote)); + } + + function form($vote) + { + $form = new Form(new Item); + + $form->hidden('vote_id')->value($vote->id); + $form->text('name', '姓名'); + $form->number('sort', '排序') + ->default(1) + ->help('正序排序'); + $form->textarea('desc', '竞选岗位'); + $form->textarea('desc2', '服务队'); + $form->image('cover', '照片') + ->uniqueName(); + + return $form; + } + + function store(Vote $vote) + { + return $this->form($vote)->store(); + } + + function edit(Content $content, Vote $vote, $id) + { + return $content + ->header($vote->title) + ->description('新增条目') + ->body($this->form($vote)->edit($id)); + } + + function update(Vote $vote, $id) + { + return $this->form($vote)->update($id); + } + +} diff --git a/app/Admin/Controllers/UserController.php b/app/Admin/Controllers/UserController.php new file mode 100644 index 0000000..0dfbca3 --- /dev/null +++ b/app/Admin/Controllers/UserController.php @@ -0,0 +1,60 @@ +tools(function (Grid\Tools $tools) { + $tools->append(new UserImport); + $tools->append(new CleanData); + }); + // $grid->disableCreateButton(); +// $grid->disableActions(); + $grid->column('归属干事')->display(function () { + return $this->parent->name ?? ''; + }); + $grid->column('mobile', '手机号'); + $grid->column('name', '姓名'); + $grid->column('sign', '签到')->bool(); + $grid->column('type', '角色')->using([ + 0 => '投票人', + 1 => '干事', + 2 => '总干事', + ]); + $grid->column('created_at', '创建时间')->date('Y-m-d H:i:s');; + + return $grid; + } + + protected function form(): Form + { + $form = new Form(new User); + + $form->text('name', '姓名'); + $form->text('mobile', '手机号'); + $form->select('parent_id','归属干事')->options( + User::where('type', 1)->pluck('name', 'id') + )->default(0); + $form->select('type')->options([ + 0 => '投票人', + 1 => '干事', + 2 => '总干事', + ])->help('只有干事,才可以呗归属,投票人必须要有归属,干事不可以有归属。'); + + return $form; + } + +} diff --git a/app/Admin/Controllers/VoteController.php b/app/Admin/Controllers/VoteController.php new file mode 100644 index 0000000..274fb2f --- /dev/null +++ b/app/Admin/Controllers/VoteController.php @@ -0,0 +1,135 @@ +tools(function (Grid\Tools $tools) { +// $tools->append(new ExportDeng()); +// $tools->append(new ExportCha()); +// }); + $grid->actions(function ($actions) { + $actions->add(new Replicate); + $actions->add(new DestroyData); + }); + $grid->column('id', '#ID#'); + $grid->column('title', '投票名称'); + $grid->column('type', '类型')->using(['diff' => '差额投票', 'equal' => '等额投票']); + $grid->column('status', '状态')->switch(); + $grid->column('数量')->display(function () { + return ''.$this->items()->count().''; + }); + $grid->column('参与/签到/总人数')->display(function () { + return $this->logs()->distinct('user_id')->count() + .'/'.User::where('type', 0)->where('sign', 1)->count() + .'/'.User::where('type', 0)->count(); + }); + $grid->column('created_at', '创建时间')->date('Y-m-d H:i:s'); + + return $grid; + } + + public function form() + { + $form = new Form(new Vote); + + $form->text('title', '投票名称')->required(); + $form->select('type', '类型')->options([ + 'equal' => '等额', + 'diff' => '差额', + ]); + $form->number('max')->default(0) + ->help('差额选票,最大可选人数'); + + $form->switch('status', '状态'); + + $form->ueditor('rules', '投票规则'); + + return $form; + } + + public function detail($id) + { + $data = Item::where('vote_id', $id)->get(); + + $data = $data->sortByDesc(function ($item, $key) { + return $item->logs()->sum('result'); + }); + + // table 2 + $headers = ['序号', '姓名', '得票', '投票用户', '签到用户', '通过率']; + $rows = []; + $i = 1; + foreach ($data as $item) { + $cent = $item->logs()->sum('result') / User::where('type', 0)->where('sign', 1)->count(); + + $color = $cent > 0.5 ? 'green' : 'red'; + + $cent = ''.number_format($cent * 100, 2).'%'; + $rows[] = [ + $i++, + $item->name, + $item->logs()->sum('result'), + $item->vote->logs()->distinct('user_id')->count(), + User::where('type', 0)->where('sign', 1)->count(), + $cent, + ]; + } + + return new Table($headers, $rows); + + $grid = new Grid(new Item); + + // $grid->model()->with([ + // 'logs' => function ($query) { + // $query->orderBy(\DB::raw('SUM(`result`)'), 'desc'); + // }, + // ]); + // $grid->model()->orderByRaw('updated_at - created_at DESC') + + $grid->paginate(100); + $grid->disableActions(); + $grid->disableCreateButton(); + $grid->model()->where('vote_id', $id); + + $grid->column('name', '姓名'); + $grid->column('票数')->display(function () { + return $this->logs()->sum('result'); + }); + $grid->column('结果')->display(function () { + $cent = $this->logs()->sum('result') / User::where('type', 0)->where('sign', 1)->count(); + + $color = $cent > 0.51 ? 'green' : 'red'; + + return ''.number_format($cent * 100, 2).'%'; + }); + + $grid->column('签到用户')->display(function () { + return User::where('type', 0)->where('sign', 1)->count(); + }); + // $grid->column('用户总数')->display(function () { + // return User::where('type', 0)->count(); + // }); + + return $grid; + } + +} diff --git a/app/Admin/bootstrap.php b/app/Admin/bootstrap.php new file mode 100644 index 0000000..f3c4742 --- /dev/null +++ b/app/Admin/bootstrap.php @@ -0,0 +1,29 @@ +disableEditingCheck(); + $form->disableCreatingCheck(); + $form->disableViewCheck(); + $form->tools(function (Form\Tools $tools) { + $tools->disableDelete(); + $tools->disableView(); + $tools->disableList(); + }); +}); + +Grid::init(function (Grid $grid) { + $grid->disableExport(); + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->disableView(); + }); + $grid->disableBatchActions(); + $grid->filter(function ($filter) { + $filter->disableIdFilter(); + }); + // $grid->expandFilter(); +}); diff --git a/app/Admin/routes.php b/app/Admin/routes.php new file mode 100644 index 0000000..4681fe6 --- /dev/null +++ b/app/Admin/routes.php @@ -0,0 +1,19 @@ + config('admin.route.prefix'), + 'namespace' => config('admin.route.namespace'), + 'middleware' => config('admin.route.middleware'), +], function (Router $router) { + $router->get('/', 'HomeController@index')->name('admin.home'); + $router->resource('votes/{vote}/items', 'ItemController'); + $router->resource('votes', 'VoteController'); + $router->resource('users', 'UserController'); + $router->resource('articles', 'ArticleController'); + +}); diff --git a/app/Api/Controllers/ArticleController.php b/app/Api/Controllers/ArticleController.php new file mode 100644 index 0000000..61ae6cd --- /dev/null +++ b/app/Api/Controllers/ArticleController.php @@ -0,0 +1,41 @@ +select(['id', 'title', 'desc'])->get(); + + foreach ($files as $file) { + $file->is = $file->audit()->where('user_id', Api::id())->exists(); + } + return $this->success([ + 'user' => Api::user(), + 'files' => $files, + ]); + } + function show(Article $article) + { + return $this->success([ + 'article' => $article, + 'audited' => $article->audit()->where('user_id', Api::id())->exists(), + ]); + } + + function audit(Article $article) + { + $article->audit()->firstOrCreate([ + 'user_id' => Api::id(), + ]); + + return $this->success('审阅成功'); + } + +} diff --git a/app/Api/Controllers/AuthController.php b/app/Api/Controllers/AuthController.php new file mode 100644 index 0000000..6ae7cfc --- /dev/null +++ b/app/Api/Controllers/AuthController.php @@ -0,0 +1,77 @@ +success([ + 'agreement' => Article::where('id', 7)->value('content'), + 'privacy' => Article::where('id', 7)->value('content'), + ]); + } + + /** + * Notes : 干事登录,type必须大于1的 + * + * @Date : 2022/4/30 15:49 + * @Author : + * @param Request $request + * @return mixed + */ + function code2(Request $request) + { + $username = $request->username; + + $user = User::where('mobile', $username)->where('type', '>=', 1)->first(); + if (!$user) { + return $this->failed('对不起,您无权登录'); + } else { + Sms::send($username); + + return $this->success('发送成功'); + } + } + + public function code(Request $request) + { + $username = $request->username; + + $user = User::where('mobile', $username)->where('type', 0)->first(); + if (!$user) { + return $this->failed('对不起,您无权登录'); + } else { + Sms::send($username); + + return $this->success('发送成功'); + } + } + + public function loginByCode(Request $request) + { + $username = $request->username; + $code = $request->verify; + + if (Sms::check($username, $code)) { + $user = User::where('mobile', $username)->first(); + + $token = Api::login($user); + + return $this->success([ + 'access_token' => 'Bearer ' . $token, + ]); + } else { + return $this->failed('验证码不正确'); + } + + } + +} diff --git a/app/Api/Controllers/Controller.php b/app/Api/Controllers/Controller.php new file mode 100644 index 0000000..c2b8958 --- /dev/null +++ b/app/Api/Controllers/Controller.php @@ -0,0 +1,12 @@ +value('content'); + $license = str_replace('{username}', $user->name, $license); + $license = str_replace('{mobile}', $user->mobile, $license); + + $voteShow = false; + + $vote = Vote::where('status', 1)->first(); + + if ($vote && ! $vote->logs()->where('user_id', Api::id())->exists()) { + $voteShow = true; + } + + return $this->success([ + 'user' => Api::user(), + 'sign' => Api::user()->sign, + 'can_sign' => config('open_sign'), + 'license' => $license, + 'vote' => $voteShow, + 'dested' => (bool) config('dested'), + ]); + } + + public function sign() + { + if (config('open_sign')) { + $user = Api::user(); + + $user->sign = 1; + $user->save(); + + return $this->success('签到成功'); + } else { + return $this->failed('签到已关闭'); + } + } + + function agent() + { + if (Api::user()->type == 1) { + $users = User::where('parent_id', Api::id())->select(['id', 'mobile', 'name', 'sign'])->get(); + } else { + $users = User::where('type', 0)->select(['id', 'mobile', 'name', 'sign'])->get(); + } + + $vote = Vote::where('status', 1)->first(); + + if ($vote) { + foreach ($users as $user) { + $user->vote = $vote->logs()->where('user_id', $user->id)->exists(); + } + } + + return $this->success([ + 'now_vote' => $vote->title ?? '', + 'user' => Api::user(), + 'desserts' => $users, + ]); + } + +} diff --git a/app/Api/Controllers/VoteController.php b/app/Api/Controllers/VoteController.php new file mode 100644 index 0000000..68212f7 --- /dev/null +++ b/app/Api/Controllers/VoteController.php @@ -0,0 +1,74 @@ +first(); + + return $this->success([ + 'vote' => $vote, + 'lock' => $vote->logs()->where('user_id', Api::id())->exists(), + ]); + } + + public function show(Vote $vote, Request $request) + { + return $this->success([ + 'lock' => $vote->logs()->where('user_id', Api::id())->exists(), + 'info' => $vote, + 'list' => ItemResource::collection($vote->items()->orderBy('sort', 'asc')->get()), + ]); + } + + public function submit(Vote $vote, Request $request) + { + if ($vote->status != 1) { + return $this->success([ + 'icon' => 'mdi-close-circle', + 'msg' => '投票通道已关闭', + 'tips' => '本轮推举已结束,您在规定时间内未提交结果。' + ]); + } + if ($vote->logs()->where('user_id', Api::id())->exists()) { + return $this->success([ + 'icon' => 'mdi-close-circle', + 'msg' => '重复提交', + 'tips' => '您已经参与过推举,请不要重复提交。' + ]); + } + + if ($vote->type == 'equal') { + foreach ($request->data as $item) { + $vote->logs()->create([ + 'user_id' => Api::id(), + 'item_id' => $item['id'], + 'result' => $item['result'], + ]); + } + } else { + foreach ($request->data as $item) { + $vote->logs()->create([ + 'user_id' => Api::id(), + 'item_id' => $item, + 'result' => 1, + ]); + } + } + + return $this->success([ + 'icon' => 'mdi-checkbox-marked-circle', + 'msg' => '投票成功,感谢您的参与', + 'tips' => '您已提交本轮次推举票,为保密,已隐藏您的推举结果,任何人无法查询。' + ]); + } + +} diff --git a/app/Api/Resources/ItemResource.php b/app/Api/Resources/ItemResource.php new file mode 100644 index 0000000..0e55f7d --- /dev/null +++ b/app/Api/Resources/ItemResource.php @@ -0,0 +1,23 @@ + $this->id, + 'name' => $this->name, + 'desc' => $this->desc, + 'desc2' => $this->desc2, + 'cover' => Storage::url($this->cover), + 'radio' => '1', + ]; + } + +} diff --git a/app/Api/bootstrap.php b/app/Api/bootstrap.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/app/Api/bootstrap.php @@ -0,0 +1 @@ + config('api.route.domain'), + 'prefix' => config('api.route.prefix'), + 'namespace' => config('api.route.namespace'), + 'middleware' => config('api.route.middleware'), +], function (Router $router) { + $router->get('auth/license', 'AuthController@license'); + $router->post('auth/code/login', 'AuthController@code'); + $router->post('auth/code/login2', 'AuthController@code2'); + $router->post('auth/loginByCode', 'AuthController@loginByCode'); +}); + +Route::group([ + 'domain' => config('api.route.domain'), + 'prefix' => config('api.route.prefix'), + 'namespace' => config('api.route.namespace'), + 'middleware' => config('api.route.middleware_auth'), +], function (Router $router) { + $router->get('index', 'IndexController@index'); + $router->get('agent', 'IndexController@agent'); + $router->post('sign', 'IndexController@sign'); + + $router->get('vote', 'VoteController@index'); + $router->get('vote/{vote}', 'VoteController@show'); + $router->post('vote/{vote}', 'VoteController@submit'); + $router->get('articles', 'ArticleController@index'); + $router->get('articles/{article}', 'ArticleController@show'); + $router->post('articles/{article}', 'ArticleController@audit'); +}); diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..69914e9 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,41 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..59c585d --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,55 @@ +isMethod('POST')) { + $mobile = $request->mobile; + + $user = User::where('mobile', $mobile)->first(); + if ($user) { + Auth::login($user); + + return redirect()->route('index'); + } else { + echo "YONGHU NO"; + } + } else { +// return view('auth.login'); + } + } + +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..d205e89 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:60,1', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/CheckForMaintenanceMode.php b/app/Http/Middleware/CheckForMaintenanceMode.php new file mode 100644 index 0000000..35b9824 --- /dev/null +++ b/app/Http/Middleware/CheckForMaintenanceMode.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..5a50e7b --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ +hasOne(ArticleAudit::class); + } +} diff --git a/app/Models/ArticleAudit.php b/app/Models/ArticleAudit.php new file mode 100644 index 0000000..bb6201f --- /dev/null +++ b/app/Models/ArticleAudit.php @@ -0,0 +1,18 @@ +belongsTo(User::class); + } + + function article() + { + return $this->belongsTo(Article::class); + } + +} diff --git a/app/Models/Item.php b/app/Models/Item.php new file mode 100644 index 0000000..ac1c5aa --- /dev/null +++ b/app/Models/Item.php @@ -0,0 +1,28 @@ + + * @Date: 2020/5/1 23:52 + * @return BelongsTo + */ + public function vote(): BelongsTo + { + return $this->belongsTo(Vote::class); + } + + public function logs() + { + return $this->hasMany(ItemLog::class); + } + +} diff --git a/app/Models/ItemLog.php b/app/Models/ItemLog.php new file mode 100644 index 0000000..94f168f --- /dev/null +++ b/app/Models/ItemLog.php @@ -0,0 +1,18 @@ +belongsTo(User::class); + } + + public function item() + { + return $this->belongsTo(Item::class); + } + +} diff --git a/app/Models/Model.php b/app/Models/Model.php new file mode 100644 index 0000000..0dc6bc6 --- /dev/null +++ b/app/Models/Model.php @@ -0,0 +1,13 @@ +belongsTo(__CLASS__); + } + + public function setParentIdAttribute($value) + { + if ($value) { + $this->attributes['parent_id'] = $value; + } else { + $this->attributes['parent_id'] = 0; + } + } + +} diff --git a/app/Models/Vote.php b/app/Models/Vote.php new file mode 100644 index 0000000..d9b9927 --- /dev/null +++ b/app/Models/Vote.php @@ -0,0 +1,26 @@ + 'json', + ]; + + public function items() + { + return $this->hasMany(Item::class); + } + + public function logs() + { + return $this->hasMany(ItemLog::class); + } + +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..07fd668 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,33 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + parent::boot(); + + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..540d17b --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,80 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + + // + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + } +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..5c23e2e --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9a230bf --- /dev/null +++ b/composer.json @@ -0,0 +1,71 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": [ + "framework", + "laravel" + ], + "license": "MIT", + "require": { + "php": "^7.2.5", + "codingyu/ueditor": "^3.0", + "encore/laravel-admin": "^1.7", + "fideloper/proxy": "^4.2", + "fruitcake/laravel-cors": "^1.0", + "guzzlehttp/guzzle": "^6.3", + "jasonc/api": "^3.0", + "jasonc/sms": "^1.1", + "laravel-admin-ext/config": "^1.1", + "laravel/framework": "^7.0", + "laravel/tinker": "^2.0", + "maatwebsite/excel": "^3.1", + "phpoffice/phpword": "^0.17.0", + "tymon/jwt-auth": "^1.0" + }, + "require-dev": { + "facade/ignition": "^2.0", + "fzaninotto/faker": "^1.9.1", + "mockery/mockery": "^1.3.1", + "nunomaduro/collision": "^4.1", + "phpunit/phpunit": "^8.5" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "autoload": { + "psr-4": { + "App\\": "app/" + }, + "classmap": [ + "database/seeds", + "database/factories" + ] + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..eba79ba --- /dev/null +++ b/composer.lock @@ -0,0 +1,8725 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "6694a50178cffb5a0cb31986e76ab7ba", + "packages": [ + { + "name": "asm89/stack-cors", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/b9c31def6a83f84b4d4a40d35996d375755f0e08", + "reference": "b9c31def6a83f84b4d4a40d35996d375755f0e08", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.5.9", + "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0 || ^4.8.10", + "squizlabs/php_codesniffer": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/Asm89/Stack/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "time": "2019-12-24T22:41:47+00:00" + }, + { + "name": "brick/math", + "version": "0.8.15", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "9b08d412b9da9455b210459ff71414de7e6241cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/9b08d412b9da9455b210459ff71414de7e6241cd", + "reference": "9b08d412b9da9455b210459ff71414de7e6241cd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1|^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15|^8.5", + "vimeo/psalm": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "time": "2020-04-15T15:59:35+00:00" + }, + { + "name": "codingyu/laravel-ueditor", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/codingyu/laravel-ueditor.git", + "reference": "aec2ab21426cb7fe580ca6d78ba785c436f27ac5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/codingyu/laravel-ueditor/zipball/aec2ab21426cb7fe580ca6d78ba785c436f27ac5", + "reference": "aec2ab21426cb7fe580ca6d78ba785c436f27ac5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "~5.5|~6.0|~7.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "^1.10" + }, + "suggest": { + "overtrue/laravel-filesystem-qiniu": "如果你想要使用七牛云存储,也许你需要安装它哦~" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Codingyu\\LaravelUEditor\\UEditorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Codingyu\\LaravelUEditor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "codingyu", + "email": "everceyu@gmail.com" + } + ], + "description": "UEditor integration for Laravel.", + "time": "2020-03-05T13:10:58+00:00" + }, + { + "name": "codingyu/ueditor", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/laravel-admin-extensions/UEditor.git", + "reference": "9ba2d209317b1f396a846a6b202e7a0fdd722c12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel-admin-extensions/UEditor/zipball/9ba2d209317b1f396a846a6b202e7a0fdd722c12", + "reference": "9ba2d209317b1f396a846a6b202e7a0fdd722c12", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "codingyu/laravel-ueditor": "~2.0", + "encore/laravel-admin": "~1.6", + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Codingyu\\Ueditor\\UeditorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Codingyu\\Ueditor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "codingyu", + "email": "everceyu@gmail.com" + } + ], + "description": "UEditor extension for laravel-admin", + "homepage": "https://github.com/codingyu/UEditor", + "keywords": [ + "extension", + "laravel-admin", + "ueditor" + ], + "time": "2019-10-02T14:48:14+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/cache", + "version": "1.10.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/35a4a70cd94e09e2259dfae7488afc6b474ecbd3", + "reference": "35a4a70cd94e09e2259dfae7488afc6b474ecbd3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^6.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2020-05-27T16:24:54+00:00" + }, + { + "name": "doctrine/dbal", + "version": "2.10.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/event-manager": "^1.0", + "ext-pdo": "*", + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "jetbrains/phpstorm-stubs": "^2019.1", + "nikic/php-parser": "^4.4", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^8.4.1", + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "vimeo/psalm": "^3.11" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlanywhere", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "time": "2020-04-20T17:19:26+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "629572819973f13486371cb611386eb17851e85c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", + "reference": "629572819973f13486371cb611386eb17851e85c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "time": "2019-11-10T09:48:07+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2020-05-29T15:13:26+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2020-05-25T17:44:05+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.4|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2019-03-31T00:38:28+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.17", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" + }, + "require-dev": { + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "EmailValidator" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "time": "2020-02-13T22:36:52+00:00" + }, + { + "name": "encore/laravel-admin", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/z-song/laravel-admin.git", + "reference": "86e937333c1a593c5384d31836534e79a499edc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/z-song/laravel-admin/zipball/86e937333c1a593c5384d31836534e79a499edc4", + "reference": "86e937333c1a593c5384d31836534e79a499edc4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/dbal": "2.*", + "laravel/framework": ">=5.5", + "php": ">=7.0.0", + "symfony/dom-crawler": "~3.1|~4.0|~5.0" + }, + "require-dev": { + "fzaninotto/faker": "~1.4", + "intervention/image": "~2.3", + "laravel/browser-kit-testing": "^6.0", + "laravel/laravel": ">=5.5" + }, + "suggest": { + "intervention/image": "Required to handling and manipulation upload images (~2.3).", + "spatie/eloquent-sortable": "Required to built orderable gird." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Encore\\Admin\\AdminServiceProvider" + ], + "aliases": { + "Admin": "Encore\\Admin\\Facades\\Admin" + } + } + }, + "autoload": { + "psr-4": { + "Encore\\Admin\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "zsong", + "email": "zosong@126.com" + } + ], + "description": "laravel admin", + "homepage": "https://github.com/z-song/laravel-admin", + "keywords": [ + "admin", + "form", + "grid", + "laravel" + ], + "time": "2020-05-28T02:24:56+00:00" + }, + { + "name": "fideloper/proxy", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "^5.0|^6.0|^7.0|^8.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "time": "2020-02-22T01:51:47+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/1d127dbec313e2e227d65e0c483765d8d7559bf6", + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "asm89/stack-cors": "^1.3", + "illuminate/contracts": "^5.5|^6.0|^7.0|^8.0", + "illuminate/support": "^5.5|^6.0|^7.0|^8.0", + "php": ">=7", + "symfony/http-foundation": "^3.3|^4.0|^5.0", + "symfony/http-kernel": "^3.3|^4.0|^5.0" + }, + "require-dev": { + "laravel/framework": "^5.5|^6.0|^7.0|^8.0", + "orchestra/testbench": "^3.5|^4.0|^5.0|^6.0", + "phpro/grumphp": "^0.16|^0.17", + "phpunit/phpunit": "^6.0|^7.0|^8.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "time": "2020-04-28T08:47:37+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.5.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a4a1b6930528a8f7ee03518e6442ec7a44155d9d", + "reference": "a4a1b6930528a8f7ee03518e6442ec7a44155d9d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.6.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "1.17.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2020-05-25T19:35:05+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", + "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2019-07-01T23:21:34+00:00" + }, + { + "name": "jasonc/api", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/cjango/laravel-api.git", + "reference": "d92a50d5430c7215c06946e9830933ac20216e13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cjango/laravel-api/zipball/d92a50d5430c7215c06946e9830933ac20216e13", + "reference": "d92a50d5430c7215c06946e9830933ac20216e13", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "*", + "php": ">=7.1.3", + "tymon/jwt-auth": "^1.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Jason\\Api\\ApiServiceProvider" + ], + "aliases": { + "Api": "Jason\\Api" + } + } + }, + "autoload": { + "psr-4": { + "Jason\\": "src/" + }, + "files": [] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "C.Jason", + "email": "chenjxlg@163.com" + } + ], + "time": "2020-05-13T04:04:53+00:00" + }, + { + "name": "jasonc/sms", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/cjango/laravel-sms.git", + "reference": "1c461008fb34f1d3e7caf3d560f7db50937c6d49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cjango/laravel-sms/zipball/1c461008fb34f1d3e7caf3d560f7db50937c6d49", + "reference": "1c461008fb34f1d3e7caf3d560f7db50937c6d49", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "*", + "overtrue/easy-sms": "^1.1", + "php": ">=7.1.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Jason\\Sms\\ServiceProvider" + ], + "aliases": { + "Sms": "Jason\\Sms\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Jason\\Sms\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "C.Jason", + "email": "chenjxlg@163.com" + } + ], + "time": "2020-03-26T16:10:00+00:00" + }, + { + "name": "laravel-admin-ext/config", + "version": "v1.1", + "source": { + "type": "git", + "url": "https://github.com/laravel-admin-extensions/config.git", + "reference": "5fe99f56758adfd8436ac5d02e83e72a6388dfc2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel-admin-extensions/config/zipball/5fe99f56758adfd8436ac5d02e83e72a6388dfc2", + "reference": "5fe99f56758adfd8436ac5d02e83e72a6388dfc2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "encore/laravel-admin": ">=1.6", + "laravel/framework": ">=5.5", + "php": ">=7.0.0" + }, + "require-dev": { + "laravel/laravel": "~5.5", + "phpunit/phpunit": "~6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Encore\\Admin\\Config\\ConfigServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Encore\\Admin\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "z-song", + "email": "zosong@126.com" + } + ], + "description": "Config extension for laravel-admin", + "homepage": "https://github.com/laravel-admin-extensions/config", + "keywords": [ + "laravel-admin", + "setting" + ], + "time": "2019-12-11T02:31:22+00:00" + }, + { + "name": "laravel/framework", + "version": "v7.14.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "469b7719a8dca40841a74f59f2e9f30f01d3a106" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/469b7719a8dca40841a74f59f2e9f30f01d3a106", + "reference": "469b7719a8dca40841a74f59f2e9f30f01d3a106", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "league/commonmark": "^1.3", + "league/flysystem": "^1.0.34", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.17", + "opis/closure": "^3.1", + "php": "^7.2.5", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^3.7|^4.0", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^5.0", + "symfony/error-handler": "^5.0", + "symfony/finder": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/http-kernel": "^5.0", + "symfony/mime": "^5.0", + "symfony/polyfill-php73": "^1.17", + "symfony/process": "^5.0", + "symfony/routing": "^5.0", + "symfony/var-dumper": "^5.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^4.0", + "voku/portable-ascii": "^1.4.8" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", + "filp/whoops": "^2.4", + "guzzlehttp/guzzle": "^6.3.1|^7.0", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.3.1", + "moontoast/math": "^1.1", + "orchestra/testbench-core": "^5.0", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.4|^9.0", + "predis/predis": "^1.1.1", + "symfony/cache": "^5.0" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "filp/whoops": "Required for friendly error pages in development (^2.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.3.1).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", + "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "time": "2020-06-02T22:34:18+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "cde90a7335a2130a4488beb68f4b2141869241db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/cde90a7335a2130a4488beb68f4b2141869241db", + "reference": "cde90a7335a2130a4488beb68f4b2141869241db", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "php": "^7.2", + "psy/psysh": "^0.10.3", + "symfony/var-dumper": "^4.3|^5.0" + }, + "require-dev": { + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^8.4|^9.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "time": "2020-04-07T15:01:31+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "56f10808089e38623345e28af2f2d5e4eb579455" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/56f10808089e38623345e28af2f2d5e4eb579455", + "reference": "56f10808089e38623345e28af2f2d5e4eb579455", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-mbstring": "*", + "ext-openssl": "*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "^5.7 || ^7.3", + "squizlabs/php_codesniffer": "~2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "funding": [ + { + "url": "https://github.com/lcobucci", + "type": "github" + }, + { + "url": "https://www.patreon.com/lcobucci", + "type": "patreon" + } + ], + "time": "2020-05-22T08:21:12+00:00" + }, + { + "name": "league/commonmark", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/412639f7cfbc0b31ad2455b2fe965095f66ae505", + "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1" + }, + "conflict": { + "scrutinizer/ocular": "1.7.*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "commonmark/commonmark.js": "0.29.1", + "erusev/parsedown": "~1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "^1.4", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5", + "scrutinizer/ocular": "^1.5", + "symfony/finder": "^4.2" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "funding": [ + { + "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", + "type": "custom" + }, + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://www.patreon.com/colinodell", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2020-05-04T22:15:21+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.69", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "7106f78428a344bc4f643c233a94e48795f10967" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/7106f78428a344bc4f643c233a94e48795f10967", + "reference": "7106f78428a344bc4f643c233a94e48795f10967", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.26" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2020-05-18T15:13:39+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.19", + "source": { + "type": "git", + "url": "https://github.com/Maatwebsite/Laravel-Excel.git", + "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c", + "reference": "96527a9ebc2e79e9a5fa7eaef7e23c9e9bcc587c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*|^6.0|^7.0", + "php": "^7.0", + "phpoffice/phpspreadsheet": "^1.10" + }, + "require-dev": { + "mockery/mockery": "^1.1", + "orchestra/database": "^4.0", + "orchestra/testbench": "^4.0", + "phpunit/phpunit": "^8.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ], + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + } + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@maatwebsite.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "time": "2020-02-28T15:47:45+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/c4c5803cc1f93df3d2448478ef79394a5981cc58", + "reference": "c4c5803cc1f93df3d2448478ef79394a5981cc58", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "myclabs/php-enum": "^1.5", + "php": ">= 7.1", + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzlehttp/guzzle": ">= 6.3", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": ">= 7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "funding": [ + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2020-05-30T13:11:16+00:00" + }, + { + "name": "markbaker/complex", + "version": "1.4.8", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "8eaa40cceec7bf0518187530b2e63871be661b72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/8eaa40cceec7bf0518187530b2e63871be661b72", + "reference": "8eaa40cceec7bf0518187530b2e63871be661b72", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.6.0|^7.0.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "2.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.35|^5.4.0", + "sebastian/phpcpd": "2.*", + "squizlabs/php_codesniffer": "^3.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + }, + "files": [ + "classes/src/functions/abs.php", + "classes/src/functions/acos.php", + "classes/src/functions/acosh.php", + "classes/src/functions/acot.php", + "classes/src/functions/acoth.php", + "classes/src/functions/acsc.php", + "classes/src/functions/acsch.php", + "classes/src/functions/argument.php", + "classes/src/functions/asec.php", + "classes/src/functions/asech.php", + "classes/src/functions/asin.php", + "classes/src/functions/asinh.php", + "classes/src/functions/atan.php", + "classes/src/functions/atanh.php", + "classes/src/functions/conjugate.php", + "classes/src/functions/cos.php", + "classes/src/functions/cosh.php", + "classes/src/functions/cot.php", + "classes/src/functions/coth.php", + "classes/src/functions/csc.php", + "classes/src/functions/csch.php", + "classes/src/functions/exp.php", + "classes/src/functions/inverse.php", + "classes/src/functions/ln.php", + "classes/src/functions/log2.php", + "classes/src/functions/log10.php", + "classes/src/functions/negative.php", + "classes/src/functions/pow.php", + "classes/src/functions/rho.php", + "classes/src/functions/sec.php", + "classes/src/functions/sech.php", + "classes/src/functions/sin.php", + "classes/src/functions/sinh.php", + "classes/src/functions/sqrt.php", + "classes/src/functions/tan.php", + "classes/src/functions/tanh.php", + "classes/src/functions/theta.php", + "classes/src/operations/add.php", + "classes/src/operations/subtract.php", + "classes/src/operations/multiply.php", + "classes/src/operations/divideby.php", + "classes/src/operations/divideinto.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "time": "2020-03-11T20:15:49+00:00" + }, + { + "name": "markbaker/matrix", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/5348c5a67e3b75cd209d70103f916a93b1f1ed21", + "reference": "5348c5a67e3b75cd209d70103f916a93b1f1ed21", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.6.0|^7.0.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "dev-master", + "phploc/phploc": "^4", + "phpmd/phpmd": "dev-master", + "phpunit/phpunit": "^5.7", + "sebastian/phpcpd": "^3.0", + "squizlabs/php_codesniffer": "^3.0@dev" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + }, + "files": [ + "classes/src/functions/adjoint.php", + "classes/src/functions/antidiagonal.php", + "classes/src/functions/cofactors.php", + "classes/src/functions/determinant.php", + "classes/src/functions/diagonal.php", + "classes/src/functions/identity.php", + "classes/src/functions/inverse.php", + "classes/src/functions/minors.php", + "classes/src/functions/trace.php", + "classes/src/functions/transpose.php", + "classes/src/operations/add.php", + "classes/src/operations/directsum.php", + "classes/src/operations/subtract.php", + "classes/src/operations/multiply.php", + "classes/src/operations/divideby.php", + "classes/src/operations/divideinto.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "time": "2019-10-06T11:29:25+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/38914429aac460e8e4616c8cb486ecb40ec90bb1", + "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <3.0", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-05-22T08:12:19+00:00" + }, + { + "name": "myclabs/php-enum", + "version": "1.7.6", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "5f36467c7a87e20fbdc51e524fd8f9d1de80187c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/5f36467c7a87e20fbdc51e524fd8f9d1de80187c", + "reference": "5f36467c7a87e20fbdc51e524fd8f9d1de80187c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^3.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "time": "2020-02-14T08:15:52+00:00" + }, + { + "name": "namshi/jose", + "version": "7.2.3", + "source": { + "type": "git", + "url": "https://github.com/namshi/jose.git", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", + "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-date": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-spl": "*", + "php": ">=5.5", + "symfony/polyfill-php56": "^1.0" + }, + "require-dev": { + "phpseclib/phpseclib": "^2.0", + "phpunit/phpunit": "^4.5|^5.0", + "satooshi/php-coveralls": "^1.0" + }, + "suggest": { + "ext-openssl": "Allows to use OpenSSL as crypto engine.", + "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." + }, + "type": "library", + "autoload": { + "psr-4": { + "Namshi\\JOSE\\": "src/Namshi/JOSE/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Nadalin", + "email": "alessandro.nadalin@gmail.com" + }, + { + "name": "Alessandro Cinelli (cirpo)", + "email": "alessandro.cinelli@gmail.com" + } + ], + "description": "JSON Object Signing and Encryption library for PHP.", + "keywords": [ + "JSON Web Signature", + "JSON Web Token", + "JWS", + "json", + "jwt", + "token" + ], + "time": "2016-12-05T07:27:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.35.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "4b9bd835261ef23d36397a46a76b496a458305e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4b9bd835261ef23d36397a46a76b496a458305e5", + "reference": "4b9bd835261ef23d36397a46a76b496a458305e5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" + }, + "require-dev": { + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.8", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "funding": [ + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2020-05-24T18:27:52+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.5.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/53c2753d756f5adb586dca79c2ec0e2654dd9463", + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "0.0.5", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2020-06-03T07:24:19+00:00" + }, + { + "name": "opis/closure", + "version": "3.5.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/cac47092144043d5d676e2e7cf8d0d2f83fc89ca", + "reference": "cac47092144043d5d676e2e7cf8d0d2f83fc89ca", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "time": "2020-05-25T09:32:45+00:00" + }, + { + "name": "overtrue/easy-sms", + "version": "1.1.23", + "source": { + "type": "git", + "url": "https://github.com/overtrue/easy-sms.git", + "reference": "90b1303f5fe23e5ba12d44755cfbbf78eb125c6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/easy-sms/zipball/90b1303f5fe23e5ba12d44755cfbbf78eb125c6a", + "reference": "90b1303f5fe23e5ba12d44755cfbbf78eb125c6a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.2", + "php": ">=5.6" + }, + "require-dev": { + "mockery/mockery": "1.3.1", + "phpunit/phpunit": "^5.7 || ^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Overtrue\\EasySms\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "i@overtrue.me" + } + ], + "description": "The easiest way to send short message.", + "time": "2020-05-06T08:09:01+00:00" + }, + { + "name": "pclzip/pclzip", + "version": "2.8.2", + "source": { + "type": "git", + "url": "https://github.com/ivanlanin/pclzip.git", + "reference": "19dd1de9d3f5fc4d7d70175b4c344dee329f45fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ivanlanin/pclzip/zipball/19dd1de9d3f5fc4d7d70175b4c344dee329f45fd", + "reference": "19dd1de9d3f5fc4d7d70175b4c344dee329f45fd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "type": "library", + "autoload": { + "classmap": [ + "pclzip.lib.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Vincent Blavet" + } + ], + "description": "A PHP library that offers compression and extraction functions for Zip formatted archives", + "homepage": "http://www.phpconcept.net/pclzip", + "keywords": [ + "php", + "zip" + ], + "time": "2014-06-05T11:42:24+00:00" + }, + { + "name": "phpoffice/common", + "version": "0.2.9", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/Common.git", + "reference": "edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/Common/zipball/edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d", + "reference": "edb5d32b1e3400a35a5c91e2539ed6f6ce925e4d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "pclzip/pclzip": "^2.8", + "php": ">=5.3.0" + }, + "require-dev": { + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "2.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.36 || ^7.0", + "sebastian/phpcpd": "2.*", + "squizlabs/php_codesniffer": "2.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\Common\\": "src/Common/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Mark Baker" + }, + { + "name": "Franck Lefevre", + "homepage": "http://rootslabs.net" + } + ], + "description": "PHPOffice Common", + "homepage": "http://phpoffice.github.io", + "keywords": [ + "common", + "component", + "office", + "php" + ], + "time": "2018-07-13T14:12:34+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1", + "reference": "21bfb5b3243b8ceb9eda499a4d699fc42c11a9d1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "maennchen/zipstream-php": "^2.0", + "markbaker/complex": "^1.4", + "markbaker/matrix": "^1.2", + "php": "^7.2", + "psr/simple-cache": "^1.0" + }, + "require-dev": { + "dompdf/dompdf": "^0.8.5", + "friendsofphp/php-cs-fixer": "^2.16", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "^8.0", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^8.5", + "squizlabs/php_codesniffer": "^3.5", + "tecnickcom/tcpdf": "^6.3" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "time": "2020-05-31T13:49:28+00:00" + }, + { + "name": "phpoffice/phpword", + "version": "0.17.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PHPWord.git", + "reference": "b8346af548d399acd9e30fc76ab0c55c2fec03a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/b8346af548d399acd9e30fc76ab0c55c2fec03a5", + "reference": "b8346af548d399acd9e30fc76ab0c55c2fec03a5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-xml": "*", + "php": "^5.3.3 || ^7.0", + "phpoffice/common": "^0.2.9", + "zendframework/zend-escaper": "^2.2" + }, + "require-dev": { + "dompdf/dompdf": "0.8.*", + "ext-gd": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^2.2", + "mpdf/mpdf": "5.7.4 || 6.* || 7.*", + "php-coveralls/php-coveralls": "1.1.0 || ^2.0", + "phploc/phploc": "2.* || 3.* || 4.*", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^4.8.36 || ^7.0", + "squizlabs/php_codesniffer": "^2.9", + "tecnickcom/tcpdf": "6.*" + }, + "suggest": { + "dompdf/dompdf": "Allows writing PDF", + "ext-gd2": "Allows adding images", + "ext-xmlwriter": "Allows writing OOXML and ODF", + "ext-xsl": "Allows applying XSL style sheet to headers, to main document part, and to footers of an OOXML template", + "ext-zip": "Allows writing OOXML and ODF" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.18-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOffice\\PhpWord\\": "src/PhpWord" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0" + ], + "authors": [ + { + "name": "Mark Baker" + }, + { + "name": "Gabriel Bull", + "email": "me@gabrielbull.com", + "homepage": "http://gabrielbull.com/" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net/blog/" + }, + { + "name": "Ivan Lanin", + "homepage": "http://ivan.lanin.org" + }, + { + "name": "Roman Syroeshko", + "homepage": "http://ru.linkedin.com/pub/roman-syroeshko/34/a53/994/" + }, + { + "name": "Antoine de Troostembergh" + } + ], + "description": "PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)", + "homepage": "http://phpoffice.github.io", + "keywords": [ + "ISO IEC 29500", + "OOXML", + "Office Open XML", + "OpenDocument", + "OpenXML", + "PhpOffice", + "PhpWord", + "Rich Text Format", + "WordprocessingML", + "doc", + "docx", + "html", + "odf", + "odt", + "office", + "pdf", + "php", + "reader", + "rtf", + "template", + "template processor", + "word", + "writer" + ], + "time": "2019-10-01T20:43:33+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2020-03-21T18:07:53+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.10.4", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "dnoegel/php-xdg-base-dir": "0.1.*", + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "3.17.*" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.10.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2020-05-03T19:32:03+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "fzaninotto/faker": "^1.5", + "jakub-onderka/php-parallel-lint": "^1", + "jangregor/phpstan-prophecy": "^0.6", + "mockery/mockery": "^1.3", + "phpstan/extension-installer": "^1", + "phpstan/phpdoc-parser": "0.4.1", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP 7.2+ library for representing and manipulating collections.", + "homepage": "https://github.com/ramsey/collection", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "time": "2020-01-05T00:22:59+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "brick/math": "^0.8", + "ext-json": "*", + "php": "^7.2 || ^8", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "codeception/aspect-mock": "^3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", + "doctrine/annotations": "^1.8", + "goaop/framework": "^2", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock-mockery": "^1.3", + "php-mock/php-mock-phpunit": "^2.5", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpdoc-parser": "0.4.3", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "psy/psysh": "^0.10.0", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "3.9.4" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "homepage": "https://github.com/ramsey/uuid", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "time": "2020-03-29T20:13:32+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.2.3", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2019-11-12T09:31:26+00:00" + }, + { + "name": "symfony/console", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "00bed125812716d09b163f0727ef33bb49bf3448" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/00bed125812716d09b163f0727ef33bb49bf3448", + "reference": "00bed125812716d09b163f0727ef33bb49bf3448", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e544e24472d4c97b2d11ade7caacd446727c6bf9", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337", + "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-27T08:34:37+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "907187782c465a564f9030a0c6ace59e8821106f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/907187782c465a564f9030a0c6ace59e8821106f", + "reference": "907187782c465a564f9030a0c6ace59e8821106f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-23T13:08:13+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896", + "reference": "7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ErrorHandler Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/cc0d059e2e997e79ca34125a52f3e33de4424ac7", + "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^4.4|^5.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "405952c4e90941a17e52ef7489a2bd94870bb290" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/405952c4e90941a17e52ef7489a2bd94870bb290", + "reference": "405952c4e90941a17e52ef7489a2bd94870bb290", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "e0d853bddc2b2cfb0d67b0b4496c03fffe1d37fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0d853bddc2b2cfb0d67b0b4496c03fffe1d37fa", + "reference": "e0d853bddc2b2cfb0d67b0b4496c03fffe1d37fa", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.15" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-24T12:18:07+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "75ff5327a7d6ede3ccc2fac3ebca9ed776b3e85c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/75ff5327a7d6ede3ccc2fac3ebca9ed776b3e85c", + "reference": "75ff5327a7d6ede3ccc2fac3ebca9ed776b3e85c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-31T06:14:18+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "56261f89385f9d13cf843a5101ac72131190bc91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/56261f89385f9d13cf843a5101ac72131190bc91", + "reference": "56261f89385f9d13cf843a5101ac72131190bc91", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-25T12:33:44+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c4de7601eefbf25f9d47190abe07f79fe0a27424", + "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e094b0770f7833fdf257e6ba4775be4e258230b2", + "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/1357b1d168eb7f68ad6a134838e46b0b159444a9", + "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "e3c8c138280cdfe4b81488441555583aa1984e23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e3c8c138280cdfe4b81488441555583aa1984e23", + "reference": "e3c8c138280cdfe4b81488441555583aa1984e23", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "f048e612a3905f34931127360bdd2def19a5e582" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", + "reference": "f048e612a3905f34931127360bdd2def19a5e582", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd", + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4afb4110fc037752cf0ce9869f9ab8162c4e20d7", + "reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "symfony/process", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1", + "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "95cf30145b26c758d6d832aa2d0de3128978d556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/95cf30145b26c758d6d832aa2d0de3128978d556", + "reference": "95cf30145b26c758d6d832aa2d0de3128978d556", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "~1.2", + "psr/log": "~1.0", + "symfony/config": "^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/66a8f0957a3ca54e4f724e49028ab19d75a8918b", + "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/string", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "90c2a5103f07feb19069379f3abdcdbacc7753a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/90c2a5103f07feb19069379f3abdcdbacc7753a9", + "reference": "90c2a5103f07feb19069379f3abdcdbacc7753a9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", + "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e5ca07c8f817f865f618aa072c2fe8e0e637340e", + "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "46a942903059b0b05e601f00eb64179e05578c0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46a942903059b0b05e601f00eb64179e05578c0f", + "reference": "46a942903059b0b05e601f00eb64179e05578c0f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-30T20:35:19+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "time": "2019-10-24T08:53:34+00:00" + }, + { + "name": "tymon/jwt-auth", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/tymondesigns/jwt-auth.git", + "reference": "d4cf9fd2b98790712d3e6cd1094e5ff018431f19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/d4cf9fd2b98790712d3e6cd1094e5ff018431f19", + "reference": "d4cf9fd2b98790712d3e6cd1094e5ff018431f19", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/auth": "^5.2|^6|^7", + "illuminate/contracts": "^5.2|^6|^7", + "illuminate/http": "^5.2|^6|^7", + "illuminate/support": "^5.2|^6|^7", + "lcobucci/jwt": "^3.2", + "namshi/jose": "^7.0", + "nesbot/carbon": "^1.0|^2.0", + "php": "^5.5.9|^7.0" + }, + "require-dev": { + "illuminate/console": "^5.2|^6|^7", + "illuminate/database": "^5.2|^6|^7", + "illuminate/routing": "^5.2|^6|^7", + "mockery/mockery": ">=0.9.9", + "phpunit/phpunit": "~4.8|~6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "1.0-dev" + }, + "laravel": { + "aliases": { + "JWTAuth": "Tymon\\JWTAuth\\Facades\\JWTAuth", + "JWTFactory": "Tymon\\JWTAuth\\Facades\\JWTFactory" + }, + "providers": [ + "Tymon\\JWTAuth\\Providers\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Tymon\\JWTAuth\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sean Tymon", + "email": "tymon148@gmail.com", + "homepage": "https://tymon.xyz", + "role": "Developer" + } + ], + "description": "JSON Web Token Authentication for Laravel and Lumen", + "homepage": "https://github.com/tymondesigns/jwt-auth", + "keywords": [ + "Authentication", + "JSON Web Token", + "auth", + "jwt", + "laravel" + ], + "time": "2020-03-04T11:21:28+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v4.1.6", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "0b32505d67c1abbfa829283c86bfc0642a661bf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/0b32505d67c1abbfa829283c86bfc0642a661bf6", + "reference": "0b32505d67c1abbfa829283c86bfc0642a661bf6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.7.2", + "symfony/polyfill-ctype": "^1.9" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "ext-filter": "*", + "ext-pcre": "*", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://vancelucas.com/" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2020-05-23T09:43:32+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "e7f9bd5deff09a57318f9b900ab33a05acfcf4d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/e7f9bd5deff09a57318f9b900ab33a05acfcf4d3", + "reference": "e7f9bd5deff09a57318f9b900ab33a05acfcf4d3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2020-05-26T06:40:44+00:00" + }, + { + "name": "zendframework/zend-escaper", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-escaper.git", + "reference": "3801caa21b0ca6aca57fa1c42b08d35c395ebd5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/3801caa21b0ca6aca57fa1c42b08d35c395ebd5f", + "reference": "3801caa21b0ca6aca57fa1c42b08d35c395ebd5f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "keywords": [ + "ZendFramework", + "escaper", + "zf" + ], + "abandoned": "laminas/laminas-escaper", + "time": "2019-09-05T20:03:20+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-05-29T17:27:14+00:00" + }, + { + "name": "facade/flare-client-php", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/db1e03426e7f9472c9ecd1092aff00f56aa6c004", + "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0", + "php": "^7.1", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "larapack/dd": "^1.1", + "phpunit/phpunit": "^7.5.16", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Facade\\FlareClient\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "time": "2020-03-02T15:52:04+00:00" + }, + { + "name": "facade/ignition", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "5261c488a1e8a7c3ebdf6a4037c34f5ddeb33922" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/5261c488a1e8a7c3ebdf6a4037c34f5ddeb33922", + "reference": "5261c488a1e8a7c3ebdf6a4037c34f5ddeb33922", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.0", + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.4", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5", + "scrivo/highlight.php": "^9.15", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "mockery/mockery": "^1.3", + "orchestra/testbench": "5.0" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "psr-4": { + "Facade\\Ignition\\": "src" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "time": "2020-06-01T09:04:48+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "f445db0fb86f48e205787b2592840dd9c80ded28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/f445db0fb86f48e205787b2592840dd9c80ded28", + "reference": "f445db0fb86f48e205787b2592840dd9c80ded28", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "time": "2019-08-30T14:06:08+00:00" + }, + { + "name": "filp/whoops", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a", + "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0", + "psr/log": "^1.0.1" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "time": "2020-05-05T12:28:07+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.9.1", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^2.9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2019-12-12T13:22:17+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3|^7.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2016-01-20T08:20:44+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "6c6a7c533469873deacf998237e7649fc6b36223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/6c6a7c533469873deacf998237e7649fc6b36223", + "reference": "6c6a7c533469873deacf998237e7649fc6b36223", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "hamcrest/hamcrest-php": "~2.0", + "lib-pcre": ">=7.0", + "php": "^7.3.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0.0 || ^9.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2020-05-19T14:25:16+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2020-01-17T21:11:47+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "d50490417eded97be300a92cd7df7badc37a9018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/d50490417eded97be300a92cd7df7badc37a9018", + "reference": "d50490417eded97be300a92cd7df7badc37a9018", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.4", + "php": "^7.2.5", + "symfony/console": "^5.0" + }, + "require-dev": { + "facade/ignition": "^2.0", + "fideloper/proxy": "^4.2", + "friendsofphp/php-cs-fixer": "^2.16", + "fruitcake/laravel-cors": "^1.0", + "laravel/framework": "^7.0", + "laravel/tinker": "^2.0", + "nunomaduro/larastan": "^0.5", + "orchestra/testbench": "^5.0", + "phpstan/phpstan": "^0.12.3", + "phpunit/phpunit": "^8.5.1 || ^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "time": "2020-04-04T19:56:08+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2020-04-27T09:25:28+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" + }, + "require-dev": { + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2020-02-22T12:28:44+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-02-18T18:59:58+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.10.3", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2020-03-05T15:02:03+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "7.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.1.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^4.2.2", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.2.2" + }, + "suggest": { + "ext-xdebug": "^2.7.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2019-11-20T13:55:58+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-06-07T04:22:29+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2019-09-17T06:23:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "8.5.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "63dda3b212a0025d380a745f91bdb4d8c985adb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/63dda3b212a0025d380a745f91bdb4d8c985adb7", + "reference": "63dda3b212a0025d380a745f91bdb4d8c985adb7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/instantiator": "^1.2.0", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", + "sebastian/version": "^2.0.1" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-05-22T13:51:52+00:00" + }, + { + "name": "scrivo/highlight.php", + "version": "v9.18.1.1", + "source": { + "type": "git", + "url": "https://github.com/scrivo/highlight.php.git", + "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/52fc21c99fd888e33aed4879e55a3646f8d40558", + "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7", + "sabberworm/php-css-parser": "^8.3", + "symfony/finder": "^2.8|^3.4", + "symfony/var-dumper": "^2.8|^3.4" + }, + "suggest": { + "ext-dom": "Needed to make use of the features in the utilities namespace" + }, + "type": "library", + "autoload": { + "psr-0": { + "Highlight\\": "", + "HighlightUtilities\\": "" + }, + "files": [ + "HighlightUtilities/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Geert Bergman", + "homepage": "http://www.scrivo.org/", + "role": "Project Author" + }, + { + "name": "Vladimir Jimenez", + "homepage": "https://allejo.io", + "role": "Maintainer" + }, + { + "name": "Martin Folkers", + "homepage": "https://twobrain.io", + "role": "Contributor" + } + ], + "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js", + "keywords": [ + "code", + "highlight", + "highlight.js", + "highlight.php", + "syntax" + ], + "time": "2020-03-02T05:59:21+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-11-20T08:46:58+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2019-09-14T09:02:43+00:00" + }, + { + "name": "sebastian/global-state", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^8.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2019-02-01T05:30:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-04-18T12:12:48+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^7.2.5" + }, + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/config/admin.php b/config/admin.php new file mode 100644 index 0000000..50fd147 --- /dev/null +++ b/config/admin.php @@ -0,0 +1,409 @@ + '投票选举', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin logo + |-------------------------------------------------------------------------- + | + | The logo of all admin pages. You can also set it as an image by using a + | `img` tag, eg 'Admin logo'. + | + */ + 'logo' => 'Laravel admin', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin mini logo + |-------------------------------------------------------------------------- + | + | The logo of all admin pages when the sidebar menu is collapsed. You can + | also set it as an image by using a `img` tag, eg + | 'Admin logo'. + | + */ + 'logo-mini' => 'La', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin bootstrap setting + |-------------------------------------------------------------------------- + | + | This value is the path of laravel-admin bootstrap file. + | + */ + 'bootstrap' => app_path('Admin/bootstrap.php'), + + /* + |-------------------------------------------------------------------------- + | Laravel-admin route settings + |-------------------------------------------------------------------------- + | + | The routing configuration of the admin page, including the path prefix, + | the controller namespace, and the default middleware. If you want to + | access through the root path, just set the prefix to empty string. + | + */ + 'route' => [ + + 'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'), + + 'namespace' => 'App\\Admin\\Controllers', + + 'middleware' => ['web', 'admin'], + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin install directory + |-------------------------------------------------------------------------- + | + | The installation directory of the controller and routing configuration + | files of the administration page. The default is `app/Admin`, which must + | be set before running `artisan admin::install` to take effect. + | + */ + 'directory' => app_path('Admin'), + + /* + |-------------------------------------------------------------------------- + | Laravel-admin html title + |-------------------------------------------------------------------------- + | + | Html title for all pages. + | + */ + 'title' => 'Admin', + + /* + |-------------------------------------------------------------------------- + | Access via `https` + |-------------------------------------------------------------------------- + | + | If your page is going to be accessed via https, set it to `true`. + | + */ + 'https' => env('ADMIN_HTTPS', false), + + /* + |-------------------------------------------------------------------------- + | Laravel-admin auth setting + |-------------------------------------------------------------------------- + | + | Authentication settings for all admin pages. Include an authentication + | guard and a user provider setting of authentication driver. + | + | You can specify a controller for `login` `logout` and other auth routes. + | + */ + 'auth' => [ + + 'controller' => App\Admin\Controllers\AuthController::class, + + 'guard' => 'admin', + + 'guards' => [ + 'admin' => [ + 'driver' => 'session', + 'provider' => 'admin', + ], + ], + + 'providers' => [ + 'admin' => [ + 'driver' => 'eloquent', + 'model' => Encore\Admin\Auth\Database\Administrator::class, + ], + ], + + // Add "remember me" to login form + 'remember' => true, + + // Redirect to the specified URI when user is not authorized. + 'redirect_to' => 'auth/login', + + // The URIs that should be excluded from authorization. + 'excepts' => [ + 'auth/login', + 'auth/logout', + '_handle_action_', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin upload setting + |-------------------------------------------------------------------------- + | + | File system configuration for form upload files and images, including + | disk and upload path. + | + */ + 'upload' => [ + + // Disk in `config/filesystem.php`. + 'disk' => 'public', + + // Image and file upload path under the disk above. + 'directory' => [ + 'image' => 'images', + 'file' => 'files', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin database settings + |-------------------------------------------------------------------------- + | + | Here are database settings for laravel-admin builtin model & tables. + | + */ + 'database' => [ + + // Database connection for following tables. + 'connection' => '', + + // User tables and model. + 'users_table' => 'admin_users', + 'users_model' => Encore\Admin\Auth\Database\Administrator::class, + + // Role table and model. + 'roles_table' => 'admin_roles', + 'roles_model' => Encore\Admin\Auth\Database\Role::class, + + // Permission table and model. + 'permissions_table' => 'admin_permissions', + 'permissions_model' => Encore\Admin\Auth\Database\Permission::class, + + // Menu table and model. + 'menu_table' => 'admin_menu', + 'menu_model' => Encore\Admin\Auth\Database\Menu::class, + + // Pivot table for table above. + 'operation_log_table' => 'admin_operation_log', + 'user_permissions_table' => 'admin_user_permissions', + 'role_users_table' => 'admin_role_users', + 'role_permissions_table' => 'admin_role_permissions', + 'role_menu_table' => 'admin_role_menu', + ], + + /* + |-------------------------------------------------------------------------- + | User operation log setting + |-------------------------------------------------------------------------- + | + | By setting this option to open or close operation log in laravel-admin. + | + */ + 'operation_log' => [ + + 'enable' => true, + + /* + * Only logging allowed methods in the list + */ + 'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'], + + /* + * Routes that will not log to database. + * + * All method to path like: admin/auth/logs + * or specific method to path like: get:admin/auth/logs. + */ + 'except' => [ + 'admin/auth/logs*', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Indicates whether to check route permission. + |-------------------------------------------------------------------------- + */ + 'check_route_permission' => true, + + /* + |-------------------------------------------------------------------------- + | Indicates whether to check menu roles. + |-------------------------------------------------------------------------- + */ + 'check_menu_roles' => true, + + /* + |-------------------------------------------------------------------------- + | User default avatar + |-------------------------------------------------------------------------- + | + | Set a default avatar for newly created users. + | + */ + 'default_avatar' => '/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg', + + /* + |-------------------------------------------------------------------------- + | Admin map field provider + |-------------------------------------------------------------------------- + | + | Supported: "tencent", "google", "yandex". + | + */ + 'map_provider' => 'google', + + /* + |-------------------------------------------------------------------------- + | Application Skin + |-------------------------------------------------------------------------- + | + | This value is the skin of admin pages. + | @see https://adminlte.io/docs/2.4/layout + | + | Supported: + | "skin-blue", "skin-blue-light", "skin-yellow", "skin-yellow-light", + | "skin-green", "skin-green-light", "skin-purple", "skin-purple-light", + | "skin-red", "skin-red-light", "skin-black", "skin-black-light". + | + */ + 'skin' => 'skin-blue', + + /* + |-------------------------------------------------------------------------- + | Application layout + |-------------------------------------------------------------------------- + | + | This value is the layout of admin pages. + | @see https://adminlte.io/docs/2.4/layout + | + | Supported: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse", + | "sidebar-mini". + | + */ + 'layout' => ['fixed', 'sidebar-mini'], + + /* + |-------------------------------------------------------------------------- + | Login page background image + |-------------------------------------------------------------------------- + | + | This value is used to set the background image of login page. + | + */ + 'login_background_image' => '', + + /* + |-------------------------------------------------------------------------- + | Show version at footer + |-------------------------------------------------------------------------- + | + | Whether to display the version number of laravel-admin at the footer of + | each page + | + */ + 'show_version' => true, + + /* + |-------------------------------------------------------------------------- + | Show environment at footer + |-------------------------------------------------------------------------- + | + | Whether to display the environment at the footer of each page + | + */ + 'show_environment' => true, + + /* + |-------------------------------------------------------------------------- + | Menu bind to permission + |-------------------------------------------------------------------------- + | + | whether enable menu bind to a permission + */ + 'menu_bind_permission' => true, + + /* + |-------------------------------------------------------------------------- + | Enable default breadcrumb + |-------------------------------------------------------------------------- + | + | Whether enable default breadcrumb for every page content. + */ + 'enable_default_breadcrumb' => true, + + /* + |-------------------------------------------------------------------------- + | Enable/Disable assets minify + |-------------------------------------------------------------------------- + */ + 'minify_assets' => [ + + // Assets will not be minified. + 'excepts' => [ + + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Enable/Disable sidebar menu search + |-------------------------------------------------------------------------- + */ + 'enable_menu_search' => true, + + /* + |-------------------------------------------------------------------------- + | Alert message that will displayed on top of the page. + |-------------------------------------------------------------------------- + */ + 'top_alert' => '', + + /* + |-------------------------------------------------------------------------- + | The global Grid action display class. + |-------------------------------------------------------------------------- + */ + 'grid_action_class' => \Encore\Admin\Grid\Displayers\DropdownActions::class, + + /* + |-------------------------------------------------------------------------- + | Extension Directory + |-------------------------------------------------------------------------- + | + | When you use command `php artisan admin:extend` to generate extensions, + | the extension files will be generated in this directory. + */ + 'extension_dir' => app_path('Admin/Extensions'), + + /* + |-------------------------------------------------------------------------- + | Settings for extensions. + |-------------------------------------------------------------------------- + | + | You can find all available extensions here + | https://github.com/laravel-admin-extensions. + | + */ + 'extensions' => [ + 'ueditor' => [ + // 如果要关掉这个扩展,设置为false + 'enable' => true, + // 编辑器的前端配置 参考:http://fex.baidu.com/ueditor/#start-config + 'config' => [ + 'initialFrameHeight' => 400, // 例如初始化高度 + ], + 'field_type' => 'ueditor', + ], + ], +]; diff --git a/config/api.php b/config/api.php new file mode 100644 index 0000000..8fe57ff --- /dev/null +++ b/config/api.php @@ -0,0 +1,25 @@ + [ + 'driver' => 'jwt', + 'provider' => 'users', + 'hash' => false, + ], + + 'route' => [ + + 'domain' => env('API_ROUTE_DOMAIN', ''), + + 'prefix' => env('API_ROUTE_PREFIX', 'api'), + + 'namespace' => 'App\\Api\\Controllers', + + 'middleware' => ['api'], + + 'middleware_auth' => ['api', 'token.auth'], + ], + + 'directory' => app_path('Api'), +]; diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..a29667c --- /dev/null +++ b/config/app.php @@ -0,0 +1,232 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'PRC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'zh-CN', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..beeab9a --- /dev/null +++ b/config/auth.php @@ -0,0 +1,117 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'jwt', + 'provider' => 'users', + 'hash' => false, + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..3bba110 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,59 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..4f41fdf --- /dev/null +++ b/config/cache.php @@ -0,0 +1,104 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..558369d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..b42d9b3 --- /dev/null +++ b/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..94c8112 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,85 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Default Cloud Filesystem Disk + |-------------------------------------------------------------------------- + | + | Many applications store files both locally and in the cloud. For this + | reason, you may specify a default "cloud" driver here. This driver + | will be bound as the Cloud disk implementation in the container. + | + */ + + 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..8425770 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/jwt.php b/config/jwt.php new file mode 100644 index 0000000..8b7843b --- /dev/null +++ b/config/jwt.php @@ -0,0 +1,304 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Secret + |-------------------------------------------------------------------------- + | + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). + | + */ + + 'secret' => env('JWT_SECRET'), + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + + /* + |-------------------------------------------------------------------------- + | JWT time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token will be valid for. + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | Notice: If you set this to null you should remove 'exp' element from 'required_claims' list. + | + */ + + 'ttl' => env('JWT_TTL', 60), + + /* + |-------------------------------------------------------------------------- + | Refresh time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token can be refreshed + | within. I.E. The user can refresh their token within a 2 week window of + | the original token being created until they must re-authenticate. + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), + + /* + |-------------------------------------------------------------------------- + | JWT hashing algorithm + |-------------------------------------------------------------------------- + | + | Specify the hashing algorithm that will be used to sign the token. + | + | See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL + | for possible values. + | + */ + + 'algo' => env('JWT_ALGO', 'HS256'), + + /* + |-------------------------------------------------------------------------- + | Required Claims + |-------------------------------------------------------------------------- + | + | Specify the required claims that must exist in any token. + | A TokenInvalidException will be thrown if any of these claims are not + | present in the payload. + | + */ + + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), + + /* + |-------------------------------------------------------------------------- + | Blacklist Enabled + |-------------------------------------------------------------------------- + | + | In order to invalidate tokens, you must have the blacklist enabled. + | If you do not want or need this functionality, then set this to false. + | + */ + + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + + /* + |-------------------------------------------------------------------------- + | Providers + |-------------------------------------------------------------------------- + | + | Specify the various providers used throughout the package. + | + */ + + 'providers' => [ + + /* + |-------------------------------------------------------------------------- + | JWT Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to create and decode the tokens. + | + */ + + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to authenticate users. + | + */ + + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, + + /* + |-------------------------------------------------------------------------- + | Storage Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to store tokens in the blacklist. + | + */ + + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, + + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..088c204 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,104 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => 'debug', + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => 'critical', + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => 'debug', + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => 'debug', + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => 'debug', + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..5201bb7 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,109 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => '/usr/sbin/sendmail -bs', + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..00b76d6 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,89 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..2a1d616 --- /dev/null +++ b/config/services.php @@ -0,0 +1,33 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..da692f3 --- /dev/null +++ b/config/session.php @@ -0,0 +1,199 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION', null), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using the "apc", "memcached", or "dynamodb" session drivers you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + */ + + 'store' => env('SESSION_STORE', null), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/sms.php b/config/sms.php new file mode 100644 index 0000000..e55c6a3 --- /dev/null +++ b/config/sms.php @@ -0,0 +1,61 @@ + false, + + // 调试模式发送的验证码 + 'debug_code' => '0000', + + // HTTP 请求的超时时间(秒) + 'timeout' => 5.0, + + // 默认发送配置 + 'default' => [ + // 网关调用策略,默认:顺序调用 + 'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class, + // 默认可用的发送网关 + 'gateways' => [ + 'aliyun', + ], + ], + + // 验证码长度 + 'length' => 4, + + // 验证后立即失效 + 'once_used' => true, + + // 模板与通道映射 + 'template' => [ + 'DEFAULT' => 'SMS_176560077', + 'LOGIN' => '', + 'REGISTER' => '', + ], + + // 可用的网关配置 + 'gateways' => [ + 'errorlog' => [ + 'file' => storage_path('logs/easy-sms.log'), + ], + // 阿里云 AccessKeyID: + 'aliyun' => [ + 'access_key_id' => 'LTAI4GJYDnxB9ykX3R5BpsWp', + 'access_key_secret' => 'OyJXMhXZfAWyUudw1SPb1U5kyHBqM2', + 'sign_name' => '域展科技', + ], + // 阿里云Rest + 'aliyunrest' => [ + 'app_key' => '', + 'app_secret_key' => '', + 'sign_name' => '', + ], + // 云片 + 'yunpian' => [ + 'api_key' => '', + 'signature' => '', + ], + // ... 具体参数请参考 https://github.com/overtrue/easy-sms/blob/master/README.md + ], +]; diff --git a/config/ueditor.php b/config/ueditor.php new file mode 100644 index 0000000..8411b9c --- /dev/null +++ b/config/ueditor.php @@ -0,0 +1,116 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +return [ + // 存储引擎: config/filesystem.php 中 disks, public 或 qiniu + 'disk' => 'public', + 'route' => [ + 'name' => '/ueditor/server', + 'options' => [ + // middleware => 'auth', + ], + ], + + // 上传 配置 + 'upload' => [ + /* 前后端通信相关的配置,注释只允许使用多行方式 */ + /* 上传图片配置项 */ + 'imageActionName' => 'upload-image', /* 执行上传图片的action名称 */ + 'imageFieldName' => 'upfile', /* 提交的图片表单名称 */ + 'imageMaxSize' => 2 * 1024 * 1024, /* 上传大小限制,单位B */ + 'imageAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 上传图片格式显示 */ + 'imageCompressEnable' => true, /* 是否压缩图片,默认是true */ + 'imageCompressBorder' => 1600, /* 图片压缩最长边限制 */ + 'imageInsertAlign' => 'none', /* 插入的图片浮动方式 */ + 'imageUrlPrefix' => '', /* 图片访问路径前缀 */ + 'imagePathFormat' => '/uploads/image/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ + /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ => * ? " < > | */ + /* 具请体看线上文档 => fex.baidu.com/assets/#use-format_upload_filename */ + + /* 涂鸦图片上传配置项 */ + 'scrawlActionName' => 'upload-scrawl', /* 执行上传涂鸦的action名称 */ + 'scrawlFieldName' => 'upfile', /* 提交的图片表单名称 */ + 'scrawlPathFormat' => '/uploads/image/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'scrawlMaxSize' => 2048000, /* 上传大小限制,单位B */ + 'scrawlUrlPrefix' => '', /* 图片访问路径前缀 */ + 'scrawlInsertAlign' => 'none', + + /* 截图工具上传 */ + 'snapscreenActionName' => 'upload-image', /* 执行上传截图的action名称 */ + 'snapscreenPathFormat' => '/uploads/image/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'snapscreenUrlPrefix' => '', /* 图片访问路径前缀 */ + 'snapscreenInsertAlign' => 'none', /* 插入的图片浮动方式 */ + + /* 抓取远程图片配置 */ + 'catcherLocalDomain' => ['127.0.0.1', 'localhost', 'img.baidu.com'], + 'catcherActionName' => 'catch-image', /* 执行抓取远程图片的action名称 */ + 'catcherFieldName' => 'source', /* 提交的图片列表表单名称 */ + 'catcherPathFormat' => '/uploads/image/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'catcherUrlPrefix' => '', /* 图片访问路径前缀 */ + 'catcherMaxSize' => 2048000, /* 上传大小限制,单位B */ + 'catcherAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 抓取图片格式显示 */ + + /* 上传视频配置 */ + 'videoActionName' => 'upload-video', /* 执行上传视频的action名称 */ + 'videoFieldName' => 'upfile', /* 提交的视频表单名称 */ + 'videoPathFormat' => '/uploads/video/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'videoUrlPrefix' => '', /* 视频访问路径前缀 */ + 'videoMaxSize' => 102400000, /* 上传大小限制,单位B,默认100MB */ + 'videoAllowFiles' => [ + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', ], /* 上传视频格式显示 */ + + /* 上传文件配置 */ + 'fileActionName' => 'upload-file', /* controller里,执行上传视频的action名称 */ + 'fileFieldName' => 'upfile', /* 提交的文件表单名称 */ + 'filePathFormat' => '/uploads/file/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'fileUrlPrefix' => '', /* 文件访问路径前缀 */ + 'fileMaxSize' => 51200000, /* 上传大小限制,单位B,默认50MB */ + 'fileAllowFiles' => [ + '.png', '.jpg', '.jpeg', '.gif', '.bmp', + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', + '.rar', '.zip', '.tar', '.gz', '.7z', '.bz2', '.cab', '.iso', + '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.txt', '.md', '.xml', + ], /* 上传文件格式显示 */ + + /* 列出指定目录下的图片 */ + 'imageManagerActionName' => 'list-image', /* 执行图片管理的action名称 */ + 'imageManagerListPath' => '/uploads/image/', /* 指定要列出图片的目录 */ + 'imageManagerListSize' => 20, /* 每次列出文件数量 */ + 'imageManagerUrlPrefix' => '', /* 图片访问路径前缀 */ + 'imageManagerInsertAlign' => 'none', /* 插入的图片浮动方式 */ + 'imageManagerAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 列出的文件类型 */ + + /* 列出指定目录下的文件 */ + 'fileManagerActionName' => 'list-file', /* 执行文件管理的action名称 */ + 'fileManagerListPath' => '/uploads/file/', /* 指定要列出文件的目录 */ + 'fileManagerUrlPrefix' => '', /* 文件访问路径前缀 */ + 'fileManagerListSize' => 20, /* 每次列出文件数量 */ + 'fileManagerAllowFiles' => [ + '.png', '.jpg', '.jpeg', '.gif', '.bmp', + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', + '.rar', '.zip', '.tar', '.gz', '.7z', '.bz2', '.cab', '.iso', + '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.txt', '.md', '.xml', + ], /* 列出的文件类型 */ + ], +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..97fc976 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1,2 @@ +*.sqlite +*.sqlite-journal diff --git a/database/LionsVote.sql b/database/LionsVote.sql new file mode 100644 index 0000000..c8e1d79 --- /dev/null +++ b/database/LionsVote.sql @@ -0,0 +1,638 @@ +-- phpMyAdmin SQL Dump +-- version 4.9.1 +-- https://www.phpmyadmin.net/ +-- +-- 主机: localhost +-- 生成日期: 2020-06-28 15:51:02 +-- 服务器版本: 8.0.13 +-- PHP 版本: 7.3.18 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- 数据库: `LionsVote` +-- + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_config` +-- + +CREATE TABLE `admin_config` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `value` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_config` +-- + +INSERT INTO `admin_config` (`id`, `name`, `value`, `description`, `created_at`, `updated_at`) VALUES +(1, 'open_sign', '1', NULL, '2020-05-06 07:14:18', '2020-05-06 07:27:52'), +(2, 'dested', '0', NULL, '2020-05-07 09:09:24', '2020-05-08 06:45:13'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_menu` +-- + +CREATE TABLE `admin_menu` ( + `id` int(10) UNSIGNED NOT NULL, + `parent_id` int(11) NOT NULL DEFAULT '0', + `order` int(11) NOT NULL DEFAULT '0', + `title` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `icon` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `uri` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `permission` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_menu` +-- + +INSERT INTO `admin_menu` (`id`, `parent_id`, `order`, `title`, `icon`, `uri`, `permission`, `created_at`, `updated_at`) VALUES +(1, 0, 1, '看板', 'fa-bar-chart', '/', NULL, NULL, NULL), +(2, 0, 7, '系统管理', 'fa-tasks', '', NULL, NULL, '2020-05-04 07:41:37'), +(3, 2, 8, '用户', 'fa-users', 'auth/users', NULL, NULL, '2020-05-04 07:41:37'), +(4, 2, 9, '角色', 'fa-user', 'auth/roles', NULL, NULL, '2020-05-04 07:41:37'), +(5, 2, 10, '权限', 'fa-ban', 'auth/permissions', NULL, NULL, '2020-05-04 07:41:37'), +(6, 2, 11, '菜单', 'fa-bars', 'auth/menu', NULL, NULL, '2020-05-04 07:41:37'), +(7, 2, 12, '日志', 'fa-history', 'auth/logs', NULL, NULL, '2020-05-04 07:41:37'), +(8, 0, 5, '投票管理', 'fa-bars', NULL, NULL, '2020-05-01 08:52:04', '2020-05-04 07:41:37'), +(9, 8, 6, '投票轮次', 'fa-bars', 'votes', NULL, '2020-05-01 08:52:17', '2020-05-04 07:41:37'), +(10, 0, 3, '用户管理', 'fa-group', NULL, NULL, '2020-05-02 09:04:15', '2020-05-04 07:41:37'), +(11, 10, 4, '用户列表', 'fa-user', 'users', NULL, '2020-05-02 09:04:31', '2020-05-04 07:41:37'), +(12, 0, 2, '内容管理', 'fa-bars', NULL, NULL, '2020-05-04 07:41:35', '2020-05-04 07:41:37'), +(13, 12, 0, '文件审阅', 'fa-bars', 'articles', NULL, '2020-05-04 07:41:44', '2020-05-04 07:41:51'), +(14, 0, 13, 'Config', 'fa-toggle-on', 'config', NULL, '2020-05-06 07:13:52', '2020-05-06 07:13:52'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_operation_log` +-- + +CREATE TABLE `admin_operation_log` ( + `id` int(10) UNSIGNED NOT NULL, + `user_id` int(11) NOT NULL, + `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `method` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, + `ip` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `input` text COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_permissions` +-- + +CREATE TABLE `admin_permissions` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `http_method` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `http_path` text COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_permissions` +-- + +INSERT INTO `admin_permissions` (`id`, `name`, `slug`, `http_method`, `http_path`, `created_at`, `updated_at`) VALUES +(1, 'All permission', '*', '', '*', NULL, NULL), +(2, 'Dashboard', 'dashboard', 'GET', '/', NULL, NULL), +(3, 'Login', 'auth.login', '', '/auth/login\r\n/auth/logout', NULL, NULL), +(4, 'User setting', 'auth.setting', 'GET,PUT', '/auth/setting', NULL, NULL), +(5, 'Auth management', 'auth.management', '', '/auth/roles\r\n/auth/permissions\r\n/auth/menu\r\n/auth/logs', NULL, NULL), +(6, 'Admin Config', 'ext.config', '', '/config*', '2020-05-06 07:13:52', '2020-05-06 07:13:52'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_roles` +-- + +CREATE TABLE `admin_roles` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_roles` +-- + +INSERT INTO `admin_roles` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES +(1, 'Administrator', 'administrator', '2020-05-01 00:45:21', '2020-05-01 00:45:21'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_menu` +-- + +CREATE TABLE `admin_role_menu` ( + `role_id` int(11) NOT NULL, + `menu_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_menu` +-- + +INSERT INTO `admin_role_menu` (`role_id`, `menu_id`, `created_at`, `updated_at`) VALUES +(1, 2, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_permissions` +-- + +CREATE TABLE `admin_role_permissions` ( + `role_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_permissions` +-- + +INSERT INTO `admin_role_permissions` (`role_id`, `permission_id`, `created_at`, `updated_at`) VALUES +(1, 1, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_users` +-- + +CREATE TABLE `admin_role_users` ( + `role_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_users` +-- + +INSERT INTO `admin_role_users` (`role_id`, `user_id`, `created_at`, `updated_at`) VALUES +(1, 1, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_users` +-- + +CREATE TABLE `admin_users` ( + `id` int(10) UNSIGNED NOT NULL, + `username` varchar(190) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_users` +-- + +INSERT INTO `admin_users` (`id`, `username`, `password`, `name`, `avatar`, `remember_token`, `created_at`, `updated_at`) VALUES +(1, 'admin', '$2y$10$.P0nDiNLx6KyWXDEN5gRR.h7Sw1licG7Fjb5D3IAljneGHLMkp6Ye', 'Administrator', NULL, 'e3yeW6Xr3yyD2V2NOECSPuPJ35KKVN0HCjs6yzlzkpSHtuM4NaU0a2oUTg51', '2020-05-01 00:45:21', '2020-05-08 10:51:14'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_user_permissions` +-- + +CREATE TABLE `admin_user_permissions` ( + `user_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `articles` +-- + +CREATE TABLE `articles` ( + `id` bigint(20) UNSIGNED NOT NULL, + `category_id` int(10) UNSIGNED NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `desc` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sort` int(10) UNSIGNED DEFAULT '0' COMMENT '倒序', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `article_audits` +-- + +CREATE TABLE `article_audits` ( + `id` int(10) UNSIGNED NOT NULL, + `article_id` int(10) UNSIGNED NOT NULL, + `user_id` int(10) UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `failed_jobs` +-- + +CREATE TABLE `failed_jobs` ( + `id` bigint(20) UNSIGNED NOT NULL, + `connection` text COLLATE utf8mb4_unicode_ci NOT NULL, + `queue` text COLLATE utf8mb4_unicode_ci NOT NULL, + `payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `items` +-- + +CREATE TABLE `items` ( + `id` bigint(20) UNSIGNED NOT NULL, + `vote_id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cover` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `desc2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `sort` int(10) UNSIGNED NOT NULL DEFAULT '99', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `item_logs` +-- + +CREATE TABLE `item_logs` ( + `id` bigint(20) UNSIGNED NOT NULL, + `vote_id` int(10) UNSIGNED NOT NULL, + `item_id` bigint(20) UNSIGNED NOT NULL, + `user_id` bigint(20) UNSIGNED NOT NULL, + `result` int(10) UNSIGNED NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `migrations` +-- + +CREATE TABLE `migrations` ( + `id` int(10) UNSIGNED NOT NULL, + `migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `batch` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `migrations` +-- + +INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES +(1, '2014_10_12_000000_create_users_table', 1), +(2, '2019_08_19_000000_create_failed_jobs_table', 1), +(3, '2016_01_04_173148_create_admin_tables', 2), +(4, '2020_05_01_235031_create_items_table', 3), +(5, '2020_05_01_235326_create_item_logs_table', 4), +(6, '2018_11_07_000000_create_sms_table', 5), +(7, '2017_07_17_040159_create_config_table', 6); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `sms` +-- + +CREATE TABLE `sms` ( + `id` int(10) UNSIGNED NOT NULL, + `mobile` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL, + `channel` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL, + `used` tinyint(1) NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `users` +-- + +CREATE TABLE `users` ( + `id` bigint(20) UNSIGNED NOT NULL, + `parent_id` int(10) UNSIGNED NOT NULL, + `mobile` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `sign` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `type` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `votes` +-- + +CREATE TABLE `votes` ( + `id` int(10) UNSIGNED NOT NULL, + `title` varchar(255) COLLATE utf8mb4_general_ci NOT NULL, + `type` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL, + `max` int(10) UNSIGNED DEFAULT '0', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', + `rules` longtext COLLATE utf8mb4_general_ci, + `archives` text COLLATE utf8mb4_general_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- 转储表的索引 +-- + +-- +-- 表的索引 `admin_config` +-- +ALTER TABLE `admin_config` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_config_name_unique` (`name`); + +-- +-- 表的索引 `admin_menu` +-- +ALTER TABLE `admin_menu` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `admin_operation_log` +-- +ALTER TABLE `admin_operation_log` + ADD PRIMARY KEY (`id`), + ADD KEY `admin_operation_log_user_id_index` (`user_id`); + +-- +-- 表的索引 `admin_permissions` +-- +ALTER TABLE `admin_permissions` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_permissions_name_unique` (`name`), + ADD UNIQUE KEY `admin_permissions_slug_unique` (`slug`); + +-- +-- 表的索引 `admin_roles` +-- +ALTER TABLE `admin_roles` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_roles_name_unique` (`name`), + ADD UNIQUE KEY `admin_roles_slug_unique` (`slug`); + +-- +-- 表的索引 `admin_role_menu` +-- +ALTER TABLE `admin_role_menu` + ADD KEY `admin_role_menu_role_id_menu_id_index` (`role_id`,`menu_id`); + +-- +-- 表的索引 `admin_role_permissions` +-- +ALTER TABLE `admin_role_permissions` + ADD KEY `admin_role_permissions_role_id_permission_id_index` (`role_id`,`permission_id`); + +-- +-- 表的索引 `admin_role_users` +-- +ALTER TABLE `admin_role_users` + ADD KEY `admin_role_users_role_id_user_id_index` (`role_id`,`user_id`); + +-- +-- 表的索引 `admin_users` +-- +ALTER TABLE `admin_users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `admin_users_username_unique` (`username`); + +-- +-- 表的索引 `admin_user_permissions` +-- +ALTER TABLE `admin_user_permissions` + ADD KEY `admin_user_permissions_user_id_permission_id_index` (`user_id`,`permission_id`); + +-- +-- 表的索引 `articles` +-- +ALTER TABLE `articles` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `article_audits` +-- +ALTER TABLE `article_audits` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `failed_jobs` +-- +ALTER TABLE `failed_jobs` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `items` +-- +ALTER TABLE `items` + ADD PRIMARY KEY (`id`), + ADD KEY `vote_id` (`vote_id`); + +-- +-- 表的索引 `item_logs` +-- +ALTER TABLE `item_logs` + ADD PRIMARY KEY (`id`), + ADD KEY `item_id` (`item_id`), + ADD KEY `user_id` (`user_id`), + ADD KEY `vote_id` (`vote_id`); + +-- +-- 表的索引 `migrations` +-- +ALTER TABLE `migrations` + ADD PRIMARY KEY (`id`); + +-- +-- 表的索引 `sms` +-- +ALTER TABLE `sms` + ADD PRIMARY KEY (`id`), + ADD KEY `sms_mobile_channel_index` (`mobile`,`channel`); + +-- +-- 表的索引 `users` +-- +ALTER TABLE `users` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `mobile` (`mobile`); + +-- +-- 表的索引 `votes` +-- +ALTER TABLE `votes` + ADD PRIMARY KEY (`id`); + +-- +-- 在导出的表使用AUTO_INCREMENT +-- + +-- +-- 使用表AUTO_INCREMENT `admin_config` +-- +ALTER TABLE `admin_config` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- 使用表AUTO_INCREMENT `admin_menu` +-- +ALTER TABLE `admin_menu` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; + +-- +-- 使用表AUTO_INCREMENT `admin_operation_log` +-- +ALTER TABLE `admin_operation_log` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `admin_permissions` +-- +ALTER TABLE `admin_permissions` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- 使用表AUTO_INCREMENT `admin_roles` +-- +ALTER TABLE `admin_roles` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `admin_users` +-- +ALTER TABLE `admin_users` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- 使用表AUTO_INCREMENT `articles` +-- +ALTER TABLE `articles` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `article_audits` +-- +ALTER TABLE `article_audits` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `failed_jobs` +-- +ALTER TABLE `failed_jobs` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `items` +-- +ALTER TABLE `items` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `item_logs` +-- +ALTER TABLE `item_logs` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `migrations` +-- +ALTER TABLE `migrations` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- 使用表AUTO_INCREMENT `sms` +-- +ALTER TABLE `sms` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `users` +-- +ALTER TABLE `users` + MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT; + +-- +-- 使用表AUTO_INCREMENT `votes` +-- +ALTER TABLE `votes` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..741edea --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,28 @@ +define(User::class, function (Faker $faker) { + return [ + 'name' => $faker->name, + 'email' => $faker->unique()->safeEmail, + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; +}); diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..621a24e --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +} diff --git a/database/migrations/2016_01_04_173148_create_admin_tables.php b/database/migrations/2016_01_04_173148_create_admin_tables.php new file mode 100644 index 0000000..ad386a6 --- /dev/null +++ b/database/migrations/2016_01_04_173148_create_admin_tables.php @@ -0,0 +1,119 @@ +increments('id'); + $table->string('username', 190)->unique(); + $table->string('password', 60); + $table->string('name'); + $table->string('avatar')->nullable(); + $table->string('remember_token', 100)->nullable(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.roles_table'), function (Blueprint $table) { + $table->increments('id'); + $table->string('name', 50)->unique(); + $table->string('slug', 50)->unique(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.permissions_table'), function (Blueprint $table) { + $table->increments('id'); + $table->string('name', 50)->unique(); + $table->string('slug', 50)->unique(); + $table->string('http_method')->nullable(); + $table->text('http_path')->nullable(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.menu_table'), function (Blueprint $table) { + $table->increments('id'); + $table->integer('parent_id')->default(0); + $table->integer('order')->default(0); + $table->string('title', 50); + $table->string('icon', 50); + $table->string('uri', 50)->nullable(); + $table->string('permission')->nullable(); + + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_users_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('user_id'); + $table->index(['role_id', 'user_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_permissions_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('permission_id'); + $table->index(['role_id', 'permission_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.user_permissions_table'), function (Blueprint $table) { + $table->integer('user_id'); + $table->integer('permission_id'); + $table->index(['user_id', 'permission_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_menu_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('menu_id'); + $table->index(['role_id', 'menu_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.operation_log_table'), function (Blueprint $table) { + $table->increments('id'); + $table->integer('user_id'); + $table->string('path'); + $table->string('method', 10); + $table->string('ip'); + $table->text('input'); + $table->index('user_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists(config('admin.database.users_table')); + Schema::dropIfExists(config('admin.database.roles_table')); + Schema::dropIfExists(config('admin.database.permissions_table')); + Schema::dropIfExists(config('admin.database.menu_table')); + Schema::dropIfExists(config('admin.database.user_permissions_table')); + Schema::dropIfExists(config('admin.database.role_users_table')); + Schema::dropIfExists(config('admin.database.role_permissions_table')); + Schema::dropIfExists(config('admin.database.role_menu_table')); + Schema::dropIfExists(config('admin.database.operation_log_table')); + } +} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..9bddee3 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,35 @@ +id(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/database/migrations/2020_05_01_235031_create_items_table.php b/database/migrations/2020_05_01_235031_create_items_table.php new file mode 100644 index 0000000..6b0a7ad --- /dev/null +++ b/database/migrations/2020_05_01_235031_create_items_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('name'); + $table->string('cover'); + $table->string('desc'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('items'); + } + +} diff --git a/database/migrations/2020_05_01_235326_create_item_logs_table.php b/database/migrations/2020_05_01_235326_create_item_logs_table.php new file mode 100644 index 0000000..142aa54 --- /dev/null +++ b/database/migrations/2020_05_01_235326_create_item_logs_table.php @@ -0,0 +1,31 @@ +id(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('item_logs'); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php new file mode 100644 index 0000000..237dfc5 --- /dev/null +++ b/database/seeds/DatabaseSeeder.php @@ -0,0 +1,16 @@ +call(UserSeeder::class); + } +} diff --git a/database/vote.sql b/database/vote.sql new file mode 100644 index 0000000..8718573 --- /dev/null +++ b/database/vote.sql @@ -0,0 +1,645 @@ +-- phpMyAdmin SQL Dump +-- version 4.9.1 +-- https://www.phpmyadmin.net/ +-- +-- 主机: localhost +-- 生成日期: 2020-06-09 10:35:42 +-- 服务器版本: 8.0.13 +-- PHP 版本: 7.3.11 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- 数据库: `vote` +-- + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_config` +-- + +CREATE TABLE `admin_config` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_config` +-- + +INSERT INTO `admin_config` (`id`, `name`, `value`, `description`, `created_at`, `updated_at`) VALUES +(1, 'open_sign', '1', NULL, '2020-05-06 07:14:18', '2020-05-06 07:27:52'), +(2, 'dested', '0', NULL, '2020-05-07 09:09:24', '2020-05-08 06:45:13'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_menu` +-- + +CREATE TABLE `admin_menu` ( + `id` int(10) UNSIGNED NOT NULL, + `parent_id` int(11) NOT NULL DEFAULT '0', + `order` int(11) NOT NULL DEFAULT '0', + `title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `uri` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_menu` +-- + +INSERT INTO `admin_menu` (`id`, `parent_id`, `order`, `title`, `icon`, `uri`, `permission`, `created_at`, `updated_at`) VALUES +(1, 0, 1, '看板', 'fa-bar-chart', '/', NULL, NULL, NULL), +(2, 0, 7, '系统管理', 'fa-tasks', '', NULL, NULL, '2020-05-04 07:41:37'), +(3, 2, 8, '用户', 'fa-users', 'auth/users', NULL, NULL, '2020-05-04 07:41:37'), +(4, 2, 9, '角色', 'fa-user', 'auth/roles', NULL, NULL, '2020-05-04 07:41:37'), +(5, 2, 10, '权限', 'fa-ban', 'auth/permissions', NULL, NULL, '2020-05-04 07:41:37'), +(6, 2, 11, '菜单', 'fa-bars', 'auth/menu', NULL, NULL, '2020-05-04 07:41:37'), +(7, 2, 12, '日志', 'fa-history', 'auth/logs', NULL, NULL, '2020-05-04 07:41:37'), +(8, 0, 5, '投票管理', 'fa-bars', NULL, NULL, '2020-05-01 08:52:04', '2020-05-04 07:41:37'), +(9, 8, 6, '投票轮次', 'fa-bars', 'votes', NULL, '2020-05-01 08:52:17', '2020-05-04 07:41:37'), +(10, 0, 3, '用户管理', 'fa-group', NULL, NULL, '2020-05-02 09:04:15', '2020-05-04 07:41:37'), +(11, 10, 4, '用户列表', 'fa-user', 'users', NULL, '2020-05-02 09:04:31', '2020-05-04 07:41:37'), +(12, 0, 2, '内容管理', 'fa-bars', NULL, NULL, '2020-05-04 07:41:35', '2020-05-04 07:41:37'), +(13, 12, 0, '文件审阅', 'fa-bars', 'articles', NULL, '2020-05-04 07:41:44', '2020-05-04 07:41:51'), +(14, 0, 13, 'Config', 'fa-toggle-on', 'config', NULL, '2020-05-06 07:13:52', '2020-05-06 07:13:52'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_operation_log` +-- + +CREATE TABLE `admin_operation_log` ( + `id` int(10) UNSIGNED NOT NULL, + `user_id` int(11) NOT NULL, + `path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `method` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `input` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_permissions` +-- + +CREATE TABLE `admin_permissions` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `http_method` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `http_path` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_permissions` +-- + +INSERT INTO `admin_permissions` (`id`, `name`, `slug`, `http_method`, `http_path`, `created_at`, `updated_at`) VALUES +(1, 'All permission', '*', '', '*', NULL, NULL), +(2, 'Dashboard', 'dashboard', 'GET', '/', NULL, NULL), +(3, 'Login', 'auth.login', '', '/auth/login\r\n/auth/logout', NULL, NULL), +(4, 'User setting', 'auth.setting', 'GET,PUT', '/auth/setting', NULL, NULL), +(5, 'Auth management', 'auth.management', '', '/auth/roles\r\n/auth/permissions\r\n/auth/menu\r\n/auth/logs', NULL, NULL), +(6, 'Admin Config', 'ext.config', '', '/config*', '2020-05-06 07:13:52', '2020-05-06 07:13:52'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_roles` +-- + +CREATE TABLE `admin_roles` ( + `id` int(10) UNSIGNED NOT NULL, + `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `slug` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_roles` +-- + +INSERT INTO `admin_roles` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES +(1, 'Administrator', 'administrator', '2020-05-01 00:45:21', '2020-05-01 00:45:21'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_menu` +-- + +CREATE TABLE `admin_role_menu` ( + `role_id` int(11) NOT NULL, + `menu_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_menu` +-- + +INSERT INTO `admin_role_menu` (`role_id`, `menu_id`, `created_at`, `updated_at`) VALUES +(1, 2, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_permissions` +-- + +CREATE TABLE `admin_role_permissions` ( + `role_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_permissions` +-- + +INSERT INTO `admin_role_permissions` (`role_id`, `permission_id`, `created_at`, `updated_at`) VALUES +(1, 1, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_role_users` +-- + +CREATE TABLE `admin_role_users` ( + `role_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_role_users` +-- + +INSERT INTO `admin_role_users` (`role_id`, `user_id`, `created_at`, `updated_at`) VALUES +(1, 1, NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_users` +-- + +CREATE TABLE `admin_users` ( + `id` int(10) UNSIGNED NOT NULL, + `username` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `remember_token` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `admin_users` +-- + +INSERT INTO `admin_users` (`id`, `username`, `password`, `name`, `avatar`, `remember_token`, `created_at`, `updated_at`) VALUES +(1, 'admin', '$2y$10$zhYMMnQtsf9dX8JCkn8JreARKFrnhDKFab1EJ6cMUtmZ88Rt4dq5m', 'Administrator', NULL, 'z9P5PsRgh47FRo9TMFpa6IkmcxdZnCt8g8NIx82FnYz8e3H1FTlBaJZ3YYDm', '2020-05-01 00:45:21', '2020-05-08 10:51:14'); + +-- -------------------------------------------------------- + +-- +-- 表的结构 `admin_user_permissions` +-- + +CREATE TABLE `admin_user_permissions` ( + `user_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 表的结构 `articles` +-- + +CREATE TABLE `articles` ( + `id` bigint(20) UNSIGNED NOT NULL, + `category_id` int(10) UNSIGNED NOT NULL, + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `desc` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `sort` int(10) UNSIGNED DEFAULT '0' COMMENT '倒序', + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 转存表中的数据 `articles` +-- + +INSERT INTO `articles` (`id`, `category_id`, `title`, `desc`, `content`, `sort`, `created_at`, `updated_at`, `deleted_at`) VALUES +(1, 1, '会员代表承诺书', '会员代表承诺书', '