From 9f8c374ac283bd8ad2d28b68272c75c60bdd2fbe Mon Sep 17 00:00:00 2001 From: zhangjian <178459446@qq.com> Date: Tue, 9 May 2023 17:53:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E7=B3=BB=E7=BB=9F=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/.gitignore | 13 + api/Dockerfile | 11 + api/apidoc.json | 15 + api/footer.md | 2 + api/header.md | 1 + api/init_doc.bat | 4 + api/package-lock.json | 3 + api/pom.xml | 444 + api/scripts/build_dev.sh | 47 + .../java/com/wx/application/Application.java | 72 + .../adapter/controller/LoginController.java | 180 + .../adapter/dto/qo/GraphTaskExecuteQ.java | 16 + .../adapter/dto/qo/GraphTaskFileExecuteQ.java | 37 + .../application/adapter/dto/qo/OntologyQ.java | 12 + .../dto/qo/RemarkTaskRemoveOntologyQ.java | 16 + .../application/adapter/dto/qo/RiskUserQ.java | 59 + .../wx/application/base/BaseController.java | 65 + .../com/wx/application/base/BaseEntity.java | 34 + .../wx/application/base/BaseQueryApply.java | 13 + .../base/BaseQueryApplyOrderBy.java | 15 + .../application/base/BaseSearchService.java | 196 + .../com/wx/application/base/BaseService.java | 283 + .../base/DynamicSpecifications.java | 309 + .../wx/application/base/ErrorCodeEnum.java | 50 + .../com/wx/application/base/ResponseData.java | 58 + .../com/wx/application/base/SearchFilter.java | 176 + .../FilterIgnorePropertiesConfig.java | 41 + .../configuration/MybatisFillHandler.java | 29 + .../configuration/annotation/AspectOff.java | 7 + .../configuration/annotation/AuditLog.java | 18 + .../com/wx/application/constant/CONSTANT.java | 52 + .../core/controller/GraphCaseController.java | 53 + .../core/controller/GraphTaskController.java | 41 + .../controller/OntologyConceptController.java | 117 + .../core/controller/OntologyController.java | 274 + .../controller/OntologyFieldController.java | 112 + .../OntologyRelationController.java | 103 + .../core/controller/QuestionQaController.java | 268 + .../wx/application/core/entity/GraphCase.java | 28 + .../wx/application/core/entity/GraphTask.java | 27 + .../wx/application/core/entity/Ontology.java | 34 + .../core/entity/OntologyConcept.java | 27 + .../core/entity/OntologyField.java | 48 + .../core/entity/OntologyRelation.java | 37 + .../application/core/entity/QuestionQa.java | 28 + .../wx/application/core/entity/RiskUser.java | 28 + .../core/mapper/GraphCaseMapper.java | 20 + .../core/mapper/GraphTaskMapper.java | 20 + .../core/mapper/OntologyConceptMapper.java | 25 + .../core/mapper/OntologyFieldMapper.java | 23 + .../core/mapper/OntologyMapper.java | 18 + .../core/mapper/OntologyRelationMapper.java | 25 + .../core/mapper/QuestionQaMapper.java | 18 + .../core/mapper/RiskUserMapper.java | 18 + .../core/service/GraphCaseService.java | 57 + .../core/service/GraphTaskService.java | 32 + .../core/service/OntologyConceptService.java | 217 + .../core/service/OntologyFieldService.java | 248 + .../core/service/OntologyRelationService.java | 208 + .../core/service/OntologyService.java | 27 + .../core/service/QuestionQaService.java | 27 + .../core/service/RiskUserService.java | 27 + .../exception/CommonException.java | 27 + .../exception/GlobalExceptionHandler.java | 97 + .../filter/GlobalRequestBodyAdvice.java | 63 + .../filter/GlobalResponseBodyAdvice.java | 46 + .../wx/application/filter/JwtAuthFilter.java | 120 + .../nebula/graph/base/BaseGraphSerice.java | 1063 ++ .../nebula/graph/base/FieldsUtils.java | 73 + .../nebula/graph/base/Generators.java | 54 + .../nebula/graph/base/GqlTemplate.java | 93 + .../nebula/graph/base/NebulaGraphClient.java | 43 + .../nebula/graph/base/NebulaGraphConfig.java | 19 + .../nebula/graph/base/ResultSetUtils.java | 282 + .../nebula/graph/bean/ModelEdgeLine.java | 37 + .../nebula/graph/bean/ModelVertex.java | 31 + .../nebula/graph/bean/NebulaEdge.java | 26 + .../nebula/graph/bean/NebulaEdgeLine.java | 32 + .../nebula/graph/bean/NebulaField.java | 21 + .../nebula/graph/bean/NebulaIndex.java | 26 + .../nebula/graph/bean/NebulaSpace.java | 23 + .../nebula/graph/bean/NebulaTag.java | 29 + .../nebula/graph/bean/NebulaVertex.java | 34 + .../conrtroller/NebulaImportController.java | 81 + .../conrtroller/NebulaModelController.java | 242 + .../conrtroller/NebulaOperateController.java | 438 + .../nebula/graph/enums/DataType.java | 16 + .../nebula/graph/enums/IndexType.java | 6 + .../nebula/graph/enums/VidType.java | 7 + .../graph/factory/NebulaGraphClient.java | 69 + .../factory/NebulaSessionProperties.java | 37 + .../graph/factory/SessionConfigure.java | 35 + .../nebula/graph/factory/SessionFactory.java | 98 + .../nebula/graph/query/NebulaModel.java | 22 + .../nebula/graph/query/NebulaNode.java | 45 + .../nebula/graph/query/NebulaPath.java | 16 + .../nebula/graph/query/NebulaQo.java | 22 + .../nebula/graph/query/NebulaRelation.java | 48 + .../application/nebula/graph/query/Page.java | 62 + .../nebula/graph/query/PageRequest.java | 22 + .../nebula/graph/query/TermQuery.java | 61 + .../nebula/graph/query/TermQueryBuilder.java | 50 + .../service/ImportGraphInExcelService.java | 376 + .../service/ImportGraphInJsonService.java | 325 + .../graph/service/ImportModelService.java | 345 + .../graph/service/ImportSchemaService.java | 296 + .../graph/service/NebulaModelService.java | 903 + .../graph/service/NebulaOperateService.java | 286 + .../tool/generator/DefaultGenerator.java | 160 + .../com/wx/application/util/DateUtils.java | 33 + .../com/wx/application/util/FileUitls.java | 55 + .../wx/application/util/InputStreamCache.java | 61 + .../com/wx/application/util/J8listUtils.java | 15 + .../com/wx/application/util/JSONUtils.java | 75 + .../com/wx/application/util/JwtUtils.java | 128 + .../java/com/wx/application/util/MD5Util.java | 78 + .../wx/application/util/MyStringUtils.java | 20 + .../wx/application/util/UUIDGenerator.java | 63 + .../wx/application/util/UnicodeDecode.java | 33 + .../resources/_templates/controller.java.vm | 286 + .../main/resources/_templates/entity.java.vm | 128 + .../main/resources/_templates/entity.kt.vm | 114 + .../main/resources/_templates/mapper.java.vm | 22 + .../main/resources/_templates/mapper.xml.vm | 10 + .../main/resources/_templates/queryQ.java.vm | 7 + .../main/resources/_templates/service.java.vm | 28 + .../resources/_templates/serviceImpl.java.vm | 26 + .../resources/_templates/template.html.vm | 204 + api/src/main/resources/application.yml | 66 + api/src/main/resources/banner.txt | 17 + api/src/main/resources/config.properties | 22 + api/src/main/resources/logback.xml | 59 + .../main/resources/mapper/GraphCaseMapper.xml | 9 + .../main/resources/mapper/GraphTaskMapper.xml | 9 + .../mapper/OntologyConceptMapper.xml | 36 + .../resources/mapper/OntologyFieldMapper.xml | 33 + .../main/resources/mapper/OntologyMapper.xml | 6 + .../mapper/OntologyRelationMapper.xml | 29 + .../resources/mapper/QuestionQaMapper.xml | 6 + .../resources/mapper/RemarkTaskMapper.xml | 6 + .../main/resources/mapper/RiskUserMapper.xml | 6 + api/src/main/resources/message.properties | 23 + api/src/test/java/HashUtilTest.java | 20 + api/src/test/java/JSONTest.java | 25 + api/src/test/java/StringTest.java | 48 + api/src/test/java/TreeNode.java | 22 + api/src/test/java/TreeNodeTest.java | 118 + api/src/test/java/ZzbdsTest.java | 43 + web/.gitignore | 3 + web/README.md | 24 + web/babel.config.js | 5 + web/package-lock.json | 15578 ++++++++++++++++ web/package.json | 72 + web/postcss.config.js | 14 + web/public/index.html | 17 + web/public/实例数据.zip | Bin 0 -> 1302626 bytes web/public/武器装备-本体模型.xlsx | Bin 0 -> 356277 bytes web/src/App.vue | 73 + web/src/api/user.js | 16 + web/src/assets/404_images/404.png | Bin 0 -> 98071 bytes web/src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes web/src/assets/image/614/1a.jpg | Bin 0 -> 175362 bytes web/src/assets/image/614/1b.jpg | Bin 0 -> 113764 bytes web/src/assets/image/614/2a.jpg | Bin 0 -> 239294 bytes web/src/assets/image/614/2b.jpg | Bin 0 -> 216738 bytes web/src/assets/image/614/2c.jpg | Bin 0 -> 255359 bytes web/src/assets/image/614/2d.jpg | Bin 0 -> 230766 bytes web/src/assets/image/614/2f.jpg | Bin 0 -> 283639 bytes web/src/assets/image/614/3a.jpg | Bin 0 -> 122636 bytes web/src/assets/image/614/3b.jpg | Bin 0 -> 134186 bytes web/src/assets/image/614/3c.jpg | Bin 0 -> 123770 bytes web/src/assets/image/614/3d.jpg | Bin 0 -> 140366 bytes web/src/assets/image/614/3e.jpg | Bin 0 -> 139611 bytes web/src/assets/image/614/3f.jpg | Bin 0 -> 125308 bytes web/src/assets/image/614/3g.jpg | Bin 0 -> 116383 bytes web/src/assets/image/614/3h.jpg | Bin 0 -> 123621 bytes web/src/assets/image/614/3i.jpg | Bin 0 -> 122267 bytes web/src/assets/image/614/3j.jpg | Bin 0 -> 134878 bytes web/src/assets/image/614/3k.jpg | Bin 0 -> 129340 bytes web/src/assets/image/614/3l.jpg | Bin 0 -> 131642 bytes web/src/assets/image/614/3m.jpg | Bin 0 -> 142750 bytes web/src/assets/image/614/3n.jpg | Bin 0 -> 127204 bytes web/src/assets/image/614/3o.jpg | Bin 0 -> 135176 bytes web/src/assets/image/614/3p.jpg | Bin 0 -> 138055 bytes web/src/assets/image/614/3q.jpg | Bin 0 -> 130669 bytes web/src/assets/image/614/4a.jpg | Bin 0 -> 106252 bytes web/src/assets/image/614/4b.jpg | Bin 0 -> 108170 bytes web/src/assets/image/614/4c.jpg | Bin 0 -> 93830 bytes web/src/assets/image/614/4d.jpg | Bin 0 -> 100767 bytes web/src/assets/image/614/4e.jpg | Bin 0 -> 90440 bytes web/src/assets/image/614/4f.jpg | Bin 0 -> 119132 bytes web/src/assets/image/614/4g.jpg | Bin 0 -> 111333 bytes web/src/assets/image/614/4h.jpg | Bin 0 -> 88723 bytes web/src/assets/image/614/4j.jpg | Bin 0 -> 94191 bytes web/src/assets/image/614/5a.jpg | Bin 0 -> 129756 bytes web/src/assets/image/614/5b.jpg | Bin 0 -> 143469 bytes web/src/assets/image/614/5c.jpg | Bin 0 -> 104046 bytes web/src/assets/image/614/5d.jpg | Bin 0 -> 155633 bytes web/src/assets/image/614/5e.jpg | Bin 0 -> 106378 bytes web/src/assets/image/614/5f.jpg | Bin 0 -> 164076 bytes web/src/assets/image/614/5g.jpg | Bin 0 -> 112743 bytes web/src/assets/image/614/5h.jpg | Bin 0 -> 87347 bytes web/src/assets/image/614/6a.jpg | Bin 0 -> 135002 bytes web/src/assets/image/614/6b.jpg | Bin 0 -> 132553 bytes web/src/assets/image/614/6c.jpg | Bin 0 -> 152008 bytes web/src/assets/image/614/6d.jpg | Bin 0 -> 132459 bytes web/src/assets/image/614/6e.jpg | Bin 0 -> 144943 bytes web/src/assets/image/614/6f.jpg | Bin 0 -> 147143 bytes web/src/assets/image/614/6g.jpg | Bin 0 -> 171648 bytes .../image/icon/arrowTop-fill-active.png | Bin 0 -> 2308 bytes web/src/assets/image/icon/arrowTop-fill.png | Bin 0 -> 2260 bytes web/src/assets/image/icon/baocun.png | Bin 0 -> 6045 bytes web/src/assets/image/icon/bg-add.png | Bin 0 -> 10228 bytes .../image/icon/changyonggoupiaorenshanchu.png | Bin 0 -> 6140 bytes web/src/assets/image/icon/fanhui.png | Bin 0 -> 1645 bytes web/src/assets/image/icon/search.png | Bin 0 -> 5677 bytes web/src/assets/image/icon/shuxingicon.png | Bin 0 -> 8957 bytes web/src/assets/image/icon/shuxingtu.png | Bin 0 -> 5465 bytes web/src/assets/image/icon/tongji.png | Bin 0 -> 2967 bytes web/src/assets/image/icon/tupian.png | Bin 0 -> 11251 bytes web/src/assets/image/manage-bg.jpg | Bin 0 -> 75618 bytes web/src/assets/index.css | 854 + web/src/components/dialog/EdgeAdd.vue | 238 + web/src/components/dialog/EdgeDetail.vue | 250 + web/src/components/dialog/EdgeTypeModify.vue | 270 + web/src/components/dialog/GraphSpaceAdd.vue | 144 + web/src/components/dialog/GraphSpaceAdd1.vue | 187 + web/src/components/dialog/IndexAdd.vue | 201 + web/src/components/dialog/NodeDetail.vue | 224 + .../components/dialog/NoumenonEdgeModify.vue | 174 + web/src/components/dialog/NoumenonInfo.vue | 307 + web/src/components/dialog/NoumenonModify.vue | 142 + web/src/components/dialog/TagModify.vue | 278 + web/src/components/dialog/TreeGraphInfo.vue | 226 + web/src/components/dialog/TreeGraphInfo2.vue | 244 + web/src/components/graph/Graph.vue | 145 + web/src/components/graph/Graph614.vue | 314 + web/src/components/graph/GraphModel.vue | 1105 ++ .../components/graph/GraphModel20220927.vue | 782 + web/src/components/graph/GraphSpace.vue | 947 + web/src/components/graph/Graph_x6.vue | 327 + web/src/components/graph/config.js | 81 + web/src/components/log/index.vue | 110 + .../menus/614/AuxiliaryMaintenance.vue | 256 + web/src/components/menus/614/IndexPage.vue | 363 + web/src/components/menus/614/InfoConverge.vue | 252 + web/src/components/menus/614/InfoExtract.vue | 265 + .../components/menus/614/LinkPrediction.vue | 161 + .../components/menus/614/RiskPrediction.vue | 340 + .../components/menus/AlgorithmPublishing.vue | 355 + .../menus/AlgorithmSpeedVerification.vue | 242 + web/src/components/menus/CodeWarehouse.vue | 232 + web/src/components/menus/DataRepeatRate.vue | 357 + web/src/components/menus/DataSetCompare.vue | 174 + web/src/components/menus/DataSetManage.vue | 585 + web/src/components/menus/GraphAssessment.vue | 515 + web/src/components/menus/GraphExhibition.vue | 133 + web/src/components/menus/GraphImport.vue | 326 + web/src/components/menus/GraphImport1.vue | 429 + web/src/components/menus/GraphModel.vue | 208 + web/src/components/menus/GraphPath.vue | 297 + web/src/components/menus/GraphRecommend.vue | 185 + web/src/components/menus/GraphRelation.vue | 279 + web/src/components/menus/GraphShow.vue | 243 + web/src/components/menus/GraphSpaceManage.vue | 264 + web/src/components/menus/GraphSpaceSet.vue | 291 + web/src/components/menus/KnowledgeFusion.vue | 266 + .../components/menus/KnowledgeQuestion.vue | 216 + web/src/components/menus/ModelManage.vue | 567 + web/src/components/menus/NodeManage.vue | 284 + .../components/menus/NoumenonModelImport.vue | 385 + web/src/components/menus/ReasonGraph.vue | 351 + web/src/components/menus/ServiceManage.vue | 425 + web/src/components/menus/TextTag.vue | 1156 ++ web/src/components/xterm/index.vue | 171 + web/src/main.js | 40 + web/src/permission.js | 36 + web/src/router/index.js | 175 + web/src/settings.js | 4 + web/src/store/getters.js | 8 + web/src/store/index.js | 19 + web/src/store/modules/app.js | 48 + web/src/store/modules/settings.js | 32 + web/src/store/modules/user.js | 93 + web/src/utils/auth.js | 13 + web/src/utils/common.js | 115 + web/src/utils/get-page-title.js | 10 + web/src/utils/menu.js | 145 + web/src/utils/request.js | 88 + web/src/utils/request2.js | 83 + web/src/utils/request3.js | 63 + web/src/utils/request614.js | 84 + web/src/utils/xterm-addon/LICENSE | 19 + web/src/utils/xterm-addon/README.md | 22 + .../xterm-addon/lib/xterm-addon-attach.js | 2 + .../xterm-addon/lib/xterm-addon-attach.js.map | 1 + .../xterm-addon/out/AttachAddon.api.js.map | 1 + web/src/utils/xterm-addon/out/AttachAddon.js | 57 + .../utils/xterm-addon/out/AttachAddon.js.map | 1 + web/src/utils/xterm-addon/package.json | 21 + web/src/utils/xterm-addon/src/AttachAddon.ts | 79 + .../typings/xterm-addon-attach.d.ts | 21 + web/src/utils/xterm/LICENSE | 21 + web/src/utils/xterm/README.md | 190 + web/src/utils/xterm/css/xterm.css | 171 + web/src/utils/xterm/lib/xterm.js | 2 + web/src/utils/xterm/lib/xterm.js.map | 1 + web/src/utils/xterm/package.json | 78 + .../utils/xterm/src/AccessibilityManager.ts | 297 + web/src/utils/xterm/src/InputHandler.ts | 2252 +++ web/src/utils/xterm/src/Terminal.ts | 1573 ++ web/src/utils/xterm/src/Types.d.ts | 257 + web/src/utils/xterm/src/browser/Clipboard.ts | 111 + web/src/utils/xterm/src/browser/Color.ts | 181 + .../xterm/src/browser/ColorContrastCache.ts | 38 + .../utils/xterm/src/browser/ColorManager.ts | 218 + web/src/utils/xterm/src/browser/Lifecycle.ts | 29 + web/src/utils/xterm/src/browser/Linkifier.ts | 348 + .../xterm/src/browser/LocalizableStrings.ts | 7 + .../xterm/src/browser/MouseZoneManager.ts | 239 + .../xterm/src/browser/RenderDebouncer.ts | 63 + .../xterm/src/browser/ScreenDprMonitor.ts | 69 + web/src/utils/xterm/src/browser/Types.d.ts | 157 + web/src/utils/xterm/src/browser/Viewport.ts | 267 + .../src/browser/input/CompositionHelper.ts | 229 + .../utils/xterm/src/browser/input/Mouse.ts | 58 + .../xterm/src/browser/input/MoveToCell.ts | 230 + .../src/browser/renderer/BaseRenderLayer.ts | 476 + .../renderer/CharacterJoinerRegistry.ts | 326 + .../src/browser/renderer/CursorRenderLayer.ts | 369 + .../xterm/src/browser/renderer/GridCache.ts | 33 + .../src/browser/renderer/LinkRenderLayer.ts | 79 + .../xterm/src/browser/renderer/Renderer.ts | 214 + .../src/browser/renderer/RendererUtils.ts | 11 + .../browser/renderer/SelectionRenderLayer.ts | 127 + .../src/browser/renderer/TextRenderLayer.ts | 328 + .../xterm/src/browser/renderer/Types.d.ts | 124 + .../browser/renderer/atlas/BaseCharAtlas.ts | 56 + .../browser/renderer/atlas/CharAtlasCache.ts | 95 + .../browser/renderer/atlas/CharAtlasUtils.ts | 56 + .../src/browser/renderer/atlas/Constants.ts | 9 + .../renderer/atlas/DynamicCharAtlas.ts | 370 + .../src/browser/renderer/atlas/LRUMap.ts | 136 + .../src/browser/renderer/atlas/Types.d.ts | 29 + .../src/browser/renderer/dom/DomRenderer.ts | 397 + .../renderer/dom/DomRendererRowFactory.ts | 203 + .../src/browser/selection/SelectionModel.ts | 135 + .../xterm/src/browser/selection/Types.d.ts | 10 + .../src/browser/services/CharSizeService.ts | 87 + .../browser/services/CoreBrowserService.ts | 19 + .../src/browser/services/MouseService.ts | 35 + .../src/browser/services/RenderService.ts | 178 + .../src/browser/services/SelectionService.ts | 950 + .../xterm/src/browser/services/Services.ts | 102 + .../src/browser/services/SoundService.ts | 63 + web/src/utils/xterm/src/browser/tsconfig.json | 21 + web/src/utils/xterm/src/common/CharWidth.ts | 171 + .../utils/xterm/src/common/CircularList.ts | 235 + web/src/utils/xterm/src/common/Clone.ts | 23 + .../utils/xterm/src/common/EventEmitter.ts | 65 + web/src/utils/xterm/src/common/Lifecycle.ts | 47 + web/src/utils/xterm/src/common/Platform.ts | 39 + .../utils/xterm/src/common/TypedArrayUtils.ts | 52 + web/src/utils/xterm/src/common/Types.d.ts | 256 + web/src/utils/xterm/src/common/WindowsMode.ts | 27 + .../xterm/src/common/buffer/AttributeData.ts | 68 + .../utils/xterm/src/common/buffer/Buffer.ts | 671 + .../xterm/src/common/buffer/BufferLine.ts | 393 + .../xterm/src/common/buffer/BufferReflow.ts | 220 + .../xterm/src/common/buffer/BufferSet.ts | 122 + .../utils/xterm/src/common/buffer/CellData.ts | 93 + .../xterm/src/common/buffer/Constants.ts | 128 + .../utils/xterm/src/common/buffer/Marker.ts | 36 + .../utils/xterm/src/common/buffer/Types.d.ts | 61 + .../utils/xterm/src/common/data/Charsets.ts | 255 + .../xterm/src/common/data/EscapeSequences.ts | 150 + .../utils/xterm/src/common/input/Keyboard.ts | 372 + .../xterm/src/common/input/TextDecoder.ts | 342 + .../xterm/src/common/input/WriteBuffer.ts | 110 + .../xterm/src/common/parser/Constants.ts | 58 + .../xterm/src/common/parser/DcsParser.ts | 146 + .../src/common/parser/EscapeSequenceParser.ts | 636 + .../xterm/src/common/parser/OscParser.ts | 203 + .../utils/xterm/src/common/parser/Params.ts | 229 + .../utils/xterm/src/common/parser/Types.d.ts | 244 + .../src/common/services/BufferService.ts | 38 + .../src/common/services/CoreMouseService.ts | 305 + .../xterm/src/common/services/CoreService.ts | 72 + .../src/common/services/DirtyRowService.ts | 53 + .../common/services/InstantiationService.ts | 77 + .../xterm/src/common/services/LogService.ts | 97 + .../src/common/services/OptionsService.ts | 144 + .../src/common/services/ServiceRegistry.ts | 49 + .../xterm/src/common/services/Services.ts | 281 + web/src/utils/xterm/src/common/tsconfig.json | 14 + .../utils/xterm/src/public/AddonManager.ts | 56 + web/src/utils/xterm/src/public/Terminal.ts | 242 + web/src/utils/xterm/src/tsconfig-base.json | 13 + .../xterm/src/tsconfig-library-base.json | 9 + web/src/utils/xterm/src/tsconfig.json | 34 + web/src/utils/xterm/tsconfig.all.json | 14 + web/src/utils/xterm/typings/xterm.d.ts | 1128 ++ web/src/views/404.vue | 224 + web/src/views/Index.vue | 338 + web/src/views/Login.vue | 119 + web/vue.config.js | 8 + 406 files changed, 68905 insertions(+) create mode 100644 api/.gitignore create mode 100644 api/Dockerfile create mode 100644 api/apidoc.json create mode 100644 api/footer.md create mode 100644 api/header.md create mode 100644 api/init_doc.bat create mode 100644 api/package-lock.json create mode 100644 api/pom.xml create mode 100644 api/scripts/build_dev.sh create mode 100644 api/src/main/java/com/wx/application/Application.java create mode 100644 api/src/main/java/com/wx/application/adapter/controller/LoginController.java create mode 100644 api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java create mode 100644 api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java create mode 100644 api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java create mode 100644 api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java create mode 100644 api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java create mode 100644 api/src/main/java/com/wx/application/base/BaseController.java create mode 100644 api/src/main/java/com/wx/application/base/BaseEntity.java create mode 100644 api/src/main/java/com/wx/application/base/BaseQueryApply.java create mode 100644 api/src/main/java/com/wx/application/base/BaseQueryApplyOrderBy.java create mode 100644 api/src/main/java/com/wx/application/base/BaseSearchService.java create mode 100644 api/src/main/java/com/wx/application/base/BaseService.java create mode 100644 api/src/main/java/com/wx/application/base/DynamicSpecifications.java create mode 100644 api/src/main/java/com/wx/application/base/ErrorCodeEnum.java create mode 100644 api/src/main/java/com/wx/application/base/ResponseData.java create mode 100644 api/src/main/java/com/wx/application/base/SearchFilter.java create mode 100644 api/src/main/java/com/wx/application/configuration/FilterIgnorePropertiesConfig.java create mode 100644 api/src/main/java/com/wx/application/configuration/MybatisFillHandler.java create mode 100644 api/src/main/java/com/wx/application/configuration/annotation/AspectOff.java create mode 100644 api/src/main/java/com/wx/application/configuration/annotation/AuditLog.java create mode 100644 api/src/main/java/com/wx/application/constant/CONSTANT.java create mode 100644 api/src/main/java/com/wx/application/core/controller/GraphCaseController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/GraphTaskController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/OntologyConceptController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/OntologyController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/OntologyFieldController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/OntologyRelationController.java create mode 100644 api/src/main/java/com/wx/application/core/controller/QuestionQaController.java create mode 100644 api/src/main/java/com/wx/application/core/entity/GraphCase.java create mode 100644 api/src/main/java/com/wx/application/core/entity/GraphTask.java create mode 100644 api/src/main/java/com/wx/application/core/entity/Ontology.java create mode 100644 api/src/main/java/com/wx/application/core/entity/OntologyConcept.java create mode 100644 api/src/main/java/com/wx/application/core/entity/OntologyField.java create mode 100644 api/src/main/java/com/wx/application/core/entity/OntologyRelation.java create mode 100644 api/src/main/java/com/wx/application/core/entity/QuestionQa.java create mode 100644 api/src/main/java/com/wx/application/core/entity/RiskUser.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/GraphCaseMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/GraphTaskMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/OntologyConceptMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/OntologyFieldMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/OntologyMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/OntologyRelationMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/QuestionQaMapper.java create mode 100644 api/src/main/java/com/wx/application/core/mapper/RiskUserMapper.java create mode 100644 api/src/main/java/com/wx/application/core/service/GraphCaseService.java create mode 100644 api/src/main/java/com/wx/application/core/service/GraphTaskService.java create mode 100644 api/src/main/java/com/wx/application/core/service/OntologyConceptService.java create mode 100644 api/src/main/java/com/wx/application/core/service/OntologyFieldService.java create mode 100644 api/src/main/java/com/wx/application/core/service/OntologyRelationService.java create mode 100644 api/src/main/java/com/wx/application/core/service/OntologyService.java create mode 100644 api/src/main/java/com/wx/application/core/service/QuestionQaService.java create mode 100644 api/src/main/java/com/wx/application/core/service/RiskUserService.java create mode 100644 api/src/main/java/com/wx/application/exception/CommonException.java create mode 100644 api/src/main/java/com/wx/application/exception/GlobalExceptionHandler.java create mode 100644 api/src/main/java/com/wx/application/filter/GlobalRequestBodyAdvice.java create mode 100644 api/src/main/java/com/wx/application/filter/GlobalResponseBodyAdvice.java create mode 100644 api/src/main/java/com/wx/application/filter/JwtAuthFilter.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/FieldsUtils.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/Generators.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphClient.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphConfig.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/base/ResultSetUtils.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/ModelEdgeLine.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/ModelVertex.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdge.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdgeLine.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaField.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaIndex.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaSpace.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaTag.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/bean/NebulaVertex.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaImportController.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaModelController.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/enums/DataType.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/enums/IndexType.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/enums/VidType.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/factory/NebulaGraphClient.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/factory/NebulaSessionProperties.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/factory/SessionConfigure.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/factory/SessionFactory.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/NebulaModel.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/NebulaNode.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/NebulaPath.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/NebulaRelation.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/Page.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/PageRequest.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/TermQuery.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/query/TermQueryBuilder.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/ImportGraphInExcelService.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/ImportGraphInJsonService.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/ImportModelService.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/ImportSchemaService.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/NebulaModelService.java create mode 100644 api/src/main/java/com/wx/application/nebula/graph/service/NebulaOperateService.java create mode 100644 api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java create mode 100644 api/src/main/java/com/wx/application/util/DateUtils.java create mode 100644 api/src/main/java/com/wx/application/util/FileUitls.java create mode 100644 api/src/main/java/com/wx/application/util/InputStreamCache.java create mode 100644 api/src/main/java/com/wx/application/util/J8listUtils.java create mode 100644 api/src/main/java/com/wx/application/util/JSONUtils.java create mode 100644 api/src/main/java/com/wx/application/util/JwtUtils.java create mode 100644 api/src/main/java/com/wx/application/util/MD5Util.java create mode 100644 api/src/main/java/com/wx/application/util/MyStringUtils.java create mode 100644 api/src/main/java/com/wx/application/util/UUIDGenerator.java create mode 100644 api/src/main/java/com/wx/application/util/UnicodeDecode.java create mode 100644 api/src/main/resources/_templates/controller.java.vm create mode 100644 api/src/main/resources/_templates/entity.java.vm create mode 100644 api/src/main/resources/_templates/entity.kt.vm create mode 100644 api/src/main/resources/_templates/mapper.java.vm create mode 100644 api/src/main/resources/_templates/mapper.xml.vm create mode 100644 api/src/main/resources/_templates/queryQ.java.vm create mode 100644 api/src/main/resources/_templates/service.java.vm create mode 100644 api/src/main/resources/_templates/serviceImpl.java.vm create mode 100644 api/src/main/resources/_templates/template.html.vm create mode 100644 api/src/main/resources/application.yml create mode 100644 api/src/main/resources/banner.txt create mode 100644 api/src/main/resources/config.properties create mode 100644 api/src/main/resources/logback.xml create mode 100644 api/src/main/resources/mapper/GraphCaseMapper.xml create mode 100644 api/src/main/resources/mapper/GraphTaskMapper.xml create mode 100644 api/src/main/resources/mapper/OntologyConceptMapper.xml create mode 100644 api/src/main/resources/mapper/OntologyFieldMapper.xml create mode 100644 api/src/main/resources/mapper/OntologyMapper.xml create mode 100644 api/src/main/resources/mapper/OntologyRelationMapper.xml create mode 100644 api/src/main/resources/mapper/QuestionQaMapper.xml create mode 100644 api/src/main/resources/mapper/RemarkTaskMapper.xml create mode 100644 api/src/main/resources/mapper/RiskUserMapper.xml create mode 100644 api/src/main/resources/message.properties create mode 100644 api/src/test/java/HashUtilTest.java create mode 100644 api/src/test/java/JSONTest.java create mode 100644 api/src/test/java/StringTest.java create mode 100644 api/src/test/java/TreeNode.java create mode 100644 api/src/test/java/TreeNodeTest.java create mode 100644 api/src/test/java/ZzbdsTest.java create mode 100644 web/.gitignore create mode 100644 web/README.md create mode 100644 web/babel.config.js create mode 100644 web/package-lock.json create mode 100644 web/package.json create mode 100644 web/postcss.config.js create mode 100644 web/public/index.html create mode 100644 web/public/实例数据.zip create mode 100644 web/public/武器装备-本体模型.xlsx create mode 100644 web/src/App.vue create mode 100644 web/src/api/user.js create mode 100644 web/src/assets/404_images/404.png create mode 100644 web/src/assets/404_images/404_cloud.png create mode 100644 web/src/assets/image/614/1a.jpg create mode 100644 web/src/assets/image/614/1b.jpg create mode 100644 web/src/assets/image/614/2a.jpg create mode 100644 web/src/assets/image/614/2b.jpg create mode 100644 web/src/assets/image/614/2c.jpg create mode 100644 web/src/assets/image/614/2d.jpg create mode 100644 web/src/assets/image/614/2f.jpg create mode 100644 web/src/assets/image/614/3a.jpg create mode 100644 web/src/assets/image/614/3b.jpg create mode 100644 web/src/assets/image/614/3c.jpg create mode 100644 web/src/assets/image/614/3d.jpg create mode 100644 web/src/assets/image/614/3e.jpg create mode 100644 web/src/assets/image/614/3f.jpg create mode 100644 web/src/assets/image/614/3g.jpg create mode 100644 web/src/assets/image/614/3h.jpg create mode 100644 web/src/assets/image/614/3i.jpg create mode 100644 web/src/assets/image/614/3j.jpg create mode 100644 web/src/assets/image/614/3k.jpg create mode 100644 web/src/assets/image/614/3l.jpg create mode 100644 web/src/assets/image/614/3m.jpg create mode 100644 web/src/assets/image/614/3n.jpg create mode 100644 web/src/assets/image/614/3o.jpg create mode 100644 web/src/assets/image/614/3p.jpg create mode 100644 web/src/assets/image/614/3q.jpg create mode 100644 web/src/assets/image/614/4a.jpg create mode 100644 web/src/assets/image/614/4b.jpg create mode 100644 web/src/assets/image/614/4c.jpg create mode 100644 web/src/assets/image/614/4d.jpg create mode 100644 web/src/assets/image/614/4e.jpg create mode 100644 web/src/assets/image/614/4f.jpg create mode 100644 web/src/assets/image/614/4g.jpg create mode 100644 web/src/assets/image/614/4h.jpg create mode 100644 web/src/assets/image/614/4j.jpg create mode 100644 web/src/assets/image/614/5a.jpg create mode 100644 web/src/assets/image/614/5b.jpg create mode 100644 web/src/assets/image/614/5c.jpg create mode 100644 web/src/assets/image/614/5d.jpg create mode 100644 web/src/assets/image/614/5e.jpg create mode 100644 web/src/assets/image/614/5f.jpg create mode 100644 web/src/assets/image/614/5g.jpg create mode 100644 web/src/assets/image/614/5h.jpg create mode 100644 web/src/assets/image/614/6a.jpg create mode 100644 web/src/assets/image/614/6b.jpg create mode 100644 web/src/assets/image/614/6c.jpg create mode 100644 web/src/assets/image/614/6d.jpg create mode 100644 web/src/assets/image/614/6e.jpg create mode 100644 web/src/assets/image/614/6f.jpg create mode 100644 web/src/assets/image/614/6g.jpg create mode 100644 web/src/assets/image/icon/arrowTop-fill-active.png create mode 100644 web/src/assets/image/icon/arrowTop-fill.png create mode 100644 web/src/assets/image/icon/baocun.png create mode 100644 web/src/assets/image/icon/bg-add.png create mode 100644 web/src/assets/image/icon/changyonggoupiaorenshanchu.png create mode 100644 web/src/assets/image/icon/fanhui.png create mode 100644 web/src/assets/image/icon/search.png create mode 100644 web/src/assets/image/icon/shuxingicon.png create mode 100644 web/src/assets/image/icon/shuxingtu.png create mode 100644 web/src/assets/image/icon/tongji.png create mode 100644 web/src/assets/image/icon/tupian.png create mode 100644 web/src/assets/image/manage-bg.jpg create mode 100644 web/src/assets/index.css create mode 100644 web/src/components/dialog/EdgeAdd.vue create mode 100644 web/src/components/dialog/EdgeDetail.vue create mode 100644 web/src/components/dialog/EdgeTypeModify.vue create mode 100644 web/src/components/dialog/GraphSpaceAdd.vue create mode 100644 web/src/components/dialog/GraphSpaceAdd1.vue create mode 100644 web/src/components/dialog/IndexAdd.vue create mode 100644 web/src/components/dialog/NodeDetail.vue create mode 100644 web/src/components/dialog/NoumenonEdgeModify.vue create mode 100644 web/src/components/dialog/NoumenonInfo.vue create mode 100644 web/src/components/dialog/NoumenonModify.vue create mode 100644 web/src/components/dialog/TagModify.vue create mode 100644 web/src/components/dialog/TreeGraphInfo.vue create mode 100644 web/src/components/dialog/TreeGraphInfo2.vue create mode 100644 web/src/components/graph/Graph.vue create mode 100644 web/src/components/graph/Graph614.vue create mode 100644 web/src/components/graph/GraphModel.vue create mode 100644 web/src/components/graph/GraphModel20220927.vue create mode 100644 web/src/components/graph/GraphSpace.vue create mode 100644 web/src/components/graph/Graph_x6.vue create mode 100644 web/src/components/graph/config.js create mode 100644 web/src/components/log/index.vue create mode 100644 web/src/components/menus/614/AuxiliaryMaintenance.vue create mode 100644 web/src/components/menus/614/IndexPage.vue create mode 100644 web/src/components/menus/614/InfoConverge.vue create mode 100644 web/src/components/menus/614/InfoExtract.vue create mode 100644 web/src/components/menus/614/LinkPrediction.vue create mode 100644 web/src/components/menus/614/RiskPrediction.vue create mode 100644 web/src/components/menus/AlgorithmPublishing.vue create mode 100644 web/src/components/menus/AlgorithmSpeedVerification.vue create mode 100644 web/src/components/menus/CodeWarehouse.vue create mode 100644 web/src/components/menus/DataRepeatRate.vue create mode 100644 web/src/components/menus/DataSetCompare.vue create mode 100644 web/src/components/menus/DataSetManage.vue create mode 100644 web/src/components/menus/GraphAssessment.vue create mode 100644 web/src/components/menus/GraphExhibition.vue create mode 100644 web/src/components/menus/GraphImport.vue create mode 100644 web/src/components/menus/GraphImport1.vue create mode 100644 web/src/components/menus/GraphModel.vue create mode 100644 web/src/components/menus/GraphPath.vue create mode 100644 web/src/components/menus/GraphRecommend.vue create mode 100644 web/src/components/menus/GraphRelation.vue create mode 100644 web/src/components/menus/GraphShow.vue create mode 100644 web/src/components/menus/GraphSpaceManage.vue create mode 100644 web/src/components/menus/GraphSpaceSet.vue create mode 100644 web/src/components/menus/KnowledgeFusion.vue create mode 100644 web/src/components/menus/KnowledgeQuestion.vue create mode 100644 web/src/components/menus/ModelManage.vue create mode 100644 web/src/components/menus/NodeManage.vue create mode 100644 web/src/components/menus/NoumenonModelImport.vue create mode 100644 web/src/components/menus/ReasonGraph.vue create mode 100644 web/src/components/menus/ServiceManage.vue create mode 100644 web/src/components/menus/TextTag.vue create mode 100644 web/src/components/xterm/index.vue create mode 100644 web/src/main.js create mode 100644 web/src/permission.js create mode 100644 web/src/router/index.js create mode 100644 web/src/settings.js create mode 100644 web/src/store/getters.js create mode 100644 web/src/store/index.js create mode 100644 web/src/store/modules/app.js create mode 100644 web/src/store/modules/settings.js create mode 100644 web/src/store/modules/user.js create mode 100644 web/src/utils/auth.js create mode 100644 web/src/utils/common.js create mode 100644 web/src/utils/get-page-title.js create mode 100644 web/src/utils/menu.js create mode 100644 web/src/utils/request.js create mode 100644 web/src/utils/request2.js create mode 100644 web/src/utils/request3.js create mode 100644 web/src/utils/request614.js create mode 100644 web/src/utils/xterm-addon/LICENSE create mode 100644 web/src/utils/xterm-addon/README.md create mode 100644 web/src/utils/xterm-addon/lib/xterm-addon-attach.js create mode 100644 web/src/utils/xterm-addon/lib/xterm-addon-attach.js.map create mode 100644 web/src/utils/xterm-addon/out/AttachAddon.api.js.map create mode 100644 web/src/utils/xterm-addon/out/AttachAddon.js create mode 100644 web/src/utils/xterm-addon/out/AttachAddon.js.map create mode 100644 web/src/utils/xterm-addon/package.json create mode 100644 web/src/utils/xterm-addon/src/AttachAddon.ts create mode 100644 web/src/utils/xterm-addon/typings/xterm-addon-attach.d.ts create mode 100644 web/src/utils/xterm/LICENSE create mode 100644 web/src/utils/xterm/README.md create mode 100644 web/src/utils/xterm/css/xterm.css create mode 100644 web/src/utils/xterm/lib/xterm.js create mode 100644 web/src/utils/xterm/lib/xterm.js.map create mode 100644 web/src/utils/xterm/package.json create mode 100644 web/src/utils/xterm/src/AccessibilityManager.ts create mode 100644 web/src/utils/xterm/src/InputHandler.ts create mode 100644 web/src/utils/xterm/src/Terminal.ts create mode 100644 web/src/utils/xterm/src/Types.d.ts create mode 100644 web/src/utils/xterm/src/browser/Clipboard.ts create mode 100644 web/src/utils/xterm/src/browser/Color.ts create mode 100644 web/src/utils/xterm/src/browser/ColorContrastCache.ts create mode 100644 web/src/utils/xterm/src/browser/ColorManager.ts create mode 100644 web/src/utils/xterm/src/browser/Lifecycle.ts create mode 100644 web/src/utils/xterm/src/browser/Linkifier.ts create mode 100644 web/src/utils/xterm/src/browser/LocalizableStrings.ts create mode 100644 web/src/utils/xterm/src/browser/MouseZoneManager.ts create mode 100644 web/src/utils/xterm/src/browser/RenderDebouncer.ts create mode 100644 web/src/utils/xterm/src/browser/ScreenDprMonitor.ts create mode 100644 web/src/utils/xterm/src/browser/Types.d.ts create mode 100644 web/src/utils/xterm/src/browser/Viewport.ts create mode 100644 web/src/utils/xterm/src/browser/input/CompositionHelper.ts create mode 100644 web/src/utils/xterm/src/browser/input/Mouse.ts create mode 100644 web/src/utils/xterm/src/browser/input/MoveToCell.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/BaseRenderLayer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/CharacterJoinerRegistry.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/CursorRenderLayer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/GridCache.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/LinkRenderLayer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/Renderer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/RendererUtils.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/SelectionRenderLayer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/TextRenderLayer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/Types.d.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/BaseCharAtlas.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/CharAtlasCache.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/CharAtlasUtils.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/Constants.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/DynamicCharAtlas.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/LRUMap.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/atlas/Types.d.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/dom/DomRenderer.ts create mode 100644 web/src/utils/xterm/src/browser/renderer/dom/DomRendererRowFactory.ts create mode 100644 web/src/utils/xterm/src/browser/selection/SelectionModel.ts create mode 100644 web/src/utils/xterm/src/browser/selection/Types.d.ts create mode 100644 web/src/utils/xterm/src/browser/services/CharSizeService.ts create mode 100644 web/src/utils/xterm/src/browser/services/CoreBrowserService.ts create mode 100644 web/src/utils/xterm/src/browser/services/MouseService.ts create mode 100644 web/src/utils/xterm/src/browser/services/RenderService.ts create mode 100644 web/src/utils/xterm/src/browser/services/SelectionService.ts create mode 100644 web/src/utils/xterm/src/browser/services/Services.ts create mode 100644 web/src/utils/xterm/src/browser/services/SoundService.ts create mode 100644 web/src/utils/xterm/src/browser/tsconfig.json create mode 100644 web/src/utils/xterm/src/common/CharWidth.ts create mode 100644 web/src/utils/xterm/src/common/CircularList.ts create mode 100644 web/src/utils/xterm/src/common/Clone.ts create mode 100644 web/src/utils/xterm/src/common/EventEmitter.ts create mode 100644 web/src/utils/xterm/src/common/Lifecycle.ts create mode 100644 web/src/utils/xterm/src/common/Platform.ts create mode 100644 web/src/utils/xterm/src/common/TypedArrayUtils.ts create mode 100644 web/src/utils/xterm/src/common/Types.d.ts create mode 100644 web/src/utils/xterm/src/common/WindowsMode.ts create mode 100644 web/src/utils/xterm/src/common/buffer/AttributeData.ts create mode 100644 web/src/utils/xterm/src/common/buffer/Buffer.ts create mode 100644 web/src/utils/xterm/src/common/buffer/BufferLine.ts create mode 100644 web/src/utils/xterm/src/common/buffer/BufferReflow.ts create mode 100644 web/src/utils/xterm/src/common/buffer/BufferSet.ts create mode 100644 web/src/utils/xterm/src/common/buffer/CellData.ts create mode 100644 web/src/utils/xterm/src/common/buffer/Constants.ts create mode 100644 web/src/utils/xterm/src/common/buffer/Marker.ts create mode 100644 web/src/utils/xterm/src/common/buffer/Types.d.ts create mode 100644 web/src/utils/xterm/src/common/data/Charsets.ts create mode 100644 web/src/utils/xterm/src/common/data/EscapeSequences.ts create mode 100644 web/src/utils/xterm/src/common/input/Keyboard.ts create mode 100644 web/src/utils/xterm/src/common/input/TextDecoder.ts create mode 100644 web/src/utils/xterm/src/common/input/WriteBuffer.ts create mode 100644 web/src/utils/xterm/src/common/parser/Constants.ts create mode 100644 web/src/utils/xterm/src/common/parser/DcsParser.ts create mode 100644 web/src/utils/xterm/src/common/parser/EscapeSequenceParser.ts create mode 100644 web/src/utils/xterm/src/common/parser/OscParser.ts create mode 100644 web/src/utils/xterm/src/common/parser/Params.ts create mode 100644 web/src/utils/xterm/src/common/parser/Types.d.ts create mode 100644 web/src/utils/xterm/src/common/services/BufferService.ts create mode 100644 web/src/utils/xterm/src/common/services/CoreMouseService.ts create mode 100644 web/src/utils/xterm/src/common/services/CoreService.ts create mode 100644 web/src/utils/xterm/src/common/services/DirtyRowService.ts create mode 100644 web/src/utils/xterm/src/common/services/InstantiationService.ts create mode 100644 web/src/utils/xterm/src/common/services/LogService.ts create mode 100644 web/src/utils/xterm/src/common/services/OptionsService.ts create mode 100644 web/src/utils/xterm/src/common/services/ServiceRegistry.ts create mode 100644 web/src/utils/xterm/src/common/services/Services.ts create mode 100644 web/src/utils/xterm/src/common/tsconfig.json create mode 100644 web/src/utils/xterm/src/public/AddonManager.ts create mode 100644 web/src/utils/xterm/src/public/Terminal.ts create mode 100644 web/src/utils/xterm/src/tsconfig-base.json create mode 100644 web/src/utils/xterm/src/tsconfig-library-base.json create mode 100644 web/src/utils/xterm/src/tsconfig.json create mode 100644 web/src/utils/xterm/tsconfig.all.json create mode 100644 web/src/utils/xterm/typings/xterm.d.ts create mode 100644 web/src/views/404.vue create mode 100644 web/src/views/Index.vue create mode 100644 web/src/views/Login.vue create mode 100644 web/vue.config.js diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000..8f9d462 --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,13 @@ +/.factorypath +/.project +/.apt_generated +/.settings +/target +/.classpath +@logs_path@ +/logs +.idea +*.iml +!/src/main/resources/config/spring-redisson.yaml +!/src/main/resources/application.yml +/doc diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 0000000..f042786 --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,11 @@ +FROM docker.io/openjdk:8u151-slim + +MAINTAINER saber "saber.zhicheng@foxmail.com" + +EXPOSE 10010 + +RUN mkdir -p /opt/app/java +COPY target/application.jar /opt/app/java/application.jar +RUN mkdir -p /etc/java +COPY target/classes/config.properties /etc/java/application.conf +CMD ["java", "-XX:+UseParNewGC", "-XX:+CMSParallelRemarkEnabled", "-XX:ParallelGCThreads=10", "-XX:+CMSScavengeBeforeRemark", "-XX:ParallelCMSThreads=10", "-XX:+CMSPermGenSweepingEnabled", "-XX:+CMSClassUnloadingEnabled", "-Xmx4096m", "-Xms512m", "-XX:PermSize=512m", "-XX:MaxPermSize=4096m", "-Dspring.application.name=syria-api", "-DCONFIG_FILE=file:/etc/java/application.conf", "-Dfile.encoding=UTF8", "-Duser.timezone=GMT+08", "-jar", "/opt/app/java/application.jar"] diff --git a/api/apidoc.json b/api/apidoc.json new file mode 100644 index 0000000..5c101f7 --- /dev/null +++ b/api/apidoc.json @@ -0,0 +1,15 @@ +{ + "name": "SpringBootAPIs", + "version": "1.0.0", + "description": "接口文档", + "title": "SpringBootAPIs", + "url": "http://1.116.164.215/api", + "header": { + "title": "文档说明", + "filename": "header.md" + }, + "footer": { + "title": "文档结尾", + "filename": "footer.md" + } +} diff --git a/api/footer.md b/api/footer.md new file mode 100644 index 0000000..d67d8da --- /dev/null +++ b/api/footer.md @@ -0,0 +1,2 @@ +### 感谢查阅 +以上文档仅供参考,如有疑问或实际接口与文档不符请联系相关负责人。 diff --git a/api/header.md b/api/header.md new file mode 100644 index 0000000..2f49c28 --- /dev/null +++ b/api/header.md @@ -0,0 +1 @@ +本文档仅供内部查阅,谢绝公开,感谢大家配合。 diff --git a/api/init_doc.bat b/api/init_doc.bat new file mode 100644 index 0000000..c377b4f --- /dev/null +++ b/api/init_doc.bat @@ -0,0 +1,4 @@ +@echo off +apidoc.cmd -i src/ -o doc/ +pause + diff --git a/api/package-lock.json b/api/package-lock.json new file mode 100644 index 0000000..48e341a --- /dev/null +++ b/api/package-lock.json @@ -0,0 +1,3 @@ +{ + "lockfileVersion": 1 +} diff --git a/api/pom.xml b/api/pom.xml new file mode 100644 index 0000000..3702126 --- /dev/null +++ b/api/pom.xml @@ -0,0 +1,444 @@ + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.3.0.RELEASE + + + + com.wx + recom-gorse-api + 0.0.1-SNAPSHOT + application + 后端API + + + UTF-8 + UTF-8 + 1.8 + 1.2.73 + 1.1.6 + 3.1.2 + 5.8.4 + 3.0.0 + 0.10.7 + 3.2.1 + + + + + org.springframework.boot + spring-boot-starter + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-to-slf4j + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-to-slf4j + + + + + + org.springframework.boot + spring-boot-starter-validation + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + + + + + org.springframework.boot + spring-boot-starter-aop + + + + org.projectlombok + lombok + true + + + + mysql + mysql-connector-java + + + + com.alibaba + fastjson + ${fastjson.version} + + + + com.alibaba + druid + ${druid.version} + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis.plus.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + + + org.apache.commons + commons-lang3 + + + + commons-lang + commons-lang + 2.6 + + + + com.google.guava + guava + 28.0-jre + + + + junit + junit + test + + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-to-slf4j + + + + + + + com.baomidou + mybatis-plus-generator + 3.2.0 + + + org.apache.velocity + velocity-engine-core + 2.1 + + + org.bouncycastle + bcprov-jdk16 + 1.46 + + + + + io.jsonwebtoken + jjwt-api + ${jwt.version} + + + io.jsonwebtoken + jjwt-impl + ${jwt.version} + + + io.jsonwebtoken + jjwt-jackson + ${jwt.version} + + + + + + org.apache.poi + poi-scratchpad + 5.0.0 + + + + org.apache.poi + poi + 5.0.0 + + + org.apache.poi + poi-ooxml + 5.0.0 + + + org.apache.xmlbeans + xmlbeans + 5.0.0 + + + org.apache.poi + poi-ooxml-schemas + 4.1.2 + + + + net.sourceforge.javacsv + javacsv + 2.0 + + + + com.baomidou + kaptcha-spring-boot-starter + 1.0.0 + + + + + com.tencent.cloud + cos-sts-java + 3.0.6 + + + + com.qcloud + cos_api + 5.6.19 + + + + com.google.zxing + core + 3.4.0 + + + + com.google.zxing + javase + 3.4.0 + + + + com.tencentcloudapi + tencentcloud-sdk-java + 3.1.37 + + + + com.alibaba + easyexcel + 2.1.6 + + + + + com.carrotsearch + hppc + 0.8.2 + + + + com.vesoft + client + 3.0.0 + + + + + + recom-gorse + + + + src/main/resources + true + + static/css/** + static/data/** + static/docs/** + static/fonts/** + static/img/** + static/plugins/** + static/view/** + + + + + + + maven-jar-plugin + + + _templates/** + + + + + maven-resources-plugin + + + @ + + false + + + + + copy-application-yml + deploy + + copy-resources + + + ${basedir}/target + + + src/main/resources + + config.properties + + + + + + + copy-zips + process-sources + + copy-resources + + + ${basedir}/target/classes + + + + + + + + + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + false + false + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + + repackage + + + com.wx.application.Application + + + + + + + + + + dev + + jdbc:mysql://43.139.83.67:13306/dn_nebula + root + AJuSP7F7VTRvm7rk + 4026 + ./logs/ + true + D:/nebulagraph/ + D:/myReadCSV/southeastuniversity/jszb/ + true + 43.139.83.67 + 9669 + root + 123456 + + + true + + + + + diff --git a/api/scripts/build_dev.sh b/api/scripts/build_dev.sh new file mode 100644 index 0000000..7ab0b12 --- /dev/null +++ b/api/scripts/build_dev.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -e + +function parentDir() +{ + local this_dir=`pwd` + local child_dir="$1" + dirname "$child_dir" + cd $this_dir +} + +CURRENT_PATH=$(cd `dirname $0`; pwd) + +DOCKER_IMAGE_NAME='syria/java-api:latest' + +DOCKER_CONTAINER_NAME='syria-java-api' + +DOCKER_CONTAINER_PORT=40010 + +workSpace=`parentDir "$CURRENT_PATH"` + +echo '更新代码' +git pull + +echo '工作空间'$workSpace +cd $workSpace + +echo '开始打包' +mvn clean install -Dmaven.test.skip=true -Pdev + +echo '开始构建docker镜像' +docker build -t $DOCKER_IMAGE_NAME . + +count=`docker ps -a|grep $DOCKER_CONTAINER_NAME|wc -l` +if [ $count != 0 ];then + echo "准备移除容器 $DOCKER_CONTAINER_NAME ..." + docker rm -f $DOCKER_CONTAINER_NAME +else + echo "准备启动容器 $DOCKER_CONTAINER_NAME ..." +fi + +docker run -d --restart always --net=host --add-host redis:127.0.0.1 --name $DOCKER_CONTAINER_NAME -v /var/log:/var/log -v /data/medical-follow:/data -v /etc/syria.conf:/etc/java/application.conf -it $DOCKER_IMAGE_NAME + +docker images|grep -v REPOSITORY|grep none|awk '{print $3}'|xargs docker rmi + +exit 0 diff --git a/api/src/main/java/com/wx/application/Application.java b/api/src/main/java/com/wx/application/Application.java new file mode 100644 index 0000000..6f41995 --- /dev/null +++ b/api/src/main/java/com/wx/application/Application.java @@ -0,0 +1,72 @@ +package com.wx.application; + +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.PropertySource; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +/** + * https://nebula-graph.com.cn/ + * es 检查索引是否存在https://blog.csdn.net/qq_29631809/article/details/72172017 + * es 创建索引https://blog.csdn.net/weixin_41507324/article/details/110862169 + */ +@SpringBootApplication +@MapperScan(basePackages = {"com.wx.application.*.mapper*"}) +@ServletComponentScan(basePackages = {"com.wx.application.filter"}) +@EnableScheduling +@EnableAsync +@PropertySource("${CONFIG_FILE:classpath:config.properties}") +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + public HttpMessageConverters fastJsonHttpMessageConverters() { + MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); + HttpMessageConverter converter = jackson2HttpMessageConverter; + return new HttpMessageConverters(converter); + } + + /** + * 分页插件 + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + + @Bean + public CorsFilter corsFilter() { + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + final CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); // 允许cookies跨域 + config.addAllowedOrigin("*");// #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin + config.addAllowedHeader("*");// #允许访问的头信息,*表示全部 + config.addExposedHeader("Authorization");// #允许访问的头信息,*表示全部 + config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 + config.addAllowedMethod("OPTIONS");// 允许提交请求的方法,*表示全部允许 + config.addAllowedMethod("HEAD"); + config.addAllowedMethod("GET");// 允许Get的请求方法 + config.addAllowedMethod("PUT"); + config.addAllowedMethod("POST"); + config.addAllowedMethod("DELETE"); + config.addAllowedMethod("PATCH"); + source.registerCorsConfiguration("/**", config); + + return new CorsFilter(source); + } + +} diff --git a/api/src/main/java/com/wx/application/adapter/controller/LoginController.java b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java new file mode 100644 index 0000000..fb44872 --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/controller/LoginController.java @@ -0,0 +1,180 @@ +package com.wx.application.adapter.controller; + +import java.security.AlgorithmParameters; +import java.security.Security; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +import org.bouncycastle.jce.provider.BouncyCastleProvider; +//import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.kaptcha.Kaptcha; +import com.google.common.collect.ImmutableMap; +import com.wx.application.adapter.dto.qo.RiskUserQ; +import com.wx.application.base.BaseController; +import com.wx.application.base.ErrorCodeEnum; +import com.wx.application.base.ResponseData; +import com.wx.application.constant.CONSTANT; +import com.wx.application.core.entity.RiskUser; +import com.wx.application.core.service.RiskUserService; +import com.wx.application.util.JwtUtils; +import com.wx.application.util.MD5Util; + +import cn.hutool.core.codec.Base64; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/login") +@RestController("loginController") +public class LoginController extends BaseController { + + @Autowired + RiskUserService riskUserService; + + /*@Autowired + RedissonClient redissonClient;*/ + + @Autowired + private Kaptcha kaptcha; + + /** + * @api {post} /login/captcha 获取验证码 + * @apiName 获取验证码 + * @apiGroup Login + * @apiParam {String} name 角色名称 + * @apiParam {String} description 角色描述 + * @apiParam {Boolean} isAssistant 是否为医生助理 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * } + * @apiDescription 向后端申请一个验证码 + * 返回验证码的图片流,并且存入对应cookie_id + * 登录时传入对应cookie_id,用来验证对应错误码 + * --------------------------------- + * @author : zj + * @since : Create in 2021-05-08 + */ + @RequestMapping("captcha") + public void captcha() { + kaptcha.render(); + } + + + /** + * 登录 + */ + @PostMapping(value = "/user") + public ResponseData login(@RequestBody RiskUserQ loginQo) throws Exception { + +// if(StringUtils.isBlank(loginQo.getCode())) { +// Map data = new HashMap<>(); +// data.put("msg", "验证码不能为空"); +// return error(ErrorCodeEnum.USER_NOT_EXIST,data); +// } +// +// try { +// kaptcha.validate(loginQo.getCode()); +// } catch (Exception e) { +// Map data = new HashMap<>(); +// data.put("msg", "验证码错误"); +// return error(ErrorCodeEnum.USER_NOT_EXIST,data); +// } + + /*if(StringUtils.isBlank(loginQo.getCode())) { + Map data = new HashMap<>(); + data.put("msg", "验证码不能为空"); + return error(ErrorCodeEnum.USER_NOT_EXIST,data); + } + + try { + kaptcha.validate(loginQo.getCode()); + } catch (Exception e) { + Map data = new HashMap<>(); + data.put("msg", "验证码错误"); + return error(ErrorCodeEnum.USER_NOT_EXIST,data); + }*/ + + /** + * 将密码改成md5加密查询 + */ + Map mQ = new HashMap<>(); + mQ.put("EQS_username", loginQo.getUsername()); + mQ.put("EQS_password", MD5Util.MD5(loginQo.getPassword())); + mQ.put("EQS_type", loginQo.getType()); + + RiskUser riskUser = riskUserService.queryUnique(mQ); + + if(riskUser != null) { + String token = JwtUtils.generateJwtToken(riskUser.getId(), CONSTANT.LOGIN_TYPE_ADMIN, riskUser); + + RiskUser _riskUser = new RiskUser(); + _riskUser.setRealname(riskUser.getRealname()); + _riskUser.setUsername(riskUser.getUsername()); + + return success(ImmutableMap.builder() + .put("Authorization",token) + .put("user", _riskUser) + .build()); + } + Map data = new HashMap<>(); + data.put("msg", "用户名密码错误"); + return error(ErrorCodeEnum.USER_NOT_EXIST,data); + } + + /** + * 解密用户敏感数据获取用户信息 + * + * @param sessionKey 数据进行加密签名的密钥 + * @param encryptedData 包括敏感数据在内的完整用户信息的加密数据 + * @param iv 加密算法的初始向量 + * @return + */ + public static JSONObject getUserInfo(String encryptedData, String sessionKey, String iv) { + // 被加密的数据 + byte[] dataByte = Base64.decode(encryptedData); + // 加密秘钥 + byte[] keyByte = Base64.decode(sessionKey); + // 偏移量 + byte[] ivByte = Base64.decode(iv); + try { + // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要 + int base = 16; + if (keyByte.length % base != 0) { + int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0); + byte[] temp = new byte[groups * base]; + Arrays.fill(temp, (byte) 0); + System.arraycopy(keyByte, 0, temp, 0, keyByte.length); + keyByte = temp; + } + // 初始化 + Security.addProvider(new BouncyCastleProvider()); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); + SecretKeySpec spec = new SecretKeySpec(keyByte, "AES"); + AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES"); + parameters.init(new IvParameterSpec(ivByte)); + cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化 + byte[] resultByte = cipher.doFinal(dataByte); + if (null != resultByte && resultByte.length > 0) { + String result = new String(resultByte, "UTF-8"); + return JSON.parseObject(result); + } + } catch (Exception e) { + + } + return null; + } + +} diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java new file mode 100644 index 0000000..eaac1d1 --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskExecuteQ.java @@ -0,0 +1,16 @@ +package com.wx.application.adapter.dto.qo; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class GraphTaskExecuteQ { + + private Long taskId; + + private List taskFiles; + +} diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java new file mode 100644 index 0000000..2f291fc --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/dto/qo/GraphTaskFileExecuteQ.java @@ -0,0 +1,37 @@ +package com.wx.application.adapter.dto.qo; + +import com.wx.application.nebula.graph.enums.IndexType; + +import cn.hutool.json.JSONObject; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class GraphTaskFileExecuteQ { + + /** + * GraphTaskFile + */ + private Long taskFileId; + + /** + * 当前导入的是tag 还是 edge + */ + private IndexType type; + /** + * tag + * edge 名称 + */ + private String name; + + /** + * 对应关系 + * { + * 属性名 : 文件header 名称 + * name: "姓名" + * } + */ + private JSONObject correspond; + +} diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java new file mode 100644 index 0000000..6135834 --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/dto/qo/OntologyQ.java @@ -0,0 +1,12 @@ +package com.wx.application.adapter.dto.qo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class OntologyQ { + + private String label; + +} diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java new file mode 100644 index 0000000..c50ca44 --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/dto/qo/RemarkTaskRemoveOntologyQ.java @@ -0,0 +1,16 @@ +package com.wx.application.adapter.dto.qo; + +import javax.validation.constraints.NotNull; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class RemarkTaskRemoveOntologyQ { + + @NotNull(message = "remarkId不能为空") + private Long remarkId; + + private Long ontologyId; +} diff --git a/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java b/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java new file mode 100644 index 0000000..e17710f --- /dev/null +++ b/api/src/main/java/com/wx/application/adapter/dto/qo/RiskUserQ.java @@ -0,0 +1,59 @@ +package com.wx.application.adapter.dto.qo; + +public class RiskUserQ { + + private String code; + + private String username; + + private String realname; + + private String password; + + /** + * font 前端登录 + * admin 后端管理登录 + */ + private String type; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getRealname() { + return realname; + } + + public void setRealname(String realname) { + this.realname = realname; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + +} diff --git a/api/src/main/java/com/wx/application/base/BaseController.java b/api/src/main/java/com/wx/application/base/BaseController.java new file mode 100644 index 0000000..4fd5566 --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseController.java @@ -0,0 +1,65 @@ +package com.wx.application.base; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; +import org.springframework.context.NoSuchMessageException; +import org.springframework.context.i18n.LocaleContextHolder; + +import java.util.Locale; + +/** + * @author zj + * @description : 控制器的基类,抽象方法,标准控制器有crud4个方法 --------------------------------- + * @since 2017-11-14 + */ +public abstract class BaseController { + + private static MessageSource messageSource; + + @Autowired + public void setMessageSource(MessageSource messageSource) { + BaseController.messageSource = messageSource; + } + + public static ResponseData success() { + return success(null); + } + + public static ResponseData success(Object object) { + ResponseData rData = new ResponseData(); + rData.setCode(ErrorCodeEnum.SUCCESS.toString()); + rData.setMsg(getMsg(rData.getCode())); + rData.setData(object); + return rData; + } + + public static ResponseData success(Object object, String msg) { + ResponseData rData = new ResponseData(); + rData.setCode(ErrorCodeEnum.SUCCESS.toString()); + rData.setMsg(getMsg(rData.getCode())); + rData.setData(msg); + return rData; + } + + public static ResponseData error(ErrorCodeEnum errorCodeEnum) { + return error(errorCodeEnum, null); + } + + public static ResponseData error(ErrorCodeEnum errorCodeEnum, Object object) { + ResponseData rData = new ResponseData(); + rData.setCode(errorCodeEnum.toString()); + rData.setMsg(getMsg(rData.getCode())); + rData.setData(object); + return rData; + } + + protected static String getMsg(String code) { + Locale locale = LocaleContextHolder.getLocale(); + try { + return messageSource.getMessage(code, null, locale); + } catch (NoSuchMessageException ex) { + return ""; + } + } +} diff --git a/api/src/main/java/com/wx/application/base/BaseEntity.java b/api/src/main/java/com/wx/application/base/BaseEntity.java new file mode 100644 index 0000000..b5b2cc7 --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseEntity.java @@ -0,0 +1,34 @@ +package com.wx.application.base; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author zj + * @description : 实体基类 --------------------------------- + * @since 2017-10-27 + */ +@Data +public class BaseEntity { + + @TableId(value = "id", type = IdType.AUTO) + private FIDTYPE id;// 物理主键 + + @TableField(exist = false) + @JsonIgnore + private List ids; + + @JsonIgnore + @TableField(value = "is_remove", fill = FieldFill.INSERT) + @TableLogic + private Boolean remove; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; +} diff --git a/api/src/main/java/com/wx/application/base/BaseQueryApply.java b/api/src/main/java/com/wx/application/base/BaseQueryApply.java new file mode 100644 index 0000000..8f20b4f --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseQueryApply.java @@ -0,0 +1,13 @@ +package com.wx.application.base; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class BaseQueryApply { + String applySql; + + List value=new ArrayList<>(); +} diff --git a/api/src/main/java/com/wx/application/base/BaseQueryApplyOrderBy.java b/api/src/main/java/com/wx/application/base/BaseQueryApplyOrderBy.java new file mode 100644 index 0000000..7f0cdcb --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseQueryApplyOrderBy.java @@ -0,0 +1,15 @@ +package com.wx.application.base; + +import lombok.Data; + +@Data +public class BaseQueryApplyOrderBy { + String sql; + + Sort sort; + + public enum Sort { + ASC, + DESC, + } +} diff --git a/api/src/main/java/com/wx/application/base/BaseSearchService.java b/api/src/main/java/com/wx/application/base/BaseSearchService.java new file mode 100644 index 0000000..81fa79a --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseSearchService.java @@ -0,0 +1,196 @@ +package com.wx.application.base; + +import cn.hutool.core.map.MapUtil; +import com.wx.application.constant.CONSTANT; +import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import static com.baomidou.mybatisplus.extension.toolkit.SqlHelper.retBool; + +@SuppressWarnings({ "unchecked", "rawtypes" }) +public class BaseSearchService, M extends BaseMapper> { + @Autowired + protected M simpleMapper; + + + protected DynamicSpecifications dynamicSpecifications = new DynamicSpecifications(); + + /** + * 根据id查询一条 + * @param id + * @return + */ + public T queryOne(Serializable id){ + return (T) simpleMapper.selectById(id); + } + /** + * 读取一个对象 + * + * @return + */ + @Transactional(readOnly = true) + public T queryUnique(Map map) { + AbstractWrapper wrapper = dynamicSpecifications.parseSearchParams(map); + wrapper = (AbstractWrapper) wrapper.last("limit 1"); + return (T) simpleMapper.selectOne(wrapper); + } + + /** + * 读取一个对象 + * + * @return + */ + @Transactional(readOnly = true) + public T queryUnique(Map map,Map other) { + AbstractWrapper wrapper = dynamicSpecifications.parseSearchParams(map); + wrapper = (AbstractWrapper) wrapper.last("limit 1"); + // 循环map + for(Object key : other.keySet()){ + Object value = other.get(key); + wrapper.eq(key,value); + } + return (T) simpleMapper.selectOne(wrapper); + } + + /** + * 查询(根据ID 批量查询) + * + * @return + */ + @Transactional(readOnly = true) + public List queryBatchIds(List ids) { + if(ids==null || ids.isEmpty()){ + return null; + } + return simpleMapper.selectBatchIds(ids); + } + + /** + * 分页查询 + * + * @return + */ + @Transactional(readOnly = true) + public IPage queryPage(Map map) { + Long pageNum = MapUtil.getLong(map, CONSTANT.pageNumStr); + Long pageSize = MapUtil.getLong(map, CONSTANT.pageSizeStr); + if (null == pageNum) { + pageNum = CONSTANT.pageNum; + } + if (null == pageSize) { + pageSize = CONSTANT.pageSize; + } + return simpleMapper.selectPage(new Page(pageNum, pageSize), dynamicSpecifications.parseSearchParams(map)); + } + + /** + * 分页查询 + * + * @return + */ + @Transactional(readOnly = true) + public IPage queryPage(Map map,Map other) { + Long pageNum = MapUtil.getLong(map, CONSTANT.pageNumStr); + Long pageSize = MapUtil.getLong(map, CONSTANT.pageSizeStr); + if (null == pageNum) { + pageNum = CONSTANT.pageNum; + } + if (null == pageSize) { + pageSize = CONSTANT.pageSize; + } + AbstractWrapper wrapper = dynamicSpecifications.parseSearchParams(map); + // 循环map + for(Object key : other.keySet()){ + Object value = other.get(key); + wrapper.eq(key,value); + } + return simpleMapper.selectPage(new Page(pageNum, pageSize), wrapper); + } + + /** + * 查询全部 + * + * @return + */ + @Transactional(readOnly = true) + public List queryList(Map map) { + return simpleMapper.selectList(dynamicSpecifications.parseSearchParams(map)); + } + /** + * 查询全部 + * + * @return + */ + @Transactional(readOnly = true) + public List queryList(Map map,Map other) { + AbstractWrapper wrapper = dynamicSpecifications.parseSearchParams(map); + // 循环map + for(Object key : other.keySet()){ + Object value = other.get(key); + wrapper.eq(key,value); + } + return simpleMapper.selectList(wrapper); + } + + /** + * 删除数据 + * @param id + * @return + */ + @Transactional + public synchronized boolean remove(Serializable id) { + return retBool(simpleMapper.deleteById(id)); + } + + + /** + * 根据column-map删除 + * @param map + * @return + */ + @Transactional + public synchronized boolean remove(Map map){ + AbstractWrapper wrapper = new QueryWrapper(); + // 循环map + for(Object key : map.keySet()){ + Object value = map.get(key); + wrapper.eq(key,value); + } + return retBool(simpleMapper.delete(wrapper)); + } + + /** + * 修改数据 + * @param t + * @return + */ + @Transactional + public synchronized boolean modify(T t) { + if (null == t.getId()) { + throw new RuntimeException("参数异常"); + } + return retBool(simpleMapper.updateById(t)); + } + + /** + * 添加数据 + * @param t + * @return + */ + @Transactional + public synchronized boolean create(T t) { + if (null != t.getId()) { + throw new RuntimeException("参数异常"); + } + return retBool(simpleMapper.insert(t)); + } +} diff --git a/api/src/main/java/com/wx/application/base/BaseService.java b/api/src/main/java/com/wx/application/base/BaseService.java new file mode 100644 index 0000000..3cd4137 --- /dev/null +++ b/api/src/main/java/com/wx/application/base/BaseService.java @@ -0,0 +1,283 @@ +package com.wx.application.base; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.MapUtil; +import com.baomidou.mybatisplus.core.conditions.AbstractWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ReflectionKit; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.wx.application.constant.CONSTANT; + +import org.apache.ibatis.session.SqlSession; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import static com.baomidou.mybatisplus.extension.toolkit.SqlHelper.retBool; + +/*import org.springframework.beans.BeanUtils;*/ + + +/** + * @author zj + * @description : service 基类 + * --------------------------------- + * @since 2017-10-27 + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +public class BaseService, M extends BaseMapper> { + + @Autowired + protected M simpleMapper; + + protected DynamicSpecifications dynamicSpecifications = new DynamicSpecifications(); + + /** + * 读取一个对象 + * + * @return + */ + @Transactional(readOnly = true) + public T queryUnique(Map map) { + AbstractWrapper wrapper = dynamicSpecifications.bySearchFilter(SearchFilter.parse(map).values()); + wrapper = (AbstractWrapper) wrapper.last("limit 1"); + return (T) simpleMapper.selectOne(wrapper); + } + + /** + * 查询(根据ID 批量查询) + * + * @return + */ + @Transactional(readOnly = true) + public List queryBatchIds(List ids) { + return simpleMapper.selectBatchIds(ids); + } + + @Transactional(readOnly = true) + public T getOne(Serializable id) { + return simpleMapper.selectById(id); + } + + /** + * 分页查询 + * + * @return + */ + public IPage queryPageSort(Map map, List sorts) { + return queryPageAppender(map, null, sorts); + } + + public IPage queryPage(Map map) { + return queryPageAppender(map, null, null); + } + + /** + * 支持累加的分页查询 + * + * @param map + * @param queryApplyList + * @return + */ + @Transactional(readOnly = true) + public IPage queryPageAppender(Map map, List queryApplyList, List orderBys) { + Long pageNum = MapUtil.getLong(map, CONSTANT.pageNumStr); + Long pageSize = MapUtil.getLong(map, CONSTANT.pageSizeStr); + if (null == pageNum) { + pageNum = CONSTANT.pageNum; + } + if (null == pageSize) { + pageSize = CONSTANT.pageSize; + } + QueryWrapper queryWrapper = dynamicSpecifications.bySearchFilter(SearchFilter.parse(map).values()); + if (CollectionUtil.isNotEmpty(queryApplyList)) { + queryApplyList.forEach(apply -> queryWrapper.apply(apply.getApplySql(), apply.getValue().toArray())); + } + if (CollectionUtil.isNotEmpty(orderBys)) { + orderBys.forEach(o -> { + switch (o.getSort()) { + case ASC: + queryWrapper.orderByAsc(o.getSql()); + case DESC: + queryWrapper.orderByDesc(o.getSql()); + default: + } + + }); + } + return simpleMapper.selectPage(new Page(pageNum, pageSize), queryWrapper); + } + + public Page toPage(Map map) { + + Long pageNum = MapUtil.getLong(map, CONSTANT.pageNumStr); + Long pageSize = MapUtil.getLong(map, CONSTANT.pageSizeStr); + if (null == pageNum) { + pageNum = CONSTANT.pageNum; + } + if (null == pageSize) { + pageSize = CONSTANT.pageSize; + } + + return new Page(pageNum, pageSize); + } + + /** + * 查询全部 + * + * @return + */ + @Transactional(readOnly = true) + public List queryList(Map map) { + return simpleMapper.selectList(dynamicSpecifications.bySearchFilter(SearchFilter.parse(map).values())); + } + + /** + * 查询全部 + * + * @return + */ + @Transactional(readOnly = true) + public List queryListAppender(Map map, List queryApplyList) { + QueryWrapper queryWrapper = dynamicSpecifications.bySearchFilter(SearchFilter.parse(map).values()); + if (CollectionUtil.isNotEmpty(queryApplyList)) { + queryApplyList.forEach(apply -> queryWrapper.apply(apply.getApplySql(), apply.getValue().toArray())); + } + return simpleMapper.selectList(queryWrapper); + + } + + @Transactional + public synchronized boolean remove(Serializable id) { + return retBool(simpleMapper.deleteById(id)); + } + + @Transactional + public synchronized boolean modify(T t) { + if (null == t.getId()) { + throw new RuntimeException("参数异常"); + } + return retBool(simpleMapper.updateById(t)); + } + + @Transactional + public synchronized T create(T t) { + if (null != t.getId()) { + throw new RuntimeException("参数异常"); + } + simpleMapper.insert(t); + return t; + } + + @Transactional + public synchronized boolean createOrUpdate(T t) { + if (null == t.getId()) { + return retBool(simpleMapper.insert(t)); + } + return retBool(simpleMapper.updateById(t)); + } + + @Transactional + public synchronized boolean removeBatch(List ids) { + return retBool(simpleMapper.deleteBatchIds(ids)); + } + + /** + * 批量插入 + * + * @throws DbException + */ + @Transactional + public boolean insertBatch(List entityList) { + int batchSize = 20; + try (SqlSession batchSqlSession = sqlSessionBatch()) { + int size = entityList.size(); + String sqlStatement = sqlStatementByXml(SqlMethod.INSERT_ONE.getMethod()); + for (int i = 0; i < size; i++) { + batchSqlSession.insert(sqlStatement, entityList.get(i)); + if (i >= 1 && i % batchSize == 0) { + batchSqlSession.flushStatements(); + } + } + batchSqlSession.flushStatements(); + } catch (Throwable e) { + e.printStackTrace(); + } + return true; + } + + /** + * 批量更新 + */ + @Transactional + public boolean updateBatch(List entityList) { + int batchSize = 20; + try (SqlSession batchSqlSession = sqlSessionBatch()) { + int size = entityList.size(); + String sqlStatement = sqlStatementByXml("updateBatch"); + for (int i = 0; i < size; i++) { + batchSqlSession.update(sqlStatement, entityList.get(i)); + if (i >= 1 && i % batchSize == 0) { + batchSqlSession.flushStatements(); + } + } + batchSqlSession.flushStatements(); + } catch (Throwable e) { + e.printStackTrace(); + } + return true; + } + + + /** + * 自定义批量插入 + * @param entityList + * @param batchSize + * @return + * @throws Exception + */ + + @Transactional + public boolean insertBatchByXml(List entityList) { + int batchSize = 20; + try (SqlSession batchSqlSession = sqlSessionBatch()) { + int size = entityList.size(); + String sqlStatement = sqlStatementByXml("insertBatch"); + for (int i = 0; i < size; i++) { + batchSqlSession.insert(sqlStatement, entityList.get(i)); + if (i >= 1 && i % batchSize == 0) { + batchSqlSession.flushStatements(); + } + } + batchSqlSession.flushStatements(); + } catch (Throwable e) { + e.printStackTrace(); + } + return true; + } + + protected Class currentModelClass() { + return ReflectionKit.getSuperClassGenericType(getClass(), 0); + } + + /** + * 批量操作 SqlSession + */ + protected SqlSession sqlSessionBatch() { + return SqlHelper.sqlSessionBatch(currentModelClass()); + } + + /** + * 获取SqlStatement + */ + protected String sqlStatementByXml(String method) { + return SqlHelper.table(currentModelClass()).getSqlStatement(method); + } +} diff --git a/api/src/main/java/com/wx/application/base/DynamicSpecifications.java b/api/src/main/java/com/wx/application/base/DynamicSpecifications.java new file mode 100644 index 0000000..900561c --- /dev/null +++ b/api/src/main/java/com/wx/application/base/DynamicSpecifications.java @@ -0,0 +1,309 @@ +package com.wx.application.base; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; + +import java.util.Collection; +import java.util.Map; + +@SuppressWarnings({"rawtypes", "hiding"}) +public class DynamicSpecifications> { + /** + * 开始构造表达式 + * + * @param filters + * @param + * @return + */ + @SuppressWarnings({"incomplete-switch"}) + public QueryWrapper bySearchFilter(final Collection filters) { + + QueryWrapper queryWrapper = new QueryWrapper<>(); + + if (CollectionUtil.isNotEmpty(filters)) { + + + for (SearchFilter filter : filters) { + filter.fieldName = StrUtil.toUnderlineCase(filter.fieldName); + // nested path translate, 如Task的名为"user.name"的filedName, 转换为Task.user.name属性 + // fixme 暂不支持级联查询 + if (filter.logic != null) { + switch (filter.logic) { + case OR: + queryWrapper = queryWrapper.or(); + break; + } + } + if (filter.operator == null) { + continue; + } + switch (filter.operator) { + case EQ: + queryWrapper = queryWrapper.eq(filter.fieldName, filter.value); + break; + case LIKE: + queryWrapper = queryWrapper.like(filter.fieldName, filter.value); + break; + case GT: + queryWrapper = queryWrapper.gt(filter.fieldName, filter.value); + break; + case LT: + queryWrapper = queryWrapper.lt(filter.fieldName, filter.value); + break; + case GTE: + queryWrapper = queryWrapper.ge(filter.fieldName, filter.value); + break; + case LTE: + queryWrapper = queryWrapper.le(filter.fieldName, filter.value); + break; + case IN: + queryWrapper = queryWrapper.in(filter.fieldName, StrUtil.split(filter.value.toString(), ',', -1)); + break; + case NIN: + queryWrapper = queryWrapper.notIn(filter.fieldName, StrUtil.split(filter.value.toString(), ',', -1)); + break; + case NEQ: + queryWrapper = queryWrapper.ne(filter.fieldName, filter.value); + break; + case FIELDEQ: + queryWrapper = queryWrapper.apply(StrUtil.format("{}={}", filter.fieldName, filter.value)); + break; + case ISNOTNULL: + queryWrapper = queryWrapper.isNotNull(filter.fieldName); + break; + case ISNULL: + queryWrapper = queryWrapper.isNull(filter.fieldName); + break; + case ISEMPTY: + queryWrapper = queryWrapper.eq(filter.fieldName, ""); + break; + case ISNOTEMPTY: + queryWrapper = queryWrapper.ne(filter.fieldName, ""); + break; + case FIELDNEQ: + queryWrapper = queryWrapper.apply(StrUtil.format("{}!={}", filter.fieldName, filter.value)); + break; + case DESC: + queryWrapper.orderByDesc(filter.fieldName); + break; + case DESCA: + queryWrapper.orderByDesc(filter.value.toString().split(",")); + break; + case ASC: + queryWrapper.orderByAsc(filter.fieldName); + break; + case ASCA: + queryWrapper.orderByAsc(filter.value.toString().split(",")); + break; + } + } + } + return queryWrapper; + } + + + /** + * 直接解析map的方式 + * + * @param map + * @param + * @return + */ + public QueryWrapper parseSearchParams(Map map) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 获取排序字段,支持多个 + String order = MapUtil.getStr(map, "order"); + // 获取排序类型 + String by = StrUtil.isBlank(MapUtil.getStr(map, "by")) ? "asc" : MapUtil.getStr(map, "by"); + // 设置查询条件 + String searchParam = MapUtil.getStr(map, "searchParam"); + queryWrapper = parseSearchParams(searchParam); + // 如果需要排序 + if (!StrUtil.isBlank(order)) { + // 多个字段一起排序 + if (order.contains("|")) { + // 多个字段排序 + String[] orders = StringUtils.split(order, "|"); + for (int i = 0; i < orders.length; i++) { + // 设置order + if (by.toLowerCase().equals("desc")) { + queryWrapper.orderByDesc(StrUtil.toUnderlineCase(orders[i])); + } else { + queryWrapper.orderByAsc(StrUtil.toUnderlineCase(orders[i])); + } + } + } + // 单个字段排序 + else { + // 设置order + if (by.toLowerCase().equals("desc")) { + queryWrapper.orderByDesc(StrUtil.toUnderlineCase(order)); + } else { + queryWrapper.orderByAsc(StrUtil.toUnderlineCase(order)); + } + } + } + return queryWrapper; + } + + /** + * 解析json字符串为查询参数 + * + * @param searchParam + * @param + * @return + */ + + public QueryWrapper parseSearchParams(String searchParam) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + try { + JSONArray searchData = JSONArray.parseArray(searchParam); + queryWrapper = parseSearchParams(searchData, null); + } catch (Exception e) { + } + return queryWrapper; + } + + /** + * 解析jsonarray为查询参数 + * + * @param searchParam + * @param + * @return + */ + public QueryWrapper parseSearchParams(JSONArray searchParam, QueryWrapper queryWrapper) { + // 定义返回参数 + if (queryWrapper == null) { + queryWrapper = new QueryWrapper<>(); + } + for (int i = 0; i < searchParam.size(); i++) { + JSONObject item = searchParam.getJSONObject(i); + // 如果是组模式 + if (SearchFilter.Mod.group.toString().equals(item.getString("mod"))) { + // 如果是or连接 + if (SearchFilter.Logic.OR.toString().toLowerCase().equals(item.getString("logic").toLowerCase())) { + // 如果存在子节点 + if (item.getJSONArray("children") != null) { + queryWrapper.or((wrapper) -> { + parseSearchParams(item.getJSONArray("children"), wrapper); + }); + } + } + // 如果是and连接 + else { + // 如果存在子节点 + if (item.getJSONArray("children") != null) { + queryWrapper.and((wrapper) -> { + parseSearchParams(item.getJSONArray("children"), wrapper); + }); + } + } + } + // 如果是条件模式 + else { + // 表达式 + String operator = item.getString("operator"); + // 查询字段,支持复合字段 + String fieldName = item.getString("field"); + // 后续转化根据类型 + String type = item.getString("type"); + // 查询值 + Object value = item.getString("value"); + // 连接符 + String logic = StrUtil.isBlank(item.getString("logic")) ? "and" : item.getString("logic"); + // 如果是多字段查询同一个值 + if (fieldName.contains("|")) { + String[] fields = StringUtils.split(fieldName, "|"); + // 如果是and连接符 + if (logic.toLowerCase().equals("and")) { + queryWrapper.and((wrapper) -> { + for (int j = 0; j < fields.length; j++) { + wrapper.or(); + consumption(wrapper, operator, fields[j], value); + } + }); + } + // 如果是or连接符 + else { + queryWrapper.or((wrapper) -> { + for (int j = 0; j < fields.length; j++) { + wrapper.or(); + consumption(wrapper, operator, fields[j], value); + } + }); + } + } else { + // 如果是or连接符 + if (!StrUtil.isBlank(logic) && logic.toLowerCase().equals("and")) { + queryWrapper.or(); + } + consumption(queryWrapper, operator, fieldName, value); + } + } + } + return queryWrapper; + } + + public QueryWrapper consumption(QueryWrapper queryWrapper, String operator, String fieldName, Object value) { + // 转换字段名格式,把 驼峰转为数据库下划线形式 + fieldName = StrUtil.toUnderlineCase(fieldName); + if (!StrUtil.isBlank(operator)) { + switch (operator.toUpperCase()) { + case "EQ": + queryWrapper = queryWrapper.eq(fieldName, value); + break; + case "LIKE": + queryWrapper = queryWrapper.like(fieldName, value); + break; + case "GT": + queryWrapper = queryWrapper.gt(fieldName, value); + break; + case "LT": + queryWrapper = queryWrapper.lt(fieldName, value); + break; + case "GTE": + queryWrapper = queryWrapper.ge(fieldName, value); + break; + case "LTE": + queryWrapper = queryWrapper.le(fieldName, value); + break; + case "IN": + queryWrapper = queryWrapper.in(fieldName, StrUtil.split(value.toString(), ',',-1)); + break; + case "NEQ": + queryWrapper = queryWrapper.ne(fieldName, value); + break; + case "FIELDEQ": + queryWrapper = queryWrapper.apply(StrUtil.format("{}={}", fieldName, value)); + break; + case "ISNOTNULL": + queryWrapper = queryWrapper.isNotNull(fieldName); + break; + case "ISNULL": + queryWrapper = queryWrapper.isNull(fieldName); + break; + case "ISEMPTY": + queryWrapper = queryWrapper.eq(fieldName, ""); + break; + case "ISNOTEMPTY": + queryWrapper = queryWrapper.ne(fieldName, ""); + break; + case "FIELDNEQ": + queryWrapper = queryWrapper.apply(StrUtil.format("{}!={}", fieldName, value)); + break; + case "DESC": + queryWrapper.orderByDesc(fieldName); + break; + case "ASC": + queryWrapper.orderByAsc(fieldName); + break; + } + } + return queryWrapper; + } +} diff --git a/api/src/main/java/com/wx/application/base/ErrorCodeEnum.java b/api/src/main/java/com/wx/application/base/ErrorCodeEnum.java new file mode 100644 index 0000000..d157b59 --- /dev/null +++ b/api/src/main/java/com/wx/application/base/ErrorCodeEnum.java @@ -0,0 +1,50 @@ +package com.wx.application.base; + +/** + * 错误码枚举 + */ +public enum ErrorCodeEnum { + SUCCESS, + SYSTEM_ERROR, + PARAM_ERROR, + UNAUTHORIZED, + AUTHORIZATION_EXPIRED, + + LOGIN_ERROR, + // 旧密码错误 + OLD_PASSWORD_ERROR, + + NO_PERMISSION, + + NO_PROFESSOR_EXIST, + + MOBILE_USED, + USER_NOT_EXIST, + ROTATEMENT_NOT_EXIST, + ROTATEMENT_HAS_BEEN_MARKED, + + // 已签到 + SIGNED_IN, + // 混合购物 + MIXED_SHOPPING, + // 商品不存在 + GOOD_ITEM_NOT_FOUND, + GOOD_ITEM_NOT_ENOUGH, + // 订单商品为空 + ORDER_ITEM_IS_EMPTY, + // 租赁日期不合法 + LEASE_DAY_INCORRECT, + + // 服务器内部错误 + INTERNAL_ERROR, + + // 已经签约过 + ALREADY_SIGNED, + UNIT_NAME_EXIST, + MEDICAL_INSURANCE_NAME_EXIST, + NURSE_NAME_EXIST, + DOCTOR_NAME_EXIST, + DEPARTMENT_NAME_EXIST, + MSG_TO_FAST, + SECURITY_CODE_INVALID +} diff --git a/api/src/main/java/com/wx/application/base/ResponseData.java b/api/src/main/java/com/wx/application/base/ResponseData.java new file mode 100644 index 0000000..4a20831 --- /dev/null +++ b/api/src/main/java/com/wx/application/base/ResponseData.java @@ -0,0 +1,58 @@ +package com.wx.application.base; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author zj + * @description : restful 接口返回封装 + * --------------------------------- + * @since 2017-10-27 + */ +@Data +@Accessors(chain = true) +public class ResponseData { + //请求id + private String code; + // 状态码 + private String msg; + //状态信息 + private T data; + // 具体内容 + private String requestId; + + public static ResponseData SUCCESS(String msg, Object data) { + ResponseData responseData = new ResponseData(); + responseData.msg = msg; + responseData.data = data; + responseData.code = ErrorCodeEnum.SUCCESS.toString(); + return responseData; + } + + public static ResponseData ERROR(String msg, Object data) { + ResponseData responseData = new ResponseData(); + responseData.msg = msg; + responseData.data = data; + responseData.code = ErrorCodeEnum.SYSTEM_ERROR.toString(); + return responseData; + } + + public static ResponseData ERROR(ErrorCodeEnum codeEnum, String msg, Object data) { + ResponseData responseData = new ResponseData(); + responseData.msg = msg; + responseData.data = data; + responseData.code = codeEnum.toString(); + return responseData; + } + + public static ResponseData ERROR(String codeValue, String msg, Object data) { + ResponseData responseData = new ResponseData(); + responseData.msg = msg; + responseData.data = data; + responseData.code = codeValue; + return responseData; + } + +} + + diff --git a/api/src/main/java/com/wx/application/base/SearchFilter.java b/api/src/main/java/com/wx/application/base/SearchFilter.java new file mode 100644 index 0000000..f06190b --- /dev/null +++ b/api/src/main/java/com/wx/application/base/SearchFilter.java @@ -0,0 +1,176 @@ + +package com.wx.application.base; + +import cn.hutool.core.convert.Convert; +import com.google.common.collect.Maps; +import com.wx.application.util.DateUtils; + +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Map; +import java.util.Map.Entry; + +/** + * sql查询构建器 + */ +public class SearchFilter { + + public enum Operator { + EQ,//值相等 + NEQ, //值不等 + LIKE, //值模糊匹配 + GT, //大于 + LT, //小于 + GTE, //大于等于 + LTE,//小于等于 + IN,//在某个范围内 + NIN,//不在某个范围内 + FIELDEQ,//一个字段等于另一个字段 + FIELDNEQ,//一个字段不等于另一个字段 + ISNULL, + ISNOTNULL, + ISEMPTY, + ISNOTEMPTY, + DESC, // 降序 + DESCA,//多个字段降序 + ASC, // 升序 + ASCA,//多个字段升序 + } + + public enum Logic { + AND, OR + } + + /** + * 模式 + */ + public enum Mod { + // 条件 + condition, + // 分组 + group + } + + /** + * 属性数据类型. + */ + public enum PropertyType { + S(String.class), // 字符串 + I(Integer.class), // 数字 + L(Long.class), // 长整型,一般用作ID查询 + N(Double.class), // 双精度 + D(Date.class), // 日期 + B(Boolean.class), // 布尔类型 + C(BigDecimal.class); + + private Class clazz; + + private PropertyType(Class clazz) { + this.clazz = clazz; + } + + public Class getValue() { + return clazz; + } + } + + //字段名称 + public String fieldName; + //值 + public Object value; + //eq ue + public Operator operator; + //and or + public Logic logic; + + public SearchFilter(String fieldName, Operator operator, Object value) { + this.fieldName = fieldName; + this.value = value; + this.operator = operator; + } + + public SearchFilter(String fieldName, Operator operator, Object value, Logic logic) { + this.fieldName = fieldName; + this.value = value; + this.operator = operator; + this.logic = logic; + } + + /** + * 解析下map中的值,挑选符合条件的备用 + * searchParams中key的格式为OPERATOR_FIELDNAME + */ + @SuppressWarnings({"rawtypes", "unchecked"}) + public static Map parse(Map searchParams) { + Map filters = Maps.newHashMap(); + + for (Entry entry : searchParams.entrySet()) { + // 过滤掉空值 + String key = entry.getKey(); + Object value = entry.getValue(); + if (StringUtils.isBlank(value.toString())) { + continue; + } + // 拆分operator与filedAttribute + String[] names = StringUtils.split(key, "_"); + + if (names.length == 2) { + String filedName = names[1]; + String firstPart = names[0]; + String matchTypeCode = StringUtils.substring(firstPart, 0, firstPart.length() - 1); + String propertyTypeCode = StringUtils.substring(firstPart, firstPart.length() - 1, firstPart.length()); + Operator operator = Operator.valueOf(matchTypeCode); + Class propertyClass = Enum.valueOf(PropertyType.class, propertyTypeCode).getValue(); + + Object obj = null; + + if(operator.equals(Operator.LTE) && propertyTypeCode.equals("D")) { + String v = DateUtils.fn1(1, value.toString()); + obj = Convert.convert(propertyClass, v); + } else { + obj = Convert.convert(propertyClass, value); + } + + // 创建searchFilter + SearchFilter filter = new SearchFilter(filedName, operator, obj); + filters.put(key, filter); + } else if (names.length == 3) { + String filedName = names[1]; + String firstPart = names[0]; + String logicName = names[2]; + String matchTypeCode = StringUtils.substring(firstPart, 0, firstPart.length() - 1); + String propertyTypeCode = StringUtils.substring(firstPart, firstPart.length() - 1, firstPart.length()); + Operator operator = Operator.valueOf(matchTypeCode); + Logic logic = Logic.valueOf(logicName); + //List objects = new ArrayList(); + Class propertyClass = Enum.valueOf(PropertyType.class, propertyTypeCode).getValue(); + Object obj = Convert.convert(propertyClass, value); + ; + //String valueString = String.valueOf(value); + //fixme暂不支持级联 + /*if (valueString.contains("#")) { + String[] values = StringUtils.split(valueString, "#"); + for (String val : values) { + Class propertyClass = Enum.valueOf(PropertyType.class, propertyTypeCode).getValue(); + obj = Convert.convert(propertyClass, value); + objects.add(obj); + } + } else { + String[] values = StringUtils.split(valueString, "_"); + for (String val : values) { + Class propertyClass = Enum.valueOf(PropertyType.class, propertyTypeCode).getValue(); + obj = Convert.convert(propertyClass, value); + objects.add(obj); + } + }*/ + // 创建searchFilter + SearchFilter filter = new SearchFilter(filedName, operator, obj, logic); + filters.put(key, filter); + } + } + return filters; + } + +} diff --git a/api/src/main/java/com/wx/application/configuration/FilterIgnorePropertiesConfig.java b/api/src/main/java/com/wx/application/configuration/FilterIgnorePropertiesConfig.java new file mode 100644 index 0000000..f95e5bc --- /dev/null +++ b/api/src/main/java/com/wx/application/configuration/FilterIgnorePropertiesConfig.java @@ -0,0 +1,41 @@ + +package com.wx.application.configuration; + +import lombok.Data; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.validation.Validator; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +import java.util.ArrayList; +import java.util.List; + +/** + * 放行参数配置 + */ +@Data +@Configuration +@ConditionalOnExpression("!'${ignore}'.isEmpty()") +@ConfigurationProperties(prefix = "ignore") +public class FilterIgnorePropertiesConfig { + /** + * 放行终端配置,网关不校验此处的终端 + */ + private List clients = new ArrayList<>(); + /** + * 放行url,放行的url不再被安全框架拦截 + */ + private List urls = new ArrayList<>(); + /** + * 不聚合swagger + */ + private List swaggerProviders = new ArrayList<>(); + + + @Bean + public Validator validator() { + return new LocalValidatorFactoryBean(); + } +} diff --git a/api/src/main/java/com/wx/application/configuration/MybatisFillHandler.java b/api/src/main/java/com/wx/application/configuration/MybatisFillHandler.java new file mode 100644 index 0000000..521b397 --- /dev/null +++ b/api/src/main/java/com/wx/application/configuration/MybatisFillHandler.java @@ -0,0 +1,29 @@ +package com.wx.application.configuration; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + +/** + * 自动填充创建项 + */ +@Slf4j +@Component +public class MybatisFillHandler implements MetaObjectHandler { + + @Override + public void insertFill(MetaObject metaObject) { + this.setFieldValByName("createTime", new Date(), metaObject); + this.setFieldValByName("updateTime", new Date(), metaObject); + this.setFieldValByName("remove", false, metaObject); + } + + @Override + public void updateFill(MetaObject metaObject) { + this.setFieldValByName("updateTime", new Date(), metaObject); + } + +} diff --git a/api/src/main/java/com/wx/application/configuration/annotation/AspectOff.java b/api/src/main/java/com/wx/application/configuration/annotation/AspectOff.java new file mode 100644 index 0000000..7afc9d9 --- /dev/null +++ b/api/src/main/java/com/wx/application/configuration/annotation/AspectOff.java @@ -0,0 +1,7 @@ +package com.wx.application.configuration.annotation; + +/** + * 关闭切面注解 + */ +public @interface AspectOff { +} diff --git a/api/src/main/java/com/wx/application/configuration/annotation/AuditLog.java b/api/src/main/java/com/wx/application/configuration/annotation/AuditLog.java new file mode 100644 index 0000000..4d5696c --- /dev/null +++ b/api/src/main/java/com/wx/application/configuration/annotation/AuditLog.java @@ -0,0 +1,18 @@ +package com.wx.application.configuration.annotation; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface AuditLog { + String title() default ""; + + /** + * 操作资源类型 + */ + String opType() default ""; +} diff --git a/api/src/main/java/com/wx/application/constant/CONSTANT.java b/api/src/main/java/com/wx/application/constant/CONSTANT.java new file mode 100644 index 0000000..32c2e82 --- /dev/null +++ b/api/src/main/java/com/wx/application/constant/CONSTANT.java @@ -0,0 +1,52 @@ +package com.wx.application.constant; + +/** + * 系统运行时一些常量 + */ +public interface CONSTANT { + //分页大小名称 + String pageSizeStr = "pageSize"; + //默认分页大小 + Long pageSize = 10L; + //当前页名称 + String pageNumStr = "pageNo"; + //默认分页名称 + Long pageNum = 1L; + + String REQUEST_ID_KEY = "REQ_ID"; + String REQUEST_URL = "REQ_URL"; + String X_REQ_ID = "X-Request-Id"; + String OP_RESOURCE_NAME = "OP_RESOURCE_NAME"; + + /** + * 请求号header标识 + */ + String TOKEN_NAME = "Authorization"; + String MD5_ID = "Md5id"; + String USER_SIGN = "usrSign"; + String USER_SIGN_NAME = "usrSignName"; + + String JWT_USER_TAG = "JWT_USER_TAG"; + + String LOGIN_TYPE_ADMIN = "LOGIN_TYPE_ADMIN"; + + String COSURL = "https://yzhishuimian-1301717583.cos.ap-beijing.myqcloud.com/"; + + String[] imgArr = {"bmp", "jpg", "png", "tif", "gif", "pcx", "tga", "exif", "fpx", "svg", "psd", + "cdr", "pcd", "dxf", "ufo", "eps", "ai", "raw", "WMF", "webp"}; + + String[] videoArr = {"avi", "mpeg", "mpg", "dat", "ra", "rm", "rmvb", "mov", "qt", "flv", "wmv", + "asf", "mkv", "mp4", "m4v"}; + + //用户ip + String IP = "IP"; + + //订单默认超时时间分钟 + public final static int ORDER_EXPIRE = 60; + + Integer batch_create_max = 2000; + + Integer maxAggregation = 10000000; + + Integer nebula_batch_create_max = 500; +} diff --git a/api/src/main/java/com/wx/application/core/controller/GraphCaseController.java b/api/src/main/java/com/wx/application/core/controller/GraphCaseController.java new file mode 100644 index 0000000..2447e75 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/GraphCaseController.java @@ -0,0 +1,53 @@ +package com.wx.application.core.controller; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.core.entity.GraphCase; +import com.wx.application.core.service.GraphCaseService; +/** + * @description : GraphCase 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-09-23 + */ +/*@Slf4j*/ +@RestController("coreGraphCaseController") +@RequestMapping("/graph-case") +public class GraphCaseController extends BaseController { + + @Autowired + private GraphCaseService graphCaseService; + + @PostMapping(value = "/create") + public ResponseData create(@RequestBody GraphCase graphCase) { + return success(graphCaseService.createGraphCase(graphCase)); + } + + + @PostMapping(value = "/query_pages") + public ResponseData queryPages(@RequestBody Map ontologyQ) { + return success(graphCaseService.queryPage(ontologyQ)); + } + + + @PostMapping(value = "/remove/{id}") + public ResponseData remove(@PathVariable("id") Long id) { + graphCaseService.removeGraphCase(id); + return success(); + } + + + + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody GraphCase graphCase) { + return success(graphCaseService.modify(graphCase)); + } +} diff --git a/api/src/main/java/com/wx/application/core/controller/GraphTaskController.java b/api/src/main/java/com/wx/application/core/controller/GraphTaskController.java new file mode 100644 index 0000000..70f0c4e --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/GraphTaskController.java @@ -0,0 +1,41 @@ +package com.wx.application.core.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.core.service.GraphTaskService; +/** + * @description : GraphTask 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-08-02 + */ +/*@Slf4j*/ +@RestController("coreGraphTaskController") +@RequestMapping("/graph-task") +public class GraphTaskController extends BaseController { + + @Autowired + private GraphTaskService graphTaskService; + + /** + * 根据实例空间名查看现在是不是有任务在导入 + * @param space + * @return + */ + @GetMapping(value = "/query_list/{space}") + public ResponseData queryList(@PathVariable("space") String space) { + Map mQ = new HashMap<>(); + mQ.put("EQI_status", 0); + mQ.put("EQS_space", space); + return success(graphTaskService.queryList(mQ)); + } + +} diff --git a/api/src/main/java/com/wx/application/core/controller/OntologyConceptController.java b/api/src/main/java/com/wx/application/core/controller/OntologyConceptController.java new file mode 100644 index 0000000..609954f --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/OntologyConceptController.java @@ -0,0 +1,117 @@ +package com.wx.application.core.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.adapter.dto.qo.OntologyQ; +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.core.entity.OntologyConcept; +import com.wx.application.core.service.OntologyConceptService; +/** + * @description : OntologyConcept 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-09-25 + */ +/*@Slf4j*/ +@RestController("coreOntologyConceptController") +@RequestMapping("/ontology-concept") +public class OntologyConceptController extends BaseController { + + @Autowired + private OntologyConceptService ontologyConceptService; + + /** + * 查询树形 + * @param ontologyId + * @param ontologyConceptQ + * @return + */ + @PostMapping(value = "/query_list/{ontologyId}") + public ResponseData queryList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody Map ontologyConceptQ) { + ontologyConceptQ.put("EQL_ontologyId", ontologyId); + return success(ontologyConceptService.queryList(ontologyConceptQ)); + } + + + /** + * 模糊匹配 + */ + @PostMapping(value = "/like_list/{ontologyId}") + public ResponseData likeList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody OntologyQ ontologyQ) { + if(StringUtils.isBlank(ontologyQ.getLabel())) { + return success(); + } + Map mQ = new HashMap<>(); + mQ.put("EQL_ontologyId", ontologyId); + mQ.put("LIKES_label", ontologyQ.getLabel()); + return success(ontologyConceptService.queryList(mQ)); + } + + + + /** + * 概念数量 对象属性数量 值属性数量 + * @param ontologyId + * @return + */ + @GetMapping(value = "/countallbyontologyid/{ontologyId}") + public ResponseData countAllByOntologyId(@PathVariable("ontologyId") Long ontologyId) { + return success(ontologyConceptService.countAllByOntologyId(ontologyId)); + } + + /** + * 统计次级概念数量 + */ + @GetMapping(value = "/countchildbyid/{id}") + public ResponseData countChildbyid(@PathVariable("id") Long id) { + return success(ontologyConceptService.countChildbyid(id)); + } + + /** + * 删除树形节点 + * @param ownId + * @return + */ + @GetMapping(value = "/delete/{id}") + public ResponseData delete(@PathVariable("id") Long id) { + return success(ontologyConceptService.deleteOntologyConcept(id)); + } + + + /** + * 修改 + * @param ontologyConcept + * @return + * + * 传修改 改成 传 {ownId,label} + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody OntologyConcept ontologyConcept) { + return success(ontologyConceptService.modifyOntologyConcept(ontologyConcept)); + } + + + /** + * 创建 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody OntologyConcept ontologyConcept) { + return success(ontologyConceptService.createOntologyConcept(ontologyConcept)); + } + + +} diff --git a/api/src/main/java/com/wx/application/core/controller/OntologyController.java b/api/src/main/java/com/wx/application/core/controller/OntologyController.java new file mode 100644 index 0000000..1b7f088 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/OntologyController.java @@ -0,0 +1,274 @@ +package com.wx.application.core.controller; + +import org.springframework.web.bind.annotation.*; +import com.wx.application.base.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import com.wx.application.core.service.OntologyService; +import com.wx.application.core.entity.Ontology; + import com.wx.application.base.ResponseData; +import java.util.Map; +import java.io.Serializable; +/** + * @description : Ontology 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-03-14 + */ +/*@Slf4j*/ +@RestController("coreOntologyController") +@RequestMapping("/ontology") +public class OntologyController extends BaseController { + + @Autowired + private OntologyService ontologyService; + + + @PostMapping(value = "/getone/{id}") + public ResponseData getOne(@PathVariable("id") Serializable id) { + return success(ontologyService.getOne(id)); + } + + /** + * 定义一些通用的错误信息,供其他 api引用 + * @apiDefine DefaultException + * @apiError {String} code 错误码 + * @apiError {String} msg 错误描述 + * @apiError {String} requestId 请求id标识 + * + * @apiErrorExample Error-Response: + * HTTP/1.1 200 + * { + * "code": "UNAUTHORIZED", + * "msg": "未授权,请先登录", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + */ + + /** + * 定义标准对象请求的结构体,供api引用 + * @apiDefine OntologyReq + * @apiParam {String} name + * @apiParam {String} describe + */ + + + /** + * 定义标准对象返回的结构体,供api引用 + * @apiDefine OntologyResp + * @apiSuccess {String} name + * @apiSuccess {String} describe + */ + + /** + * 定义标准头部,供api引用 + * @apiDefine OntologyHeader + * @apiHeader {String} Authorization 用户授权token + * @apiHeaderExample {json} Header-Example: + * { + * "Authorization": "Bearer 1eyJhbGciOiJIUzI1NiJ9....tzNK43MPVQWYYhDwihCAZa88zXzar7KLdgiBBDuUpBM", + * } + */ + + /** + * + * @api {post} //ontology/query_unique 通过条件查询对象 + * @apiName 通过条件查询对象 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiUse OntologyResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + + "name": null, + + "describe": null, + * }, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询对象 + * 仅查询第一条 + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/query_unique") + public ResponseData queryUnique(@RequestBody Map ontologyQ) { + return success(ontologyService.queryUnique(ontologyQ)); + } + + /** + * + * @api {post} //ontology/query_pages 通过条件分页查询列表 + * @apiName 通过条件分页查询列表 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiUse OntologyResp + * @apiSuccess {Long} total 总数 + * @apiSuccess {Long} size 分页大小 + * @apiSuccess {Long} current 当前页 + * @apiSuccess {Long} orders 排序 + * @apiSuccess {Long} pages 总页数 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + * "records": [{ + + "name": null, + "describe": null, * }], + * "total": 1, + * "size": 10, + * "current": 1, + * "orders": [], + * "searchCount": true, + * "pages": 1 + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件分页查询列表 + * 默认第一页 分页长度为10 + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/query_pages") + public ResponseData queryPages(@RequestBody Map ontologyQ) { + return success(ontologyService.queryPage(ontologyQ)); + } + + /** + * + * @api {post} //ontology/query_list 通过条件查询列表 + * @apiName 通过条件查询列表 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiUse OntologyResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": [{ + + "name": null, + + "describe": null, + * }], + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询列表 + * 不分页直接返回list + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/query_list") + public ResponseData queryList(@RequestBody Map ontologyQ) { + return success(ontologyService.queryList(ontologyQ)); + } + + /** + * + * @api {post} //ontology/remove/:id 通过id删除单个记录 + * @apiName 通过id删除单个记录 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiParam {PK} id 记录主键 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id删除单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/remove/{id}") + public ResponseData remove(@PathVariable("id") Serializable id) { + return success(ontologyService.remove(id)); + } + + /** + * + * @api {post} //ontology/modify 通过id更新单个记录 + * @apiName 通过id更新单个记录 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiParam {PK} id 记录主键 + * @apiUse OntologyReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id更新单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody Ontology ontology) { + return success(ontologyService.modify(ontology)); + } + + /** + * + * @api {post} //ontology/create 新增 + * @apiName 新增 + * @apiGroup Ontology + * + * @apiUse OntologyHeader + * @apiUse OntologyReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 新增 + * --------------------------------- + * @author : zj + * @since : Create in 2022-03-14 + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody Ontology ontology) { + return success(ontologyService.create(ontology)); + } +} diff --git a/api/src/main/java/com/wx/application/core/controller/OntologyFieldController.java b/api/src/main/java/com/wx/application/core/controller/OntologyFieldController.java new file mode 100644 index 0000000..50c2efb --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/OntologyFieldController.java @@ -0,0 +1,112 @@ +package com.wx.application.core.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.adapter.dto.qo.OntologyQ; +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.core.entity.OntologyField; +import com.wx.application.core.service.OntologyFieldService; +import com.wx.application.nebula.graph.base.Generators; +/** + * @description : OntologyField 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-09-25 + */ +/*@Slf4j*/ +@RestController("coreOntologyFieldController") +@RequestMapping("/ontology-field") +public class OntologyFieldController extends BaseController { + + @Autowired + private OntologyFieldService ontologyFieldService; + + /** + * 查询树形 + * @param ontologyId + * @param ontologyConceptQ + * @return + */ + @PostMapping(value = "/query_list/{ontologyId}") + public ResponseData queryList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody Map ontologyConceptQ) { + ontologyConceptQ.put("EQL_ontologyId", ontologyId); + return success(ontologyFieldService.queryList(ontologyConceptQ)); + } + + /** + * 模糊匹配 + * @param ontologyId + * @param ontologyQ + * @return + */ + @PostMapping(value = "/like_list/{ontologyId}") + public ResponseData likeList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody OntologyQ ontologyQ) { + if(StringUtils.isBlank(ontologyQ.getLabel())) { + return success(); + } + Map mQ = new HashMap<>(); + mQ.put("EQL_ontologyId", ontologyId); + mQ.put("LIKES_comment", ontologyQ.getLabel()); + return success(ontologyFieldService.queryList(mQ)); + } + + /** + * 删除树形节点 + * @param ownId + * @return + */ + @GetMapping(value = "/delete/{id}") + public ResponseData delete(@PathVariable("id") Long id) { + ontologyFieldService.deleteConceptField(id); + return success(); + } + + + /** + * 修改 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody OntologyField ontologyField) { + ontologyFieldService.modifyOntologyField(ontologyField); + return success(); + } + + + /** + * 创 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/createconceptfield") + public ResponseData createConceptField(@RequestBody OntologyField ontologyField) { + ontologyFieldService.createConceptField(ontologyField); + return success(); + } + + /** + * 创建关系名称 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody OntologyField ontologyField) { + if(StringUtils.isBlank(ontologyField.getField())) { + ontologyField.setField(Generators.fieldname(ontologyField.getComment())); + } + return success(ontologyFieldService.createOntologyField(ontologyField)); + } +} diff --git a/api/src/main/java/com/wx/application/core/controller/OntologyRelationController.java b/api/src/main/java/com/wx/application/core/controller/OntologyRelationController.java new file mode 100644 index 0000000..37901b5 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/OntologyRelationController.java @@ -0,0 +1,103 @@ +package com.wx.application.core.controller; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.adapter.dto.qo.OntologyQ; +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.core.entity.OntologyRelation; +import com.wx.application.core.service.OntologyRelationService; +/** + * @description : OntologyRelation 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-09-25 + */ +/*@Slf4j*/ +@RestController("coreOntologyRelationController") +@RequestMapping("/ontology-relation") +public class OntologyRelationController extends BaseController { + + @Autowired + private OntologyRelationService ontologyRelationService; + + /** + * 查询树形 + * @param ontologyId + * @param ontologyConceptQ + * @return + */ + @PostMapping(value = "/query_list/{ontologyId}") + public ResponseData queryList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody Map ontologyConceptQ) { + ontologyConceptQ.put("EQL_ontologyId", ontologyId); + return success(ontologyRelationService.queryList(ontologyConceptQ)); + } + + /** + * 模糊匹配 + */ + @PostMapping(value = "/like_list/{ontologyId}") + public ResponseData likeList(@PathVariable("ontologyId") Long ontologyId, + @RequestBody OntologyQ ontologyQ) { + if(StringUtils.isBlank(ontologyQ.getLabel())) { + return success(); + } + Map mQ = new HashMap<>(); + mQ.put("EQL_ontologyId", ontologyId); + mQ.put("LIKES_label", ontologyQ.getLabel()); + return success(ontologyRelationService.queryList(mQ)); + } + + /** + * 删除树形节点 + * @param ownId + * @return + */ + @GetMapping(value = "/delete/{id}") + public ResponseData delete(@PathVariable("id") Long id) { + return success(ontologyRelationService.deleteOntologyRelation(id)); + } + + + /** + * 修改 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody OntologyRelation ontologyRelation) { + return success(ontologyRelationService.modifyOntologyRelation(ontologyRelation)); + } + + + /** + * 创建关系 选择头节点和尾节点 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/createrelations") + public ResponseData createRelations(@RequestBody OntologyRelation ontologyRelation) { + return success(ontologyRelationService.createRelations(ontologyRelation)); + } + + /** + * 创建关系名称 + * @param ontologyConcept + * @return + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody OntologyRelation ontologyRelation) { + return success(ontologyRelationService.createOntologyRelation(ontologyRelation)); + } + +} diff --git a/api/src/main/java/com/wx/application/core/controller/QuestionQaController.java b/api/src/main/java/com/wx/application/core/controller/QuestionQaController.java new file mode 100644 index 0000000..17a39e4 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/controller/QuestionQaController.java @@ -0,0 +1,268 @@ +package com.wx.application.core.controller; + +import org.springframework.web.bind.annotation.*; +import com.wx.application.base.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import com.wx.application.core.service.QuestionQaService; +import com.wx.application.core.entity.QuestionQa; + import com.wx.application.base.ResponseData; +import java.util.Map; +import java.io.Serializable; +/** + * @description : QuestionQa 默认控制器,仅供生成器使用 + * --------------------------------- + * @since 2022-05-31 + */ +/*@Slf4j*/ +@RestController("coreQuestionQaController") +@RequestMapping("/question_qa") +public class QuestionQaController extends BaseController { + + @Autowired + private QuestionQaService questionQaService; + + /** + * 定义一些通用的错误信息,供其他 api引用 + * @apiDefine DefaultException + * @apiError {String} code 错误码 + * @apiError {String} msg 错误描述 + * @apiError {String} requestId 请求id标识 + * + * @apiErrorExample Error-Response: + * HTTP/1.1 200 + * { + * "code": "UNAUTHORIZED", + * "msg": "未授权,请先登录", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + */ + + /** + * 定义标准对象请求的结构体,供api引用 + * @apiDefine QuestionQaReq + * @apiParam {String} question + * @apiParam {String} answer + */ + + + /** + * 定义标准对象返回的结构体,供api引用 + * @apiDefine QuestionQaResp + * @apiSuccess {String} question + * @apiSuccess {String} answer + */ + + /** + * 定义标准头部,供api引用 + * @apiDefine QuestionQaHeader + * @apiHeader {String} Authorization 用户授权token + * @apiHeaderExample {json} Header-Example: + * { + * "Authorization": "Bearer 1eyJhbGciOiJIUzI1NiJ9....tzNK43MPVQWYYhDwihCAZa88zXzar7KLdgiBBDuUpBM", + * } + */ + + /** + * + * @api {post} //question-qa/query_unique 通过条件查询对象 + * @apiName 通过条件查询对象 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiUse QuestionQaResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + + "question": null, + + "answer": null, + * }, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询对象 + * 仅查询第一条 + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/query_unique") + public ResponseData queryUnique(@RequestBody Map questionQaQ) { + return success(questionQaService.queryUnique(questionQaQ)); + } + + /** + * + * @api {post} //question-qa/query_pages 通过条件分页查询列表 + * @apiName 通过条件分页查询列表 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiUse QuestionQaResp + * @apiSuccess {Long} total 总数 + * @apiSuccess {Long} size 分页大小 + * @apiSuccess {Long} current 当前页 + * @apiSuccess {Long} orders 排序 + * @apiSuccess {Long} pages 总页数 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": { + * "records": [{ + + "question": null, + "answer": null, * }], + * "total": 1, + * "size": 10, + * "current": 1, + * "orders": [], + * "searchCount": true, + * "pages": 1 + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件分页查询列表 + * 默认第一页 分页长度为10 + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/query_pages") + public ResponseData queryPages(@RequestBody Map questionQaQ) { + return success(questionQaService.queryPage(questionQaQ)); + } + + /** + * + * @api {post} //question-qa/query_list 通过条件查询列表 + * @apiName 通过条件查询列表 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiUse QuestionQaResp + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": [{ + + "question": null, + + "answer": null, + * }], + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过条件查询列表 + * 不分页直接返回list + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/query_list") + public ResponseData queryList(@RequestBody Map questionQaQ) { + return success(questionQaService.queryList(questionQaQ)); + } + + /** + * + * @api {post} //question-qa/remove/:id 通过id删除单个记录 + * @apiName 通过id删除单个记录 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiParam {PK} id 记录主键 + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id删除单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/remove/{id}") + public ResponseData remove(@PathVariable("id") Serializable id) { + return success(questionQaService.remove(id)); + } + + /** + * + * @api {post} //question-qa/modify 通过id更新单个记录 + * @apiName 通过id更新单个记录 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiParam {PK} id 记录主键 + * @apiUse QuestionQaReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 通过id更新单个记录 + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/modify") + public ResponseData modify(@RequestBody QuestionQa questionQa) { + return success(questionQaService.modify(questionQa)); + } + + /** + * + * @api {post} //question-qa/create 新增 + * @apiName 新增 + * @apiGroup QuestionQa + * + * @apiUse QuestionQaHeader + * @apiUse QuestionQaReq + * @apiSuccessExample Success-Response: + * HTTP/1.1 200 OK + * { + * "data": true, + * "code": "SUCCESS", + * "msg": "请求成功", + * "requestId": "163e2f67-5306-4b10-bcbe-a1579d589446" + * } + * + * @apiUse DefaultException + * + * @description : 新增 + * --------------------------------- + * @author : zj + * @since : Create in 2022-05-31 + */ + @PostMapping(value = "/create") + public ResponseData create(@RequestBody QuestionQa questionQa) { + return success(questionQaService.create(questionQa)); + } +} diff --git a/api/src/main/java/com/wx/application/core/entity/GraphCase.java b/api/src/main/java/com/wx/application/core/entity/GraphCase.java new file mode 100644 index 0000000..4a5e478 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/GraphCase.java @@ -0,0 +1,28 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-09-23 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_graph_case") +public class GraphCase extends BaseEntity { + + private String name; + private String comment; + + private String ontologyId; + + +} diff --git a/api/src/main/java/com/wx/application/core/entity/GraphTask.java b/api/src/main/java/com/wx/application/core/entity/GraphTask.java new file mode 100644 index 0000000..00eea12 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/GraphTask.java @@ -0,0 +1,27 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-08-02 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_graph_task") +public class GraphTask extends BaseEntity { + + private String space; + + private String fileName; + private Integer status; + +} diff --git a/api/src/main/java/com/wx/application/core/entity/Ontology.java b/api/src/main/java/com/wx/application/core/entity/Ontology.java new file mode 100644 index 0000000..0177d11 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/Ontology.java @@ -0,0 +1,34 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-03-14 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_ontology") +public class Ontology extends BaseEntity { + + private String name; + private String description; + + + /** + * 数据源类型 + * 1 : 自定义本体 + * 2 : 标注系统本体 + * 3 : 实例图谱空间 + */ + private Integer sourceType; + +} diff --git a/api/src/main/java/com/wx/application/core/entity/OntologyConcept.java b/api/src/main/java/com/wx/application/core/entity/OntologyConcept.java new file mode 100644 index 0000000..a212bd1 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/OntologyConcept.java @@ -0,0 +1,27 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_ontology_concept") +public class OntologyConcept extends BaseEntity { + + private Long ontologyId; + private String ownId; + private String label; + private String parentId; + +} diff --git a/api/src/main/java/com/wx/application/core/entity/OntologyField.java b/api/src/main/java/com/wx/application/core/entity/OntologyField.java new file mode 100644 index 0000000..999d7bb --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/OntologyField.java @@ -0,0 +1,48 @@ +package com.wx.application.core.entity; + +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; +import com.wx.application.nebula.graph.enums.DataType; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_ontology_field") +public class OntologyField extends BaseEntity { + + private Long ontologyId; + + private String field; + + private DataType type; + + private Integer len; + + /** + * 单个属性的描述 + */ + private String comment; + + private Long parentId; + + + /** + * 对应OntologyConcept 的ownId集合 + */ + @TableField(exist = false) + private List conceptIds; + +} diff --git a/api/src/main/java/com/wx/application/core/entity/OntologyRelation.java b/api/src/main/java/com/wx/application/core/entity/OntologyRelation.java new file mode 100644 index 0000000..4d4183b --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/OntologyRelation.java @@ -0,0 +1,37 @@ +package com.wx.application.core.entity; + +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_ontology_relation") +public class OntologyRelation extends BaseEntity { + + private Long ontologyId; + private String label; + private Long parentId; + + private Boolean arrow = false; + + @TableField(exist = false) + private List srcIds; + + @TableField(exist = false) + private List dctIds; + +} diff --git a/api/src/main/java/com/wx/application/core/entity/QuestionQa.java b/api/src/main/java/com/wx/application/core/entity/QuestionQa.java new file mode 100644 index 0000000..2943c8e --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/QuestionQa.java @@ -0,0 +1,28 @@ +package com.wx.application.core.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2022-05-31 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("dn_question_qa") +public class QuestionQa extends BaseEntity { + + private String question; + private String answer; + + + + +} diff --git a/api/src/main/java/com/wx/application/core/entity/RiskUser.java b/api/src/main/java/com/wx/application/core/entity/RiskUser.java new file mode 100644 index 0000000..661f270 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/entity/RiskUser.java @@ -0,0 +1,28 @@ +package com.wx.application.core.entity; + +import com.wx.application.base.BaseEntity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * + *

+ * + * @author zj + * @since 2021-11-24 + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class RiskUser extends BaseEntity { + + private String username; + + private String realname; + + private String password; + + private String type; + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/GraphCaseMapper.java b/api/src/main/java/com/wx/application/core/mapper/GraphCaseMapper.java new file mode 100644 index 0000000..351fe5d --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/GraphCaseMapper.java @@ -0,0 +1,20 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.GraphCase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-09-23 + */ +@Repository +public interface GraphCaseMapper extends BaseMapper { + + void deleteById(Long id); + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/GraphTaskMapper.java b/api/src/main/java/com/wx/application/core/mapper/GraphTaskMapper.java new file mode 100644 index 0000000..741ed91 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/GraphTaskMapper.java @@ -0,0 +1,20 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.GraphTask; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-08-02 + */ +@Repository +public interface GraphTaskMapper extends BaseMapper { + int countBySpaceAndStauts(@Param("space") String space); +} diff --git a/api/src/main/java/com/wx/application/core/mapper/OntologyConceptMapper.java b/api/src/main/java/com/wx/application/core/mapper/OntologyConceptMapper.java new file mode 100644 index 0000000..1d6126a --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/OntologyConceptMapper.java @@ -0,0 +1,25 @@ +package com.wx.application.core.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wx.application.core.entity.OntologyConcept; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Repository +public interface OntologyConceptMapper extends BaseMapper { + + int countByOntologyId(@Param("ontologyId") Long ontologyId); + int countChildbyid(@Param("parentId") String parentId); + + OntologyConcept findByOntologyIdAndLabel(@Param("ontologyId") Long ontologyId, + @Param("label") String label); +} diff --git a/api/src/main/java/com/wx/application/core/mapper/OntologyFieldMapper.java b/api/src/main/java/com/wx/application/core/mapper/OntologyFieldMapper.java new file mode 100644 index 0000000..b8d604b --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/OntologyFieldMapper.java @@ -0,0 +1,23 @@ +package com.wx.application.core.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wx.application.core.entity.OntologyField; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Repository +public interface OntologyFieldMapper extends BaseMapper { + int countByOntologyId(@Param("ontologyId") Long ontologyId); + + OntologyField findByOntologyIdAndLabel(@Param("ontologyId") Long ontologyId, + @Param("field") String field); +} diff --git a/api/src/main/java/com/wx/application/core/mapper/OntologyMapper.java b/api/src/main/java/com/wx/application/core/mapper/OntologyMapper.java new file mode 100644 index 0000000..891a8bf --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/OntologyMapper.java @@ -0,0 +1,18 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.Ontology; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-03-14 + */ +@Repository +public interface OntologyMapper extends BaseMapper { + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/OntologyRelationMapper.java b/api/src/main/java/com/wx/application/core/mapper/OntologyRelationMapper.java new file mode 100644 index 0000000..b62c648 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/OntologyRelationMapper.java @@ -0,0 +1,25 @@ +package com.wx.application.core.mapper; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.wx.application.core.entity.OntologyRelation; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Repository +public interface OntologyRelationMapper extends BaseMapper { + + int countByOntologyId(@Param("ontologyId") Long ontologyId); + + OntologyRelation findByOntologyIdAndLabel(@Param("ontologyId") Long ontologyId, + @Param("label") String label); + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/QuestionQaMapper.java b/api/src/main/java/com/wx/application/core/mapper/QuestionQaMapper.java new file mode 100644 index 0000000..fd2c686 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/QuestionQaMapper.java @@ -0,0 +1,18 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.QuestionQa; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2022-05-31 + */ +@Repository +public interface QuestionQaMapper extends BaseMapper { + +} diff --git a/api/src/main/java/com/wx/application/core/mapper/RiskUserMapper.java b/api/src/main/java/com/wx/application/core/mapper/RiskUserMapper.java new file mode 100644 index 0000000..f183b16 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/mapper/RiskUserMapper.java @@ -0,0 +1,18 @@ +package com.wx.application.core.mapper; + +import com.wx.application.core.entity.RiskUser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zj + * @since 2021-11-24 + */ +@Repository +public interface RiskUserMapper extends BaseMapper { + +} diff --git a/api/src/main/java/com/wx/application/core/service/GraphCaseService.java b/api/src/main/java/com/wx/application/core/service/GraphCaseService.java new file mode 100644 index 0000000..f8834f3 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/GraphCaseService.java @@ -0,0 +1,57 @@ +package com.wx.application.core.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.GraphCase; +import com.wx.application.core.mapper.GraphCaseMapper; +import com.wx.application.nebula.graph.bean.NebulaSpace; +import com.wx.application.nebula.graph.service.NebulaOperateService; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-09-23 + */ +/*@Slf4j*/ +@Service("coreGraphCaseService") +@Transactional +public class GraphCaseService extends BaseService { + + @Autowired + GraphCaseMapper baseMapper; + + @Autowired + NebulaOperateService nebulaOperateService; + + /** + * 创建工作空间 + */ + public NebulaSpace createGraphCase(GraphCase graphCase) { + + create(graphCase); + + NebulaSpace e = new NebulaSpace(); + e.setName(graphCase.getName()); + e.setComment(graphCase.getComment()); + + nebulaOperateService.createSpace(e); + + return e; + } + + public void removeGraphCase(Long id) { + GraphCase graphCase = getOne(id); + if(graphCase != null) { + nebulaOperateService.dropSpace(graphCase.getName()); + baseMapper.deleteById(id); + } + } + +} diff --git a/api/src/main/java/com/wx/application/core/service/GraphTaskService.java b/api/src/main/java/com/wx/application/core/service/GraphTaskService.java new file mode 100644 index 0000000..f0aabb6 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/GraphTaskService.java @@ -0,0 +1,32 @@ +package com.wx.application.core.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.GraphTask; +import com.wx.application.core.mapper.GraphTaskMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-08-02 + */ +/*@Slf4j*/ +@Service("coreGraphTaskService") +@Transactional +public class GraphTaskService extends BaseService { + + @Autowired + GraphTaskMapper baseMapper; + + + public int countBySpaceAndStauts(String space) { + return baseMapper.countBySpaceAndStauts(space); + } +} diff --git a/api/src/main/java/com/wx/application/core/service/OntologyConceptService.java b/api/src/main/java/com/wx/application/core/service/OntologyConceptService.java new file mode 100644 index 0000000..0d5832b --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/OntologyConceptService.java @@ -0,0 +1,217 @@ +package com.wx.application.core.service; + + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.OntologyConcept; +import com.wx.application.core.mapper.OntologyConceptMapper; +import com.wx.application.core.mapper.OntologyFieldMapper; +import com.wx.application.core.mapper.OntologyRelationMapper; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.bean.ModelVertex; +import com.wx.application.nebula.graph.service.NebulaModelService; + +import cn.hutool.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Slf4j +@Service("coreOntologyConceptService") +@Transactional +public class OntologyConceptService extends BaseService { + + @Autowired + OntologyConceptMapper baseMapper; + + @Autowired + OntologyFieldMapper ontologyFieldMapper; + + @Autowired + OntologyRelationMapper ontologyRelationMapper; + + @Autowired + NebulaModelService nebulaModelService; + + /** + * 新增概念 + */ + public OntologyConcept createOntologyConcept(OntologyConcept ontologyConcept) { + + String ownId = ontologyConcept.getOwnId(); + + /** + * 验证label + */ + OntologyConcept has = baseMapper.findByOntologyIdAndLabel(ontologyConcept.getOntologyId(), + ontologyConcept.getLabel()); + + if(has != null && has.getId() > 0) { + return has; + } + + if(StringUtils.isBlank(ontologyConcept.getOwnId())) { + ownId = Generators.vid(ontologyConcept.getLabel()); + ownId = Generators.ontologyVid(ontologyConcept.getOntologyId() , ownId); + ontologyConcept.setOwnId(ownId); + } + + create(ontologyConcept); + /** + * 将概念加入图谱中 + */ + ModelVertex mx = new ModelVertex(); + mx.setOntologyId(ontologyConcept.getOntologyId()); + mx.setLabel(ontologyConcept.getLabel()); + mx.setTagName(Generators.tagname(mx.getLabel())); + mx.setVid(ownId); + nebulaModelService.insertModelVertex(mx); + + return ontologyConcept; + } + + public Boolean modifyOntologyConcept(OntologyConcept ontologyConcept) { + + if(StringUtils.isBlank(ontologyConcept.getOwnId()) + || StringUtils.isBlank(ontologyConcept.getLabel())) { + return false; + } + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", ontologyConcept.getOwnId()); + OntologyConcept oct = baseMapper.selectOne(wrapper); + + oct.setLabel(ontologyConcept.getLabel()); + + /** + * 将概念加入图谱中 + */ + Boolean flag = false; + if(flag = modify(oct)) { + ModelVertex mx = new ModelVertex(); + mx.setOntologyId(oct.getOntologyId()); + mx.setLabel(oct.getLabel()); + mx.setTagName(Generators.tagname(mx.getLabel())); + mx.setVid(oct.getOwnId()); + nebulaModelService.insertModelVertex(mx); + } + + return flag; + } + + /** + * 递归删除 + */ + public Boolean deleteOntologyConcept(Long id) { + + try { + + if(id == null) { + return false; + } + + OntologyConcept oct = getOne(id); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("parent_id", oct.getOwnId()).or().eq("id", id); + List childs = baseMapper.selectList(wrapper); + baseMapper.delete(wrapper); + + List vids = childs.stream().map(OntologyConcept::getOwnId).collect(Collectors.toList()); + + /** + * 删除图谱中的点 + */ + nebulaModelService.deleteModelVertexs(vids); + + if(childs != null) { + for(OntologyConcept ot : childs) { + deleteOntologyConcept(ot.getId()); + } + } + } catch (Exception e) { + log.info("{}",e); + return false; + } + return true; + } + + /** + * 根据本体id统计 + * @param ontologyId + * @return + */ + public JSONObject countAllByOntologyId(Long ontologyId) { + + int conceptc = baseMapper.countByOntologyId(ontologyId); + int fieldc = ontologyFieldMapper.countByOntologyId(ontologyId); + int relationc = ontologyRelationMapper.countByOntologyId(ontologyId); + + JSONObject result = new JSONObject(); + result.set("conceptc", conceptc); + result.set("fieldc", fieldc); + result.set("relationc", relationc); + + return result; + } + + + public Integer countChildbyid(Long id) { + + if(id == null) { + return 0; + } + + OntologyConcept oct = getOne(id); + + if(oct == null) { + return 0; + } + + Integer c = baseMapper.countChildbyid(oct.getOwnId()); + + return c; + } + + + public List findWithParents(String ownId) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", ownId); + OntologyConcept own = baseMapper.selectOne(wrapper); + List concepts = null; + if(own != null) { + concepts = new ArrayList<>(); + findWithParents(own, concepts); + } + return concepts; + } + + /** + * 递归 + * 查询当前节点的值属性,包含继承的值属性 + */ + public void findWithParents(OntologyConcept own, List concepts) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", own.getParentId()); + OntologyConcept pa = baseMapper.selectOne(wrapper); + if(pa != null) { + concepts.add(pa); + findWithParents(pa, concepts); + } + } + +} diff --git a/api/src/main/java/com/wx/application/core/service/OntologyFieldService.java b/api/src/main/java/com/wx/application/core/service/OntologyFieldService.java new file mode 100644 index 0000000..51250d3 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/OntologyFieldService.java @@ -0,0 +1,248 @@ +package com.wx.application.core.service; + + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.OntologyField; +import com.wx.application.core.mapper.OntologyFieldMapper; +import com.wx.application.nebula.graph.bean.ModelVertex; +import com.wx.application.nebula.graph.bean.NebulaField; +import com.wx.application.nebula.graph.query.NebulaNode; +import com.wx.application.nebula.graph.service.NebulaModelService; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Slf4j +@Service("coreOntologyFieldService") +@Transactional +public class OntologyFieldService extends BaseService { + + @Autowired + OntologyFieldMapper baseMapper; + + @Autowired + NebulaModelService nebulaModelService; + + public OntologyField createOntologyField(OntologyField ontologyField) { + /** + * 验证label + */ + OntologyField has = baseMapper.findByOntologyIdAndLabel(ontologyField.getOntologyId(), + ontologyField.getField()); + + if(has != null && has.getId() > 0) { + return has; + } + + return create(ontologyField); + } + + /** + * 根据选择的概念添加属性 + * @param OntologyField + */ + public void createConceptField(OntologyField ontologyField) { + + Long id = ontologyField.getId(); + + OntologyField field = getOne(id); + + if(field == null) { + return; + } + + List vids = ontologyField.getConceptIds(); + + /** + * 先获得本体的所有概念 + */ + List nodes = nebulaModelService.findNodesByOntologyId(field.getOntologyId()); + + for(NebulaNode node : nodes) { + + List fields = null; + NebulaField nf = null; + + String operate = null; + int findex = -1; + + JSONObject properties = node.getProperties(); + JSONArray fieldsnapshot = properties.getJSONArray("nebulafieldsnapshot"); + ModelVertex vertex = properties.toBean(ModelVertex.class); + + if(vids.contains(node.getVid())) { + operate = "add"; + } + + /** + * 如果当前概念包括值属性 + */ + if(fieldsnapshot != null) { + fields = fieldsnapshot.toList(NebulaField.class); + List fieldnames = fields.stream().map(NebulaField::getField).collect(Collectors.toList()); + if(fieldnames.contains(field.getField())) { + operate = vids.contains(node.getVid())?"have":"remove"; + findex = fieldnames.indexOf(field.getField()); + } + } + + if("add".equals(operate) || "remove".equals(operate)) { + if(fields == null) { + fields = new ArrayList<>(); + } + switch (operate) { + case "add": + BeanUtil.copyProperties(field, nf = new NebulaField()); + fields.add(nf); + break; + case "remove": + if(findex > -1) { + fields.remove(findex); + } + break; + default: + break; + } + vertex.setFields(fields); + vertex.setVid(node.getVid()); + nebulaModelService.insertModelVertex(vertex); + } + } + } + + + public void deleteConceptField(Long id) { + + OntologyField field = getOne(id); + + if(field == null) { + return; + } + /** + * 先获得本体的所有概念 + */ + List nodes = nebulaModelService.findNodesByOntologyId(field.getOntologyId()); + + List fields = null; + + for(NebulaNode node : nodes) { + + int findex = -1; + String operate = null; + + JSONObject properties = node.getProperties(); + JSONArray fieldsnapshot = properties.getJSONArray("nebulafieldsnapshot"); + ModelVertex vertex = properties.toBean(ModelVertex.class); + + /** + * 如果当前概念包括值属性 + */ + if(fieldsnapshot != null) { + fields = fieldsnapshot.toList(NebulaField.class); + List fieldnames = fields.stream().map(NebulaField::getField).collect(Collectors.toList()); + if(fieldnames.contains(field.getField())) { + operate = "remove"; + findex = fieldnames.indexOf(field.getField()); + } + } + + if(StringUtils.isNotBlank(operate)) { + switch (operate) { + case "remove": + if(findex > -1) { + fields.remove(findex); + } + break; + default: + break; + } + vertex.setFields(fields); + vertex.setVid(node.getVid()); + nebulaModelService.insertModelVertex(vertex); + } + + } + remove(id); + } + + public void modifyOntologyField(OntologyField ontologyField) { + + Long id = ontologyField.getId(); + + OntologyField field = getOne(id); + + if(field == null) { + return; + } + + /** + * 先获得本体的所有概念 + */ + List nodes = nebulaModelService.findNodesByOntologyId(field.getOntologyId()); + + List fields = null; + + for(NebulaNode node : nodes) { + + int findex = -1; + String operate = null; + + JSONObject properties = node.getProperties(); + JSONArray fieldsnapshot = properties.getJSONArray("nebulafieldsnapshot"); + ModelVertex vertex = properties.toBean(ModelVertex.class); + + /** + * 如果当前概念包括值属性 + */ + if(fieldsnapshot != null) { + fields = fieldsnapshot.toList(NebulaField.class); + List fieldnames = fields.stream().map(NebulaField::getField).collect(Collectors.toList()); + if(fieldnames.contains(field.getField())) { + operate = "modify"; + findex = fieldnames.indexOf(field.getField()); + } + } + + if(StringUtils.isNotBlank(operate)) { + switch (operate) { + case "modify": + if(findex > -1) { + fields.remove(findex); + } + NebulaField nf = null; + BeanUtil.copyProperties(ontologyField, nf = new NebulaField()); + fields.add(nf); + break; + default: + break; + } + vertex.setFields(fields); + vertex.setVid(node.getVid()); + nebulaModelService.insertModelVertex(vertex); + } + + } + + modify(ontologyField); + } + +} diff --git a/api/src/main/java/com/wx/application/core/service/OntologyRelationService.java b/api/src/main/java/com/wx/application/core/service/OntologyRelationService.java new file mode 100644 index 0000000..c1fe5be --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/OntologyRelationService.java @@ -0,0 +1,208 @@ +package com.wx.application.core.service; + + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.OntologyRelation; +import com.wx.application.core.mapper.OntologyRelationMapper; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.bean.ModelEdgeLine; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.query.NebulaRelation; +import com.wx.application.nebula.graph.service.NebulaModelService; + +import cn.hutool.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-09-25 + */ +@Slf4j +@Service("coreOntologyRelationService") +@Transactional +public class OntologyRelationService extends BaseService { + + @Autowired + OntologyRelationMapper baseMapper; + + + @Autowired + NebulaModelService nebulaModelService; + + public OntologyRelation createOntologyRelation(OntologyRelation ontologyRelation) { + /** + * 验证label + */ + OntologyRelation has = baseMapper.findByOntologyIdAndLabel(ontologyRelation.getOntologyId(), + ontologyRelation.getLabel()); + + if(has != null && has.getId() > 0) { + return has; + } + + return create(ontologyRelation); + } + + /** + * 新增对象属性 + */ + public Boolean createRelations(OntologyRelation ontologyRelation) { + + try { + + Long id = ontologyRelation.getId(); + List srcIds = ontologyRelation.getSrcIds(); + List dstIds = ontologyRelation.getDctIds(); + if(id == null) { + return false; + } + + OntologyRelation orl = getOne(id); + + if(orl == null) { + return false; + } + + /** + * 根据label标签查询关系,目前库里已经存在的 + */ + List relations = nebulaModelService + .findRelationsByLabel(orl.getLabel()); + + + List newRelations = new ArrayList<>(); + + if(srcIds != null && dstIds != null) { + srcIds.forEach(srcId->{ + dstIds.forEach(dstId->{ + NebulaRelation ln = new NebulaRelation(); + ln.setSrcId(srcId); + ln.setDstId(dstId); + newRelations.add(ln); + }); + }); + } + + + relations.forEach(v-> { + if(!newRelations.contains(v)) { + NebulaEdgeLine el = new NebulaEdgeLine(); + el.setSrcId(v.getSrcId()); + el.setDstId(v.getDstId()); + nebulaModelService.deleteModelEdge(el); + } else { + newRelations.remove(v); + } + }); + + newRelations.forEach(v-> { + ModelEdgeLine el = new ModelEdgeLine(); + el.setSrcId(v.getSrcId()); + el.setDstId(v.getDstId()); + el.setLabel(orl.getLabel()); + el.setEdgeName(Generators.edgename(orl.getLabel())); + el.setOntologyId(orl.getOntologyId()); + nebulaModelService.insertModelEdge(el); + }); + + + } catch (Exception e) { + log.info("{}",e); + return false; + } + return true; + } + + public Boolean modifyOntologyRelation(OntologyRelation ontologyRelation) { + + Long id = ontologyRelation.getId(); + + OntologyRelation orl = getOne(id); + String oldname = orl.getLabel(); + + Boolean flag = false; + if(flag = modify(ontologyRelation)) { + + /** + * 根据label标签查询关系 + */ + List relations = nebulaModelService + .findRelationsByLabel(oldname); + + for(NebulaRelation relation : relations) { + JSONObject properties = relation.getProperties(); + ModelEdgeLine el = properties.toBean(ModelEdgeLine.class); + el.setSrcId(relation.getSrcId()); + el.setDstId(relation.getDstId()); + el.setLabel(ontologyRelation.getLabel()); + el.setEdgeName(Generators.edgename(ontologyRelation.getLabel())); + nebulaModelService.insertModelEdge(el); + } + + } + + return flag; + } + + /** + * 递归删除 + */ + public Boolean deleteOntologyRelation(Long id) { + + try { + /** + * 根据id 查询所有的子项和自己 + */ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("parent_id", id).or().eq("id", id); + + List ors = baseMapper.selectList(wrapper); + baseMapper.delete(wrapper); + + List names = ors.stream().map(OntologyRelation::getLabel).collect(Collectors.toList()); + + names.forEach(v-> { + /** + * 根据label标签查询关系 + */ + List relations = nebulaModelService + .findRelationsByLabel(v); + + NebulaEdgeLine edge = null; + for(NebulaRelation r : relations) { + edge = new NebulaEdgeLine(); + edge.setSrcId(r.getSrcId()); + edge.setDstId(r.getDstId()); + nebulaModelService.deleteModelEdge(edge); + } + }); + + if(ors != null) { + for(OntologyRelation ot : ors) { + if(ot.getId() == id) { + continue; + } + deleteOntologyRelation(ot.getId()); + } + } + } catch (Exception e) { + log.info("{}",e); + return false; + } + return true; + } + +} diff --git a/api/src/main/java/com/wx/application/core/service/OntologyService.java b/api/src/main/java/com/wx/application/core/service/OntologyService.java new file mode 100644 index 0000000..5cc3d94 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/OntologyService.java @@ -0,0 +1,27 @@ +package com.wx.application.core.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.Ontology; +import com.wx.application.core.mapper.OntologyMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-03-14 + */ +/*@Slf4j*/ +@Service("coreOntologyService") +@Transactional +public class OntologyService extends BaseService { + + @Autowired + OntologyMapper baseMapper; +} diff --git a/api/src/main/java/com/wx/application/core/service/QuestionQaService.java b/api/src/main/java/com/wx/application/core/service/QuestionQaService.java new file mode 100644 index 0000000..1507b12 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/QuestionQaService.java @@ -0,0 +1,27 @@ +package com.wx.application.core.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.QuestionQa; +import com.wx.application.core.mapper.QuestionQaMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2022-05-31 + */ +/*@Slf4j*/ +@Service("coreQuestionQaService") +@Transactional +public class QuestionQaService extends BaseService { + + @Autowired + QuestionQaMapper baseMapper; +} diff --git a/api/src/main/java/com/wx/application/core/service/RiskUserService.java b/api/src/main/java/com/wx/application/core/service/RiskUserService.java new file mode 100644 index 0000000..dcf9303 --- /dev/null +++ b/api/src/main/java/com/wx/application/core/service/RiskUserService.java @@ -0,0 +1,27 @@ +package com.wx.application.core.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.wx.application.base.BaseService; +import com.wx.application.core.entity.RiskUser; +import com.wx.application.core.mapper.RiskUserMapper; + +/** + *

+ * 服务类 + *

+ * + * @author zj + * @since 2021-11-24 + */ +/*@Slf4j*/ +@Service("coreRiskUserService") +@Transactional +public class RiskUserService extends BaseService { + + @Autowired + RiskUserMapper baseMapper; +} diff --git a/api/src/main/java/com/wx/application/exception/CommonException.java b/api/src/main/java/com/wx/application/exception/CommonException.java new file mode 100644 index 0000000..e74411a --- /dev/null +++ b/api/src/main/java/com/wx/application/exception/CommonException.java @@ -0,0 +1,27 @@ +package com.wx.application.exception; + +import com.wx.application.base.ErrorCodeEnum; + +public class CommonException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public CommonException() { + super(); + } + + public CommonException(Throwable e) { + super(e.getMessage(), e); + } + + public CommonException(String message) { + super(message); + } + + public CommonException(ErrorCodeEnum responseCodeEnum) { + super(responseCodeEnum.toString()); + } +} diff --git a/api/src/main/java/com/wx/application/exception/GlobalExceptionHandler.java b/api/src/main/java/com/wx/application/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..f75e44f --- /dev/null +++ b/api/src/main/java/com/wx/application/exception/GlobalExceptionHandler.java @@ -0,0 +1,97 @@ +package com.wx.application.exception; + +import com.baomidou.kaptcha.exception.KaptchaException; +import com.baomidou.kaptcha.exception.KaptchaIncorrectException; +import com.baomidou.kaptcha.exception.KaptchaNotFoundException; +import com.baomidou.kaptcha.exception.KaptchaTimeoutException; +import com.wx.application.base.ErrorCodeEnum; +import com.wx.application.base.ResponseData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; +import org.springframework.context.NoSuchMessageException; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.context.support.DefaultMessageSourceResolvable; +import org.springframework.core.annotation.Order; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Locale; + +import static com.wx.application.base.ErrorCodeEnum.PARAM_ERROR; + + +@ControllerAdvice +@Slf4j +@Order(1) +public class GlobalExceptionHandler { + + @Autowired + private MessageSource messageSource; + + /** + * 全局统一异常处理 + */ + @ExceptionHandler(value = {CommonException.class, Exception.class}) + @ResponseBody + public ResponseData handler(Exception e) { + // 获取local国际化信息 + Locale locale = LocaleContextHolder.getLocale(); + // 国际化message信息 + String msg = null; + String errCode = null; + try { + errCode = e.getMessage(); + msg = messageSource.getMessage(e.getMessage(), null, locale); + } catch (NoSuchMessageException ex) { + errCode = e.getClass().getSimpleName(); + msg = e.getMessage(); + } + log.error("全局异常捕获: {}", msg, e); + return ResponseData.ERROR(errCode, msg, null); + } + + /** + * 全局统一异常处理 + */ + @ExceptionHandler(value = KaptchaException.class) + @ResponseBody + public ResponseData handler(KaptchaException e) { + // 获取local国际化信息 + Locale locale = LocaleContextHolder.getLocale(); + // 国际化message信息 + String msg = null; + String errCode = null; + try { + if (e instanceof KaptchaIncorrectException) { + errCode = "KAPTCHA_INCORRECT"; + } else if (e instanceof KaptchaNotFoundException) { + errCode = "KAPTCHA_NOT_FOUND"; + } else if (e instanceof KaptchaTimeoutException) { + errCode = "KAPTCHA_TIMEOUT"; + } else { + errCode = "KAPTCHA_ERROR"; + } + msg = messageSource.getMessage(errCode, null, locale); + } catch (NoSuchMessageException ex) { + errCode = ErrorCodeEnum.SYSTEM_ERROR.toString(); + msg = e.getMessage(); + } + log.error("全局异常捕获: {}", msg, e); + return ResponseData.ERROR(errCode, msg, null); + } + + /** + * 全局统一异常处理 + */ + @ExceptionHandler(value = MethodArgumentNotValidException.class) + @ResponseBody + public ResponseData handler(MethodArgumentNotValidException e) { + String errorMessage = e.getBindingResult().getAllErrors().stream() + .map(DefaultMessageSourceResolvable::getDefaultMessage).reduce((s1, s2) -> s1.concat(",").concat(s2)).get(); + log.error("入参异常捕获: {}", errorMessage, e); + return ResponseData.ERROR(PARAM_ERROR, errorMessage, null); + } +} diff --git a/api/src/main/java/com/wx/application/filter/GlobalRequestBodyAdvice.java b/api/src/main/java/com/wx/application/filter/GlobalRequestBodyAdvice.java new file mode 100644 index 0000000..bb8f911 --- /dev/null +++ b/api/src/main/java/com/wx/application/filter/GlobalRequestBodyAdvice.java @@ -0,0 +1,63 @@ +package com.wx.application.filter; + +import cn.hutool.core.io.IoUtil; +import com.alibaba.fastjson.JSON; +import com.wx.application.configuration.annotation.AspectOff; +import com.wx.application.constant.CONSTANT; +import lombok.Cleanup; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; +import org.springframework.core.MethodParameter; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpInputMessage; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.RequestBodyAdvice; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Type; + +@Slf4j +@Order(5) +@ControllerAdvice() +public class GlobalRequestBodyAdvice implements RequestBodyAdvice { + @Override + public boolean supports(MethodParameter methodParameter, Type type, Class> aClass) { + return !methodParameter.getMethod().isAnnotationPresent(AspectOff.class); + } + + @Override + public HttpInputMessage beforeBodyRead(HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class> aClass) throws IOException { + return new HttpInputMessage() { + @SneakyThrows + @Override + public InputStream getBody() { + // 获取 json 字符串 + @Cleanup ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + IoUtil.copy(httpInputMessage.getBody(), byteArrayOutputStream); + String bodyStr = new String(byteArrayOutputStream.toByteArray()); + log.info("请求信息: url: {} header: {} , body: {}", MDC.get(CONSTANT.REQUEST_URL), JSON.toJSONString(httpInputMessage.getHeaders().entrySet()), bodyStr); + return IoUtil.toStream(byteArrayOutputStream.toByteArray()); + } + + @Override + public HttpHeaders getHeaders() { + return httpInputMessage.getHeaders(); + } + }; + } + + @Override + public Object afterBodyRead(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class> aClass) { + return o; + } + + @Override + public Object handleEmptyBody(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class> aClass) { + return o; + } +} diff --git a/api/src/main/java/com/wx/application/filter/GlobalResponseBodyAdvice.java b/api/src/main/java/com/wx/application/filter/GlobalResponseBodyAdvice.java new file mode 100644 index 0000000..6067e7b --- /dev/null +++ b/api/src/main/java/com/wx/application/filter/GlobalResponseBodyAdvice.java @@ -0,0 +1,46 @@ +package com.wx.application.filter; + +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.MethodParameter; +import org.springframework.core.annotation.Order; +import org.springframework.http.MediaType; +import org.springframework.http.server.ServerHttpRequest; +import org.springframework.http.server.ServerHttpResponse; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.wx.application.base.ResponseData; +import com.wx.application.configuration.annotation.AspectOff; +import com.wx.application.constant.CONSTANT; + +import lombok.SneakyThrows; + +@Order(5) +@ControllerAdvice +public class GlobalResponseBodyAdvice implements ResponseBodyAdvice { + @Autowired + ObjectMapper objectMapper; + + @Override + public boolean supports(MethodParameter methodParameter, Class aClass) { + return !methodParameter.getMethod().isAnnotationPresent(AspectOff.class); + } + + @SneakyThrows + @Override + public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) { + //log.info("返回信息: header: {} , body: {}", JSON.toJSONString(serverHttpResponse.getHeaders().entrySet()), objectMapper.writeValueAsString(o)); + serverHttpResponse.getHeaders().add(CONSTANT.X_REQ_ID, MDC.get(CONSTANT.REQUEST_ID_KEY)); + if (o instanceof ResponseData) { + //统一回填header信息 + ResponseData responseData = (ResponseData) o; + responseData.setRequestId(MDC.get(CONSTANT.REQUEST_ID_KEY)); + MDC.clear(); + return responseData; + } + MDC.clear(); + return o; + } +} diff --git a/api/src/main/java/com/wx/application/filter/JwtAuthFilter.java b/api/src/main/java/com/wx/application/filter/JwtAuthFilter.java new file mode 100644 index 0000000..e6a383a --- /dev/null +++ b/api/src/main/java/com/wx/application/filter/JwtAuthFilter.java @@ -0,0 +1,120 @@ +package com.wx.application.filter; + +import java.io.IOException; +import java.util.UUID; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpMethod; +import org.springframework.util.AntPathMatcher; +import org.springframework.web.context.support.SpringBeanAutowiringSupport; + +import com.alibaba.fastjson.JSON; +import com.wx.application.base.BaseController; +import com.wx.application.base.ErrorCodeEnum; +import com.wx.application.base.ResponseData; +import com.wx.application.configuration.FilterIgnorePropertiesConfig; +import com.wx.application.constant.CONSTANT; +import com.wx.application.util.JwtUtils; + +/** + * jwt 拦截过滤器 + * + * @comment + */ +@WebFilter(filterName = "jwtFilter", urlPatterns = "/*") +@Order(2) +//@Slf4j +public class JwtAuthFilter extends BaseController implements Filter { + @Autowired + private FilterIgnorePropertiesConfig ignores; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, + filterConfig.getServletContext()); + + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpServletResponse httpResponse = (HttpServletResponse) response; + + String uri = httpRequest.getRequestURI(); + String token = httpRequest.getHeader(CONSTANT.TOKEN_NAME); + + requestInitialized(httpRequest); + + ResponseData errorMsg = null; + + try { + if (matchIgnore(uri)) { + chain.doFilter(request, response); + return; + } else if (HttpMethod.OPTIONS.name().equals(httpRequest.getMethod())) { + httpResponse.setStatus(HttpServletResponse.SC_OK); + chain.doFilter(request, response); + return; + } else { + if (StringUtils.isEmpty(token)) { + errorMsg = error(ErrorCodeEnum.UNAUTHORIZED); + return; + } + //检查jwt有效性 + if (!JwtUtils.checkTokenExpired(token)) { + errorMsg = error(ErrorCodeEnum.AUTHORIZATION_EXPIRED); + return; + } + chain.doFilter(request, response); + return; + } + } catch (Exception ex) { + ex.printStackTrace(); + } finally { + if (null != errorMsg) { + errorMsg.setRequestId(MDC.get(CONSTANT.REQUEST_ID_KEY)); + httpResponse.setContentType("application/json;charset=utf-8"); + httpResponse.getWriter().write(JSON.toJSONString(errorMsg)); + } + } + } + + @Override + public void destroy() { + } + + /** + * 初始化request 记录全局唯一的标识 + */ + public void requestInitialized(HttpServletRequest request) { + String requestId = null; + if (request != null) { + requestId = request.getHeader(CONSTANT.X_REQ_ID); + } + if (org.apache.commons.lang.StringUtils.isBlank(requestId)) { + requestId = UUID.randomUUID().toString(); + } + MDC.put(CONSTANT.REQUEST_ID_KEY, requestId); + MDC.put(CONSTANT.REQUEST_URL, request.getRequestURI()); + } + + private boolean matchIgnore(String uri) { + AntPathMatcher pm = new AntPathMatcher(); + boolean match = ignores.getUrls().stream().anyMatch(v -> pm.match(v, uri)); + return match; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java b/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java new file mode 100644 index 0000000..adf1e66 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/BaseGraphSerice.java @@ -0,0 +1,1063 @@ +package com.wx.application.nebula.graph.base; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; + +import com.vesoft.nebula.client.graph.data.ResultSet; +import com.vesoft.nebula.client.graph.net.Session; +import com.wx.application.nebula.graph.bean.NebulaEdge; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.bean.NebulaField; +import com.wx.application.nebula.graph.bean.NebulaIndex; +import com.wx.application.nebula.graph.bean.NebulaSpace; +import com.wx.application.nebula.graph.bean.NebulaTag; +import com.wx.application.nebula.graph.bean.NebulaVertex; +import com.wx.application.nebula.graph.enums.DataType; +import com.wx.application.nebula.graph.factory.NebulaGraphClient; +import com.wx.application.nebula.graph.query.NebulaModel; +import com.wx.application.nebula.graph.query.NebulaNode; +import com.wx.application.nebula.graph.query.NebulaRelation; +import com.wx.application.nebula.graph.query.PageRequest; +import com.wx.application.nebula.graph.query.TermQueryBuilder; +import com.wx.application.util.JSONUtils; +import com.wx.application.util.UUIDGenerator; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import lombok.extern.slf4j.Slf4j; + +/** + * 动态语句库 + */ +@Slf4j +public class BaseGraphSerice { + + /*@Autowired + Session session;*/ + + @Value("${nebula.grap}") + private Boolean logGraph; + + @Autowired + NebulaGraphClient client; + + public ResultSet executeGql(String space, String nGql) { + String us = ""; + if(StringUtils.isNotBlank(space)) { + us = useSpace(space); + } + + Session session = null; + ResultSet resultSet = null; + try { + if(logGraph) { + log.info(nGql); + } + session= client.getSession(); + resultSet = session.execute(us + nGql); + } catch (Exception e) { + e.printStackTrace(); + } finally { + client.returnSession(session); + } + + return resultSet; + } + + + + /** + * 查看所有的图空间 + */ + public List showSpace() { + ResultSet resultSet = executeGql(null, GqlTemplate.SHOWSPACES); + return ResultSetUtils.printResultObject(resultSet); + } + + + /** + * 在当前图空间内启动一个作业,该作业对当前图空间进行统计 + * @param space + * @return + */ + public Integer submitJobStats(final String space) { + final String nGql = StrUtil.format(GqlTemplate.SUBMITJOBSTATS); + ResultSet resultSet = executeGql(space, nGql); + List rt = ResultSetUtils.printResultObject(resultSet); + if(rt != null && rt.size() > 0) { + return rt.get(0).getInt("New Job Id"); + } + return null; + } + + /** + * 在当前图空间内启动一个作业,该作业对当前图空间进行统计 + * @param space + * @return + */ + public List showStats(final String space) { + final String nGql = StrUtil.format(GqlTemplate.SHOWSTATS); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultObject(resultSet, 3); + } + + + public void stopJob(final String space, Integer jobId) { + final String nGql = StrUtil.format(GqlTemplate.STOPJOB, jobId); + executeGql(space, nGql); + } + + /** + * 空间创建语句 + * @param space + * @return + */ + public void createSpace(NebulaSpace e) { + final String nGql = StrUtil.format(GqlTemplate.CREATESPACE, + e.getName(), e.getVidType().name(), e.getVidLen(), e.getComment()); + executeGql(null, nGql); + } + + /** + * 使用莫个图空间 + * @param e + * @return + */ + public String useSpace(String e) { + return StrUtil.format(GqlTemplate.USESPACE, e); + } + + + /** + * 删除莫个图空间 + * @param e + * @return + */ + public void dropSpace(String e) { + final String nGql = StrUtil.format(GqlTemplate.DROPSPACE, e); + executeGql(null, nGql); + } + + /** + * 显示莫个图空间的详细信息 + * @param e + * @return + */ + public JSONObject descSpace(String e) { + final String nGql = StrUtil.format(GqlTemplate.DESCSPACE, e); + ResultSet resultSet = executeGql(null,nGql); + return ResultSetUtils.printResultObject(resultSet,8).get(0); + } + + + /** + * 标签创建语句 + * @param space + * @return + */ + public void createTag(final String space, NebulaTag e) { + final String tag = e.getName(); + final String fields = FieldsUtils.toStringFields(e.getFields()); + final String comment = e.getComment(); + final String nGql = StrUtil.format(GqlTemplate.CREATETAG, tag, fields, comment); + executeGql(space, nGql); + } + + + /** + * 标签添加字段语句 + * @param space + * @return + */ + public void alterAddTag(final String space, NebulaTag e) { + final String tag = e.getName(); + final String fields = FieldsUtils.toStringFields(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERADDTAG, tag, fields); + executeGql(space, nGql); + } + + + /** + * 标签删除字段语句 + * @param space + * @return + */ + public void alterDropTag(final String space, NebulaTag e) { + final String tag = e.getName(); + final String fields = FieldsUtils.toStringFieldNames(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERDROPTAG, tag, fields); + executeGql(space, nGql); + } + + /** + * 标签修改字段语句 + * @param space + * @return + */ + public void alterChangeTag(final String space, NebulaTag e) { + final String tag = e.getName(); + final String fields = FieldsUtils.toStringFields(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERCHANGETAG, tag, fields); + executeGql(space, nGql); + } + + /** + * 标签删除 + * @param e + * @return + */ + public void dropTag(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.DROPTAG, e); + executeGql(space, nGql); + } + + + /** + * 查看所有标签 + * @param e + * @return + */ + public List showTag(final String space, Boolean fushComment) { + + final String nGql = StrUtil.format(GqlTemplate.SHOWTAGS); + ResultSet resultSet = executeGql(space, nGql); + List rs = ResultSetUtils.printResultObject(resultSet); + + if(!fushComment) { + return rs; + } + + int tn = 20; + List> lists = ListUtil.split(rs, (rs.size() / tn) + 1); + ExecutorService executor = Executors.newFixedThreadPool(tn); + + for(List fn : lists) { + executor.submit(new Runnable() { + @Override + public void run() { + fn.forEach(v->{ + JSONObject a = showCreateTag(space, v.getStr("Name")); + String content = a.getStr("create tag"); + List resultFindAll = ReUtil.findAll("(comment = \")(.+)(\")", + content, 2, new ArrayList()); + + if(resultFindAll == null || resultFindAll.size() == 0){ + return; + } + v.set("comment", StringUtils.join(resultFindAll,",")); + }); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.SECONDS)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return rs; + } + + /** + * 标签查看详细信息 + * @param e + * @return + */ + public List descTag(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.DESCRIBETAG, e); + ResultSet resultSet = executeGql(space, nGql); + /** + * 变量处理结果集 + */ + return ResultSetUtils.printResultObject(resultSet, 5); + } + + /** + * 标签查看详细信息 + * @param e + * @return + */ + public JSONObject showCreateTag(final String space, String e) { + + final String nGql = StrUtil.format(GqlTemplate.SHOWCREATETAG, e); + ResultSet resultSet = executeGql(space, nGql); + /** + * 变量处理结果集 + */ + List rs = ResultSetUtils.printResultObject(resultSet, 2); + JSONObject a = rs.get(0); + + String content = a.getStr("create tag"); + List resultFindAll = ReUtil.findAll("(comment = \")(.+)(\")", + content, 2, new ArrayList()); + + if(resultFindAll != null && resultFindAll.size() > 0){ + a.set("comment", StringUtils.join(resultFindAll,",")); + } + + return a; + } + + /** + * 边创建语句 + * @param space + * @return + */ + public void createEdge(final String space, NebulaEdge e) { + final String LABEL = "label"; + final String edge = e.getName(); + /** + * 创建edge时 默认补充 一个label标签 显示关系上的名称 + */ + List fieldLists = e.getFields(); + if(fieldLists == null) { + fieldLists = new ArrayList<>(); + } + List fns = fieldLists.stream().map(NebulaField::getField).collect(Collectors.toList()); + if(!fns.contains(LABEL)) { + NebulaField field = new NebulaField(); + field.setField(LABEL); + field.setComment("标签"); + field.setType(DataType.STRING); + fieldLists.add(field); + } + final String fields = FieldsUtils.toStringFields(fieldLists); + final String comment = e.getComment(); + final String nGql = StrUtil.format(GqlTemplate.CREATEEDGE, edge, fields, comment); + executeGql(space, nGql); + } + + + /** + * 边添加字段语句 + * @param space + * @return + */ + public void alterAddEdge(final String space, NebulaEdge e) { + final String edge = e.getName(); + final String fields = FieldsUtils.toStringFields(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERADDEDGE, edge, fields); + executeGql(space, nGql); + } + + + /** + * 边删除字段语句 + * @param space + * @return + */ + public void alterDropEdge(final String space, NebulaEdge e) { + final String edge = e.getName(); + final String fields = FieldsUtils.toStringFieldNames(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERDROPEDGE, edge, fields); + executeGql(space, nGql); + } + + /** + * 边修改字段语句 + * @param space + * @return + */ + public void alterChangeEdge(final String space, NebulaEdge e) { + final String edge = e.getName(); + final String fields = FieldsUtils.toStringFields(e.getFields()); + final String nGql = StrUtil.format(GqlTemplate.ALTERCHANGEEDGE, edge, fields); + executeGql(space, nGql); + } + + /** + * 边删除 + * @param e + * @return + */ + public void dropEdge(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.DROPEDGE, e); + executeGql(space, nGql); + } + + + /** + * 查看所有边 + * @param e + * @return + */ + public List showEdge(final String space, Boolean fushComment) { + + final String nGql = StrUtil.format(GqlTemplate.SHOWEDGES); + ResultSet resultSet = executeGql(space, nGql); + List rs = ResultSetUtils.printResultObject(resultSet); + + if(!fushComment) { + return rs; + } + + int tn = 20; + + List> lists = ListUtil.split(rs, (rs.size() / tn) + 1); + ExecutorService executor = Executors.newFixedThreadPool(tn); + + for(List fn : lists) { + executor.submit(new Runnable() { + @Override + public void run() { + fn.forEach(v->{ + JSONObject a = showCreateEdge(space, v.getStr("Name")); + String content = a.getStr("create edge"); + List resultFindAll = ReUtil.findAll("(comment = \")(.+)(\")", + content, 2, new ArrayList()); + + if(resultFindAll == null || resultFindAll.size() == 0){ + return; + } + v.set("comment", StringUtils.join(resultFindAll,",")); + }); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.SECONDS)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + return rs; + } + + + /** + * 标签查看详细信息 + * @param e + * @return + */ + public JSONObject showCreateEdge(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.SHOWCREATEEDGE, e); + ResultSet resultSet = executeGql(space, nGql); + /** + * 变量处理结果集 + */ + List rs = ResultSetUtils.printResultObject(resultSet, 2); + JSONObject a = rs.get(0); + + String content = a.getStr("create edge"); + List resultFindAll = ReUtil.findAll("(comment = \")(.+)(\")", + content, 2, new ArrayList()); + + if(resultFindAll != null && resultFindAll.size() > 0){ + a.set("comment", StringUtils.join(resultFindAll,",")); + } + + return a; + } + + /** + * 边查看详细信息 + * @param e + * @return + */ + public List descEdge(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.DESCRIBEEDGE, e); + ResultSet resultSet = executeGql(space, nGql); + /** + * 变量处理结果集 + */ + return ResultSetUtils.printResultObject(resultSet,5); + } + + /** + * 索引创建语句 + * @param e + * @return + */ + public void createIndex(final String space, NebulaIndex e) { + final String type = e.getType().name(); + final String name = e.getName(); + final String onname = e.getOnName(); + final String fields = FieldsUtils.toIndexFields(e.getFields()); + final String comment = e.getComment(); + final String nGql = StrUtil.format(GqlTemplate.CREATEINDEX, type, name, onname, fields, comment); + executeGql(space, nGql); + } + + /** + * 查看边或者标签的索引 + * @param e + * @return + */ + public List showIndex(final String space, String e) { + final String nGql = StrUtil.format(GqlTemplate.SHOWINDEX, e); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultObject(resultSet); + } + + /** + * 删除边或者标签的索引 + * @param e + * @return + */ + public void dropIndex(final String space, NebulaIndex e) { + final String type = e.getType().name(); + final String name = e.getName(); + final String nGql = StrUtil.format(GqlTemplate.DROPINDEX, type, name); + executeGql(space, nGql); + } + + + /** + * 删除点语句 + */ + public void deleteVertex(final String space, String vid) { + if(StringUtils.isBlank(vid)) { + return; + } + final String nGql = StrUtil.format(GqlTemplate.DELETEVERTEX, vid); + executeGql(space, nGql); + } + + /** + * 删除点语句 + */ + public void deleteVertexs(final String space, final String tag, List vids) { + Set stIds = new HashSet<>(); + vids.forEach(v->{ + if(StringUtils.isBlank(v)) { + return; + } + final String fmtVid = StrUtil.format("\"{}\"", v); + stIds.add(fmtVid); + }); + + if(stIds.size() > 0) { + final String nGql = StrUtil.format(GqlTemplate.DELETEVERTEXBYVIDS, tag, StringUtils.join(stIds, ",")); + executeGql(space, nGql); + } + } + + /** + * 根据条件删除点 + */ + public List deleteVertexConduit(final String space, + final String tag, + TermQueryBuilder builder) { + String nGql = GqlTemplate.DELETEVERTEXCONDUIT; + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(tag))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, tag, query); + } + + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultVertex(resultSet); + } + + /** + * 添加点语句 + */ + public void insertVertex(final String space,final String tag, NebulaVertex e) { + + String vid = StringUtils.isBlank(e.getVid())?UUIDGenerator.getUUID():e.getVid(); + e.setVid(vid); + final String fmtVid = StrUtil.format("\"{}\"", vid); + + JSONObject ob = e.getOb(); + List columns = new ArrayList<>(); + List values = new ArrayList<>(); + for(String key : ob.keySet()) { + columns.add(key); + Object value = ob.get(key); + if(value == null) { + values.add(null); + } + if(value instanceof String) { + values.add(JSONUtils.c(ob.getStr(key))); + } else { + values.add(StrUtil.format("{}", ob.get(key))); + } + } + + final String ifeilds = StringUtils.join(columns, ","); + final String strval = StringUtils.join(values, ","); + final String strInsert = StrUtil.format("{}:({})", fmtVid, strval); + + final String nGql = StrUtil.format(GqlTemplate.INSERTVERTEX, tag, ifeilds, strInsert); + executeGql(space, nGql); + } + + + + /** + * 边数据删除语句 + * @param space + * @return + */ + public void deleteEdgeLine(final String space, final String edge, NebulaEdgeLine e) { + if(StringUtils.isBlank(e.getSrcId()) + || StringUtils.isBlank(e.getDstId())) { + return; + } + final String srcId = StrUtil.format("\"{}\"", e.getSrcId()); + final String dstId = StrUtil.format("\"{}\"", e.getDstId()); + final String nGql = StrUtil.format(GqlTemplate.DELETEEDGEDATA, edge, srcId, dstId); + executeGql(space, nGql); + } + + /** + * 插入边数据 + * @param e + * @return + */ + public void insertEdgeLine(final String space, final String edge, NebulaEdgeLine e) { + + if(StringUtils.isBlank(e.getSrcId()) + || StringUtils.isBlank(e.getDstId())) { + return; + } + + final String srcId = StrUtil.format("\"{}\"", e.getSrcId()); + final String dstId = StrUtil.format("\"{}\"", e.getDstId()); + + JSONObject ob = e.getOb(); + List columns = new ArrayList<>(); + List values = new ArrayList<>(); + + if(ob != null) { + for(String key : ob.keySet()) { + columns.add(key); + Object value = ob.get(key); + if(value == null) { + values.add(null); + } + if(value instanceof String) { + values.add(JSONUtils.c(ob.getStr(key))); + } else { + values.add(StrUtil.format("{}", ob.get(key))); + } + } + } + + Integer edgeNo = e.getEdgeNo(); + edgeNo = edgeNo == null?0:edgeNo; + final String ifeilds = StringUtils.join(columns, ","); + final String strval = StringUtils.join(values, ","); + final String strInsert = StrUtil.format("{}->{} @{}:({})", srcId, dstId, edgeNo, strval); + + final String nGql = StrUtil.format(GqlTemplate.INSERTDGEDATA, edge, ifeilds, strInsert); + executeGql(space, nGql); + } + + + /** + * 根据id查找节点 + */ + public NebulaNode findNodeById(final String space,final String vid) { + final String fmtVid = StrUtil.format("\"{}\"", vid); + final String nGql = StrUtil.format(GqlTemplate.NODESBYVID, fmtVid); + ResultSet resultSet = executeGql(space, nGql); + List records = ResultSetUtils.printResultVertex(resultSet); + return records.get(0); + } + + /** + * 根据id查找节点 + */ + public NebulaNode findNodeById(final String space,final String tag,final String vid) { + final String fmtVid = StrUtil.format("\"{}\"", vid); + final String nGql = StrUtil.format(GqlTemplate.NODESBYVIDS, tag, fmtVid); + ResultSet resultSet = executeGql(space, nGql); + List records = ResultSetUtils.printResultVertex(resultSet); + if(records.size() > 0) { + return records.get(0); + } + return null; + } + + /** + * 根据ids查找节点 + */ + public List findNodeByIds(final String space,final String tag,final List vids) { + Set stIds = new HashSet<>(); + vids.forEach(v->{ + final String fmtVid = StrUtil.format("\"{}\"", v); + stIds.add(fmtVid); + }); + final String nGql = StrUtil.format(GqlTemplate.NODESBYVIDS, tag, StringUtils.join(stIds, ",")); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultVertex(resultSet); + } + + + /** + * 根据id查找关系 + */ + public NebulaRelation findRelationById(final String space,final String edge, + final String srcVid,final String dstVid) { + final String fmt = StrUtil.format("\"{}\" -> \"{}\"", srcVid, dstVid); + final String nGql = StrUtil.format(GqlTemplate.RELATIONSBYVIDS, edge, fmt); + ResultSet resultSet = executeGql(space, nGql); + List records = ResultSetUtils.printResultRelation(resultSet); + return records.get(0); + } + + + /** + * 查询一个节点的周边一层节点关系 + * @param nQ + * @return + */ + public NebulaModel findOnePathById(final String space,final String vid) { + final String fmtVid = StrUtil.format("\"{}\"", vid); + final String nGql = StrUtil.format(GqlTemplate.ONERELATIONBYID, fmtVid); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultPath(resultSet); + } + + + /** + * 查询一个头节点和尾结点的关系 + * @param nQ + * @return + */ + public NebulaModel findOnePathBySrcIdAndDctId(final String space,final String srcId,final String dctId) { + final String fmtSrcId = StrUtil.format("\"{}\"", srcId); + final String fmtDctId = StrUtil.format("\"{}\"", dctId); + final String nGql = StrUtil.format(GqlTemplate.ONERELATIONBYSRCIDANDDCTID, fmtSrcId, fmtDctId); + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultPath(resultSet); + } + + /** + * 三元组查询 + */ + public List findRelations(final String space, + final String edge) { + return findRelations(space, edge, null, null); + } + + public List findRelations(final String space, + final String edge, + TermQueryBuilder builder) { + return findRelations(space, edge, builder, null); + } + + public List findRelations(final String space, + final String edge, + TermQueryBuilder builder,PageRequest pageRequest) { + String nGql = GqlTemplate.LOOKUPEDGESNGQL; + nGql = StrUtil.format(nGql, edge); + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(edge))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, query); + } + if(pageRequest != null) { + nGql = nGql + GqlTemplate.PAGING; + nGql = StrUtil.format(nGql, pageRequest.skip(), pageRequest.getPageSize()); + } + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultRelation(resultSet); + } + + + /** + * 已知tag 查询节点集合 + * 节点查询 + */ + public List findNodes(final String space, + final String tag) { + return findNodes(space, tag, null, null); + } + + public List findNodes(final String space, + final String tag, + TermQueryBuilder builder) { + return findNodes(space, tag, builder, null); + } + + public List findNodes(final String space, + final String tag, + TermQueryBuilder builder,PageRequest pageRequest) { + String nGql = GqlTemplate.LOOKUPVERTEXSNGQL; + nGql = StrUtil.format(nGql, tag); + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(tag))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, query); + } + if(pageRequest != null) { + nGql = nGql + GqlTemplate.PAGING; + nGql = StrUtil.format(nGql, pageRequest.skip(), pageRequest.getPageSize()); + } + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultVertex(resultSet); + } + + /** + * 未知tag查询节点集合,不能加入条件查询 + * @param space + * @param builder + * @param pageRequest + * @return + */ + public List findNodes(final String space,PageRequest pageRequest) { + String nGql = GqlTemplate.MATCHVERTEXSNGQL; + if(pageRequest != null) { + nGql = StrUtil.format(nGql, pageRequest.skip(), pageRequest.getPageSize()); + } + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultVertex(resultSet); + } + + + /** + * StartsWith 的模糊查询 + * @param space + * @param tag + * @param builder + * @param pageRequest + */ + public List findNodesByWhere(final String space, + final String tag, + TermQueryBuilder builder,PageRequest pageRequest) { + final String qz = "v."; + String nGql = GqlTemplate.MATCHVERTEXBYWHERESNGQL; + nGql = StrUtil.format(nGql, tag); + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(qz + tag))) { + nGql = StrUtil.format(nGql, query); + } + if(pageRequest != null) { + nGql = StrUtil.format(nGql, pageRequest.skip(), pageRequest.getPageSize()); + } + ResultSet resultSet = executeGql(space, nGql); + return ResultSetUtils.printResultVertex(resultSet); + } + + + /** + * 批量插入 + * @param space + * @return + */ + public void insertTagAll(String space, String tag, List tes) { + /** + * 获得tag的所有字段 + */ + List jts = descTag(space, tag); + + List columns = new ArrayList<>(); + List comments = new ArrayList<>(); + + for(JSONObject jt : jts) { + columns.add(jt.getStr("field")); + comments.add(jt.getStr("comment")); + } + insertTagAll(space, tag, columns, comments, tes); + } + + public void insertTagAll(String space, + String tag, List columns, List comments, List tes) { + + List allValues = new ArrayList<>(); + + tes.stream().forEach(vtx->{ + + try { + + JSONObject ob = vtx.getOb(); + + if(ob == null && StringUtils.isBlank(vtx.getVid())) { + return; + } + + String vid = StringUtils.isBlank(vtx.getVid()) ? UUIDGenerator.getUUID() : vtx.getVid(); + final String fmtVid = StrUtil.format("\"{}\"", vid); + + List values = new ArrayList<>(); + + int i = 0; + for(String key : columns) { + + try { + Object value = null; + + if(comments != null && comments.size() == columns.size()) { + value = (ob.get(key)==null ? ob.get(comments.get(i)) : ob.get(key)); + } else { + value = ob.get(key); + } + + if(value == null) { + values.add("null"); + continue; + } + + if(value instanceof String) { + values.add(JSONUtils.c(value)); + } else { + values.add(StrUtil.format("{}", value)); + } + + } catch (Exception e) { + log.info("{}", e); + } finally { + i++; + } + + } + + final String strval = StringUtils.join(values, ","); + final String fmtstrval = StrUtil.format("{}:({})", fmtVid, strval); + allValues.add(fmtstrval); + + } catch (Exception e) { + log.info("{}",e); + } + }); + + final String ifeilds = StringUtils.join(columns, ","); + final String strInsert = StringUtils.join(allValues, ","); + + final String nGql = StrUtil.format(GqlTemplate.INSERTVERTEX, tag, ifeilds, strInsert); + executeGql(space, nGql); + } + + + /** + * 边的批量插入 + * @param space + * @param edge + * @param tes + */ + public void insertEdgeLineAll(String space, String edge, List tes) { + + List jts = descEdge(space, edge); + List columns = new ArrayList<>(); + List comments = new ArrayList<>(); + for(JSONObject jt : jts) { + columns.add(jt.getStr("field")); + comments.add(jt.getStr("comment")); + } + insertEdgeLineAll(space, edge, columns, comments, tes); + } + + public void insertEdgeLineAll(final String space, final String edge, + List columns, List comments, List tes) { + + List allValues = new ArrayList<>(); + + tes.stream().forEach(e->{ + try { + final String srcId = StrUtil.format("\"{}\"", e.getSrcId()); + final String dstId = StrUtil.format("\"{}\"", e.getDstId()); + JSONObject ob = e.getOb(); + List values = new ArrayList<>(); + + if(ob != null) { + + int i = 0; + + for(String key : columns) { + try { + Object value = null; + + if(comments != null && comments.size() == columns.size()) { + value = (ob.get(key)==null ? ob.get(comments.get(i)) : ob.get(key)); + } else { + value = ob.get(key); + } + if(value == null) { + values.add("null"); + continue; + } + if(value instanceof String) { + values.add(JSONUtils.c(value)); + } else { + values.add(StrUtil.format("{}", value)); + } + } catch (Exception e1) { + log.info("{}", e1); + } finally { + i++; + } + } + } + + final String strval = StringUtils.join(values, ","); + final String strInsert = StrUtil.format("{}->{}:({})", srcId, dstId, strval); + + allValues.add(strInsert); + } catch (Exception e1) { + log.info("{}",e1); + } + }); + + + final String ifeilds = StringUtils.join(columns, ","); + final String strInsert = StringUtils.join(allValues, ","); + + final String nGql = StrUtil.format(GqlTemplate.INSERTDGEDATA, edge, ifeilds, strInsert); + executeGql(space, nGql); + } + + + /** + * 根据条件统计点 + */ + public Long countVertexs(final String space, + final String tag, + TermQueryBuilder builder) { + String nGql = GqlTemplate.COUNTVERTEXS; + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(tag))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, tag, query); + } + ResultSet resultSet = executeGql(space, nGql); + List rs = ResultSetUtils.printResultObject(resultSet); + if(rs != null && rs.size() > 0) { + return rs.get(0).getLong("ct"); + } + return 0L; + } + + /** + * 根据条件统计三元组数量 + */ + public Long countEdges(final String space, + final String edge, + TermQueryBuilder builder) { + String nGql = GqlTemplate.COUNTEDGES; + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(edge))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, edge, query); + } + ResultSet resultSet = executeGql(space, nGql); + List rs = ResultSetUtils.printResultObject(resultSet); + if(rs != null && rs.size() > 0) { + return rs.get(0).getLong("ct"); + } + return 0L; + } + + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/FieldsUtils.java b/api/src/main/java/com/wx/application/nebula/graph/base/FieldsUtils.java new file mode 100644 index 0000000..b2e99ca --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/FieldsUtils.java @@ -0,0 +1,73 @@ +package com.wx.application.nebula.graph.base; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import com.wx.application.nebula.graph.bean.NebulaField; + +public class FieldsUtils { + + + /** + * 字段处理属性逻辑 + * @param fields + * @return + */ + public static String toStringFields(List fields) { + if(fields == null || fields.size() == 0) { + return ""; + } + List list = new ArrayList<>(); + if(fields != null) { + for(NebulaField fn : fields) { + list.add(toStringField(fn)); + } + } + return StringUtils.join(list.toArray(), ","); + } + + + + public static String toStringField(NebulaField field) { + String ft = field.getField() + " " + field.getType().name(); + if(StringUtils.isNotBlank(field.getComment())) { + ft = ft + " COMMENT " + "\""+ field.getComment() +"\""; + } + return ft; + } + + + public static String toStringFieldNames(List fields) { + if(fields == null) { + return ""; + } + List list = new ArrayList<>(); + for(NebulaField fn : fields) { + list.add(fn.getField()); + } + return StringUtils.join(list.toArray(), ","); + } + + + public static String toIndexFields(List fields) { + if(fields == null) { + return ""; + } + List list = new ArrayList<>(); + for(NebulaField fn : fields) { + list.add(toStringFieldIndex(fn.getField(),fn.getLen())); + } + return StringUtils.join(list.toArray(), ","); + } + + + public static String toStringFieldIndex(String fieldName,Integer len) { + if(len != null && len > 0) { + return fieldName + "(" + len + ")"; + } + return fieldName; + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/Generators.java b/api/src/main/java/com/wx/application/nebula/graph/base/Generators.java new file mode 100644 index 0000000..cce6d58 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/Generators.java @@ -0,0 +1,54 @@ +package com.wx.application.nebula.graph.base; + +import cn.hutool.core.util.HashUtil; + +public class Generators { + + private final static String tag = "tag_"; + + private final static String edge = "edge_"; + + private final static String tagindex = "tagindex_"; + private final static String edgeindex = "edgeindex_"; + + private final static String field = "field_"; + private final static String name = "名称,姓名,name"; + + + public static String tagname(String label) { + return tag + HashUtil.fnvHash(label); + } + + public static String indextagname(String name) { + return tagindex + name; + } + + public static String indexedgename(String name) { + return edgeindex + name; + } + + public static String edgename(String label) { + return edge + HashUtil.fnvHash(label); + } + + public static String fieldname(String label) { + if(name.contains(label)) { + return "name"; + } + return field + HashUtil.fnvHash(label); + } + + public static String vid(String label) { + return "" + HashUtil.fnvHash(label); + } + + /** + * 本体空间所需要得id + * @param ontologyId + * @param label + * @return + */ + public static String ontologyVid(Long ontologyId, String vid) { + return ontologyId + "_" + vid; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java b/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java new file mode 100644 index 0000000..d71fca3 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/GqlTemplate.java @@ -0,0 +1,93 @@ +package com.wx.application.nebula.graph.base; + +/** + * 语句模板 + */ +public interface GqlTemplate { + + final static String CREATESPACE = "CREATE SPACE IF NOT EXISTS {}(vid_type = {}({})) COMMENT =\"{}\""; + final static String SHOWSPACES = "SHOW SPACES"; + final static String USESPACE = "USE {};"; + final static String DROPSPACE = "DROP SPACE IF EXISTS {}"; + final static String DESCSPACE = "DESC SPACE {}"; + + final static String CREATETAG = "CREATE TAG IF NOT EXISTS {} ({}) COMMENT =\"{}\""; + final static String DROPTAG = "DROP TAG IF EXISTS {}"; + final static String ALTERADDTAG = "ALTER TAG {} ADD ({})"; + final static String ALTERDROPTAG = "ALTER TAG {} DROP ({})"; + final static String ALTERCHANGETAG = "ALTER TAG {} CHANGE ({})"; + final static String SHOWTAGS = "SHOW TAGS"; + final static String SHOWCREATETAG = "SHOW create tag {}"; + + final static String DESCRIBETAG = "DESCRIBE TAG {}"; + + final static String CREATEEDGE = "CREATE EDGE IF NOT EXISTS {}({}) COMMENT =\"{}\""; + final static String DROPEDGE = "DROP EDGE IF EXISTS {}"; + final static String ALTERADDEDGE = "ALTER EDGE {} ADD ({})"; + final static String ALTERDROPEDGE = "ALTER EDGE {} DROP ({})"; + final static String ALTERCHANGEEDGE = "ALTER EDGE {} CHANGE ({})"; + final static String SHOWEDGES = "SHOW EDGES"; + final static String DESCRIBEEDGE = "DESCRIBE EDGE {}"; + final static String SHOWCREATEEDGE = "SHOW create edge {}"; + + final static String CREATEINDEX = "CREATE {} INDEX IF NOT EXISTS {} on {}({}) COMMENT \"{}\""; + final static String SHOWINDEX = "SHOW {} INDEXES;"; + final static String DROPINDEX = "DROP {} INDEX {};"; + + + final static String DELETEVERTEX = "DELETE VERTEX '{}' WITH EDGE;"; + final static String INSERTVERTEX = "INSERT VERTEX {} ({}) VALUES {}"; + + final static String DELETEEDGEDATA = "DELETE EDGE {} {}->{}"; + final static String INSERTDGEDATA = "INSERT EDGE {} ({}) VALUES {}"; + + + final static String NODESBYVID = "match(v) where id(v)=={} return v"; + + final static String NODESBYVIDS = "FETCH PROP ON {} {} YIELD vertex AS v"; + final static String RELATIONSBYVIDS = "FETCH PROP ON {} {} YIELD edge AS e"; + + final static String ONERELATIONBYID = "MATCH p=(n1)-->(n2) where id(n1)=={} RETURN p"; + + final static String ONERELATIONBYSRCIDANDDCTID = "MATCH p=(n1)-->(n2) where id(n1)=={} and id(n2)=={} RETURN p"; + + final static String PAGING =" | limit {},{}"; + + final static String MATCHVERTEXSNGQL = "MATCH (n) RETURN n skip {} limit {}"; + + final static String LOOKUPEDGESNGQL = "LOOKUP ON {} YIELD edge as e"; + + final static String LOOKUPVERTEXSNGQL = "LOOKUP ON {} YIELD vertex as e"; + + final static String MATCHVERTEXBYWHERESNGQL = "MATCH (v:{}) {} RETURN v skip {} limit {}"; + + /** + * 根据点的id集合删除点 + */ + final static String DELETEVERTEXBYVIDS = "FETCH PROP ON {} {} YIELD id(vertex) as id | DELETE VERTEX $-.id WITH EDGE"; + + /** + * 根据条件管道删除点 + */ + final static String DELETEVERTEXCONDUIT = "LOOKUP ON {} YIELD id(vertex) as id | DELETE VERTEX $-.id WITH EDGE"; + + + /** + * 根据条件统计点 + */ + final static String COUNTVERTEXS = "LOOKUP ON {} YIELD id(vertex) | YIELD COUNT(*) AS ct"; + + /** + * 根据条件统计边 + */ + final static String COUNTEDGES = "LOOKUP ON {} YIELD edge AS e | YIELD COUNT(*) AS ct"; + + /** + * 根据图空间统计 + */ + final static String SUBMITJOBSTATS = "SUBMIT JOB STATS"; + final static String SHOWSTATS = "SHOW STATS"; + final static String STOPJOB = "STOP JOB {}"; + + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphClient.java b/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphClient.java new file mode 100644 index 0000000..f1aabe3 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphClient.java @@ -0,0 +1,43 @@ +/*package com.wx.application.nebula.graph.base; + +import java.util.Arrays; +import java.util.List; + +import com.vesoft.nebula.client.graph.NebulaPoolConfig; +import com.vesoft.nebula.client.graph.data.HostAddress; +import com.vesoft.nebula.client.graph.net.NebulaPool; +import com.vesoft.nebula.client.graph.net.Session; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class NebulaGraphClient { + + NebulaPool pool; + + public void nebulaPool() { + pool = new NebulaPool(); + try { + NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig(); + nebulaPoolConfig.setMaxConnSize(200); + nebulaPoolConfig.setIdleTime(5000); + nebulaPoolConfig.setWaitTime(5000); + List addresses = Arrays.asList(new HostAddress("47.103.128.32", 9669)); + pool.init(addresses, nebulaPoolConfig); + } catch (Exception e) { + log.info("{}" ,e); + } + } + + public Session getSession() throws Exception { + return pool.getSession("root", "123456", false); + } + + + public void returnSession(Session session) { + session.release(); + } + + +} +*/ \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphConfig.java b/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphConfig.java new file mode 100644 index 0000000..c9512cc --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/NebulaGraphConfig.java @@ -0,0 +1,19 @@ +/*package com.wx.application.nebula.graph.base; + +import javax.annotation.PostConstruct; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class NebulaGraphConfig { + + @Bean + @PostConstruct + public NebulaGraphClient nebulaGraphClient() { + NebulaGraphClient nebulaGraphClient = new NebulaGraphClient(); + nebulaGraphClient.nebulaPool(); + return nebulaGraphClient; + } + +} +*/ \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/nebula/graph/base/ResultSetUtils.java b/api/src/main/java/com/wx/application/nebula/graph/base/ResultSetUtils.java new file mode 100644 index 0000000..8f32d92 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/base/ResultSetUtils.java @@ -0,0 +1,282 @@ +package com.wx.application.nebula.graph.base; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.vesoft.nebula.client.graph.data.Node; +import com.vesoft.nebula.client.graph.data.PathWrapper; +import com.vesoft.nebula.client.graph.data.Relationship; +import com.vesoft.nebula.client.graph.data.ResultSet; +import com.vesoft.nebula.client.graph.data.ValueWrapper; +import com.wx.application.nebula.graph.query.NebulaModel; +import com.wx.application.nebula.graph.query.NebulaNode; +import com.wx.application.nebula.graph.query.NebulaRelation; + +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; + +public class ResultSetUtils { + + /** + * 结果集打印 Path + * @param resultSet + * @throws UnsupportedEncodingException + */ + public static NebulaModel printResultPath(ResultSet resultSet) { + + Set ns = new HashSet<>(); + Set rls = new HashSet<>(); + + try { + + NebulaNode node = null; + NebulaRelation relation = null; + + for (int i = 0; i nodes = pw.getNodes(); + for(Node nd : nodes) { + List labels = nd.labels(); + node = new NebulaNode(); + node.setVid(nd.getId().asString()); + node.setLabels(labels.get(0)); + node.setProperties(nd.properties(labels.get(0))); + /** + * 处理快照 + */ + printnebulafieldsnapshot(node.getProperties()); + + ns.add(node); + } + /** + * 处理关系 + */ + List rs = pw.getRelationships(); + for(Relationship r:rs) { + relation = new NebulaRelation(); + relation.setSrcId(r.srcId().asString()); + relation.setDstId(r.dstId().asString()); + relation.setEdgeName(r.edgeName()); + relation.setProperties(r.properties()); + + /** + * 处理快照 + */ + printnebulafieldsnapshot(relation.getProperties()); + + rls.add(relation); + } + + } + + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + NebulaModel ml = new NebulaModel(); + ml.setNodes(new ArrayList<>(ns)); + ml.setRelations(new ArrayList<>(rls)); + + return ml; + } + + /** + * 结果集打印Vertex + * @param resultSet + * @throws UnsupportedEncodingException + */ + public static List printResultVertex(ResultSet resultSet) { + + List ns = new ArrayList<>(); + + try { + + NebulaNode node = null; + + for (int i = 0; i labels = nd.labels(); + node = new NebulaNode(); + node.setVid(nd.getId().asString()); + node.setLabels(labels.get(0)); + node.setProperties(nd.properties(labels.get(0))); + + /** + * 处理快照 + */ + printnebulafieldsnapshot(node.getProperties()); + + ns.add(node); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return ns; + } + + + /** + * 结果集打印Vertex + * @param resultSet + * @throws UnsupportedEncodingException + */ + public static List printResultRelation(ResultSet resultSet) { + List ns = new ArrayList<>(); + try { + for (int i = 0; i printResultObject(ResultSet resultSet) { + + List ns = new ArrayList<>(); + + try { + List colNames = resultSet.keys(); + for (int i = 0; i list = new ArrayList<>(); + for (ValueWrapper fn : value.asList()) { + list.add(printValueWrapper(fn)); + } + obj.set(key, list); + } else if (value.isSet()) { + List list = new ArrayList<>(); + for (ValueWrapper fn : value.asSet()) { + list.add(printValueWrapper(fn)); + } + obj.set(key, list); + } else if (value.isMap()) { + obj.set(key, value.asMap()); + } else { + obj.set(key, printValueWrapper(value)); + } + k++; + ns.add(obj); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + return ns; + } + + + public static List printResultObject(ResultSet resultSet,Integer split) { + List ots = printResultObject(resultSet); + int i = 0; + List rs = new ArrayList<>(); + JSONObject jt = null; + for(JSONObject fn : ots) { + if(i % split == 0) { + jt = new JSONObject(); + rs.add(jt); + } + JSONObject item = new JSONObject(); + for(String ky:fn.keySet()) { + item.set(ky.toLowerCase(), fn.get(ky)); + } + jt.putAll(item); + i++; + } + return rs; + } + + + public static void printnebulafieldsnapshot(JSONObject properties) { + /** + * 快照转换 + */ + properties.forEach((k,v)-> { + if(v instanceof String) { + String snapshot = properties.getStr(k); + if(JSONUtil.isTypeJSONArray(snapshot)) { + properties.set(k, JSONUtil.parseArray(snapshot)); + } else if (JSONUtil.isTypeJSONObject(snapshot)) { + properties.set(k, JSONUtil.parseObj(snapshot)); + } + } + }); + } + + public static Object printValueWrapper(ValueWrapper value) { + + try { + if (value.isLong()) { + return value.asLong(); + } else if (value.isBoolean()) { + return value.asBoolean(); + } else if (value.isDouble()) { + return value.asDouble(); + } else if (value.isString()) { + return value.asString(); + } else if (value.isTime()) { + return value.asTime(); + } else if (value.isDate()) { + return value.asDate(); + } else if (value.isDateTime()) { + return value.asDateTime(); + } + } catch (Exception e) { + // TODO: handle exception + } + return null; + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/ModelEdgeLine.java b/api/src/main/java/com/wx/application/nebula/graph/bean/ModelEdgeLine.java new file mode 100644 index 0000000..679a0c0 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/ModelEdgeLine.java @@ -0,0 +1,37 @@ +package com.wx.application.nebula.graph.bean; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class ModelEdgeLine { + + private Long ontologyId; + + private String srcId; + + private String dstId; + + /** + * edge名称。必须是 英文 下划线 数字 符合属性命名规范 + */ + private String edgeName; + + /** + * 用于页面显示的名称 + */ + private String label; + + /** + * 模型对应的字段属性 + */ + private List fields; + + /** + * 关系号 @0 + */ + private Integer edgeNo = 0; +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/ModelVertex.java b/api/src/main/java/com/wx/application/nebula/graph/bean/ModelVertex.java new file mode 100644 index 0000000..8922ced --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/ModelVertex.java @@ -0,0 +1,31 @@ +package com.wx.application.nebula.graph.bean; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class ModelVertex { + + private String vid; + + private Long ontologyId; + + /** + * tag名称。必须是 英文 下划线 数字 符合属性命名规范 + */ + private String tagName; + + /** + * 用于页面显示的名称 + */ + private String label; + + /** + * 模型对应的字段属性 + */ + private List fields; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdge.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdge.java new file mode 100644 index 0000000..ff1a12c --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdge.java @@ -0,0 +1,26 @@ +package com.wx.application.nebula.graph.bean; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaEdge { + + /** + * edge名称。必须是 英文 下划线 数字 符合属性命名规范 + */ + private String name; + + /** + * 图模型标签名称 + */ + private String labelName; + + private String comment; + + private List fields; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdgeLine.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdgeLine.java new file mode 100644 index 0000000..94d1292 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaEdgeLine.java @@ -0,0 +1,32 @@ +package com.wx.application.nebula.graph.bean; + +import cn.hutool.json.JSONObject; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaEdgeLine { + + private String edge; + + private String srcId; + + private String dstId; + + /** + * 关系号 @0 + */ + private Integer edgeNo = 0; + + /** + * 关系上的相关的数据值 + * { + * name:"bob" + * "arrow"true 有箭头 + * false 无箭头 + * } + */ + private JSONObject ob; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaField.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaField.java new file mode 100644 index 0000000..5f96fe8 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaField.java @@ -0,0 +1,21 @@ +package com.wx.application.nebula.graph.bean; + +import com.wx.application.nebula.graph.enums.DataType; + +import lombok.Data; + +@Data +public class NebulaField { + + private String field; + + private DataType type; + + private Integer len; + + /** + * 单个属性的描述 + */ + private String comment; +} + \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaIndex.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaIndex.java new file mode 100644 index 0000000..3c9b0f4 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaIndex.java @@ -0,0 +1,26 @@ +package com.wx.application.nebula.graph.bean; + +import java.util.List; + +import com.wx.application.nebula.graph.enums.IndexType; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 索引创建 + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaIndex { + + private String onName; + + private String name; + + private IndexType type; + + private List fields; + + private String comment = ""; +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaSpace.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaSpace.java new file mode 100644 index 0000000..817c404 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaSpace.java @@ -0,0 +1,23 @@ +package com.wx.application.nebula.graph.bean; + +import com.wx.application.nebula.graph.enums.VidType; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaSpace { + + private String name; + + /** + * 中午描述 + */ + private String comment; + + private Integer vidLen = 64; + + private VidType vidType = VidType.FIXED_STRING; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaTag.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaTag.java new file mode 100644 index 0000000..527f2a5 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaTag.java @@ -0,0 +1,29 @@ +package com.wx.application.nebula.graph.bean; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 表bean + * @author zj + * + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaTag { + + /** + * tag名称。必须是 英文 下划线 数字 符合属性命名规范 + */ + private String name; + + /** + * tag的描述 + */ + private String comment; + + private List fields; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaVertex.java b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaVertex.java new file mode 100644 index 0000000..3d43ec9 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/bean/NebulaVertex.java @@ -0,0 +1,34 @@ +package com.wx.application.nebula.graph.bean; + +import cn.hutool.json.JSONObject; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 点bean + * @author zj + * + */ +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaVertex { + + /** + * tag + */ + private String tag; + + /** + * 唯一主键 + */ + private String vid; + + /** + * 和相关的数据值 + * { + * name:"bob" + * } + */ + private JSONObject ob; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaImportController.java b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaImportController.java new file mode 100644 index 0000000..6389844 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaImportController.java @@ -0,0 +1,81 @@ +package com.wx.application.nebula.graph.conrtroller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.nebula.graph.service.ImportGraphInJsonService; + +@RestController +@RequestMapping("/nebula_graph_import") +public class NebulaImportController extends BaseController { + + @Autowired + ImportGraphInJsonService importGraphInJsonService; + + /** + * 上传zip文件 + * @param space + * @param file + * @return + */ + @PutMapping(value = "/uploadfile/{space}") + public ResponseData uploadFile(@PathVariable("space") String space, + @RequestParam("file") MultipartFile file) { + return success(importGraphInJsonService.uploadFile(file, space)); + } + + /*@Autowired + ImportGraphInExcelService importGraphService; + + @Autowired + ImportSchemaService importSchemaService; + + *//** + * 创建一个任务 + *//* + @PutMapping(value = "/createtask/{space}") + public ResponseData createTask(@PathVariable("space") String space, + @RequestParam("file") MultipartFile file + ,@RequestParam("name") String name) { + return success(importGraphService.createTask(file, space, name)); + } + + + *//** + * 根据任务查看相关的文件信息 + *//* + @GetMapping(value = "/findtaskbyid/{taskId}") + public ResponseData findTaskById(@PathVariable("taskId") Long taskId) { + return success(importGraphService.findTaskById(taskId)); + } + + *//** + * 执行导入 + *//* + @PostMapping(value = "/graphtaskexecute") + public ResponseData graphTaskExecute(@RequestBody GraphTaskExecuteQ gtQ) { + importGraphService.graphTaskExecute(gtQ); + return success(); + } + + *//** + * 导入tag和edge + *//* + @PostMapping(value = "/importschema/{space}") + public ResponseData importModel(@PathVariable("space") String space, + @RequestParam("file") MultipartFile file) { + try { + importSchemaService.analysisExcel(space,file.getInputStream()); + } catch (IOException e) { + } + return success(); + }*/ + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaModelController.java b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaModelController.java new file mode 100644 index 0000000..0d504ad --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaModelController.java @@ -0,0 +1,242 @@ +package com.wx.application.nebula.graph.conrtroller; + +import java.io.IOException; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.bean.ModelEdgeLine; +import com.wx.application.nebula.graph.bean.ModelVertex; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.enums.DataType; +import com.wx.application.nebula.graph.query.NebulaQo; +import com.wx.application.nebula.graph.service.ImportModelService; +import com.wx.application.nebula.graph.service.NebulaModelService; + +/** + * 本体 + * @author zj + * + */ +@RestController +@RequestMapping("/nebula_model") +public class NebulaModelController extends BaseController { + + @Autowired + NebulaModelService nebulaModelService; + + @Autowired + ImportModelService importModelService; + + /** + * 插入模型点 + * @param vertex + */ + @PostMapping(value = "/insertmodelvertex") + public ResponseData insertModelVertex(@RequestBody ModelVertex mx) { + if(StringUtils.isBlank(mx.getVid())) { + String vid = Generators.vid(mx.getLabel()); + vid = Generators.ontologyVid(mx.getOntologyId(), vid); + mx.setVid(vid); + } + return success(nebulaModelService.insertModelVertex(mx)); + } + + /** + * 删除一个本体模型点 + */ + @GetMapping(value = "/deletemodelvertex/{vid}") + public ResponseData deleteModelVertex(@PathVariable("vid") String vid) { + nebulaModelService.deleteModelVertex(vid); + return success(); + } + + + /** + * 创建一个模型关系 + */ + @PostMapping(value = "/insertmodeledge") + public ResponseData insertModelEdge(@RequestBody ModelEdgeLine edge) { + return success(nebulaModelService.insertModelEdge(edge)); + } + + + /** + * 删除一个模型关系 + */ + @PostMapping(value = "/deletemodeledge") + public ResponseData deleteModelEdge(@RequestBody NebulaEdgeLine edge) { + nebulaModelService.deleteModelEdge(edge); + return success(); + } + + + /** + * 根据OntologyId删除所有的本体和关系 + */ + @GetMapping(value = "/deleteallbyontologyid/{ontologyId}") + public ResponseData deleteAllByOntologyId(@PathVariable("ontologyId") Long ontologyId) { + nebulaModelService.deleteAllByOntologyId(ontologyId); + return success(); + } + + /** + * 根据OntologyId查询的本体和关系,用于图谱展示 + */ + @PostMapping(value = "/findrelationbyontologyid/{ontologyId}") + public ResponseData findRelationByOntologyId(@PathVariable("ontologyId") Long ontologyId, + @RequestBody NebulaQo nQ) { + return success(nebulaModelService.findRelationByOntologyId(ontologyId, nQ)); + } + + + /** + * 根据OntologyId查询的本体和关系,查询所有的,目前标注用 + */ + @PostMapping(value = "/findallgraphbyontologyid/{ontologyId}") + public ResponseData findAllGraphByOntologyId(@PathVariable("ontologyId") Long ontologyId) { + return success(nebulaModelService.findAllGraphByOntologyId(ontologyId)); + } + + + /** + * 复制图模型 + */ + @GetMapping(value = "/copybyontologyid/{srcOntologyId}/{dictOntologyId}") + public ResponseData copyByOntologyId(@PathVariable("srcOntologyId")Long srcOntologyId, + @PathVariable("dictOntologyId")Long dictOntologyId) { + nebulaModelService.copyByOntologyId(srcOntologyId, dictOntologyId); + return success(); + } + + /** + * 根据本体模型创建图空间 + */ + @GetMapping(value = "/initgraphdatabase/{ontologyId}/{space}") + public ResponseData initGraphDatabase(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("space") String space) { + nebulaModelService.initGraphDatabase(ontologyId, space); + return success(); + } + + + /** + * 根据模板excel导入模型 + * @throws IOException + */ + @PostMapping(value = "/importmodel/{ontologyId}") + public ResponseData importModel(@PathVariable("ontologyId") Long ontologyId, + @RequestParam("file") MultipartFile file) throws IOException { + return success(importModelService.analysisExcel(ontologyId,file.getInputStream())); + } + + + /** + * 本体空间统计点 + */ + @GetMapping(value = "/countvertexsbyontologyid/{ontologyId}") + public ResponseData countVertexsbyontologyid(@PathVariable("ontologyId") Long ontologyId) { + return success(nebulaModelService.countVertexsByOntologyid(ontologyId)); + } + /** + * 本体空间统计边 + */ + @GetMapping(value = "/countedgesbyontologyid/{ontologyId}") + public ResponseData countEdgesByOntologyid(@PathVariable("ontologyId") Long ontologyId) { + return success(nebulaModelService.countEdgesByOntologyid(ontologyId)); + } + + /** + * 根据关键统计开始节点和 结束节点的数量 + */ + @GetMapping(value = "/groupcountvexbyedgebyontologyid/{ontologyId}") + public ResponseData groupCountVexByEdgeByOntologyid(@PathVariable("ontologyId") Long ontologyId) { + return success(nebulaModelService.groupCountVexByEdgeByOntologyid(ontologyId)); + } + + + /** + * 图空间的值属性数量分组聚合 + */ + @GetMapping(value = "/groupfieldbyontologyid/{ontologyId}") + public ResponseData groupFieldByOntologyId(@PathVariable("ontologyId") Long ontologyId) { + return success(nebulaModelService.groupFieldByOntologyId(ontologyId)); + } + + + /** + * 模型空间根据概念id查找path + */ + @GetMapping(value = "/findpathbyid/{ontologyId}/{vid}") + public ResponseData findPathById(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("vid") String vid) { + return success(nebulaModelService.findPathById(ontologyId, vid)); + } + + /** + * 模型空间根据id查找节点 + */ + @GetMapping(value = "/findnodebyid/{ontologyId}/{vid}") + public ResponseData findNodeById(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("vid") String vid) { + return success(nebulaModelService.findNodeById(vid)); + } + + /** + * 通过对象属性名称查询所有的path + */ + @GetMapping(value = "/findpathbyedgelabel/{ontologyId}/{label}") + public ResponseData findPathByEdgeLabel(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("label") String label) { + return success(nebulaModelService.findPathByEdgeLabel(ontologyId,label)); + } + + /** + * 通过值属性名称查询所有概念 + */ + @GetMapping(value = "/findnodesbyfield/{ontologyId}/{field}") + public ResponseData findNodesbyField(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("field") String field) { + return success(nebulaModelService.findNodesbyField(ontologyId, field)); + } + + + /** + * 获得值域列表 + */ + @GetMapping(value = "/getdatatype") + public ResponseData getDataType() { + return success(DataType.values()); + } + + /** + * 模型空间根据概念id对象属性列表 + */ + @GetMapping(value = "/findlistpathbyid/{ontologyId}/{vid}") + public ResponseData findListPathById(@PathVariable("ontologyId") Long ontologyId, + @PathVariable("vid") String vid) { + return success(nebulaModelService.findListPathById(vid)); + } + + + /** + * 递归 + * 查询当前节点的值属性,包含继承的值属性 + */ + @GetMapping(value = "/findnebulafieldwithparents/{vid}") + public ResponseData findNebulaFieldWithParents(@PathVariable("vid") String vid) { + return success(nebulaModelService.findNebulaFieldWithParents(vid)); + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java new file mode 100644 index 0000000..187f661 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/conrtroller/NebulaOperateController.java @@ -0,0 +1,438 @@ +package com.wx.application.nebula.graph.conrtroller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.wx.application.base.BaseController; +import com.wx.application.base.ResponseData; +import com.wx.application.nebula.graph.bean.NebulaEdge; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.bean.NebulaIndex; +import com.wx.application.nebula.graph.bean.NebulaSpace; +import com.wx.application.nebula.graph.bean.NebulaTag; +import com.wx.application.nebula.graph.bean.NebulaVertex; +import com.wx.application.nebula.graph.query.NebulaQo; +import com.wx.application.nebula.graph.service.NebulaOperateService; + + +@SuppressWarnings("rawtypes") +@RestController +@RequestMapping("/nebula_operate") +public class NebulaOperateController extends BaseController { + + @Autowired + NebulaOperateService nebulaOperateService; + + /** + * 查看所有的图空间 + */ + @GetMapping(value = "/showspace") + public ResponseData showSpace() { + return success(nebulaOperateService.findSpace()); + } + + /** + * 空间创建语句 + * @param space + * @return + */ + @PostMapping(value = "/createspace") + public ResponseData createSpace(@RequestBody NebulaSpace space) { + nebulaOperateService.createSpace(space); + return success(space); + } + + + /** + * 删除莫个图空间 + * @param e + * @return + */ + @GetMapping(value = "/dropspace/{space}") + public ResponseData dropSpace(@PathVariable("space") String space) { + nebulaOperateService.dropSpace(space); + return success(); + } + + /** + * 显示莫个图空间的详细信息 + * @param e + * @return + */ + @GetMapping(value = "/descspace/{space}") + public ResponseData descSpace(@PathVariable("space") String space) { + return success(nebulaOperateService.descSpace(space)); + } + + + /** + * 标签创建语句 + * @param space + * @return + */ + @PostMapping(value = "/createtag/{space}") + public ResponseData createTag(@PathVariable("space") String space, @RequestBody NebulaTag e) { + nebulaOperateService.createTag(space, e); + return success(); + } + + + /** + * 标签添加字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alteraddtag/{space}") + public ResponseData alterAddTag(@PathVariable("space") String space, @RequestBody NebulaTag e) { + nebulaOperateService.alterAddTag(space, e); + return success(); + } + + + /** + * 标签删除字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alterdroptag/{space}") + public ResponseData alterDropTag(@PathVariable("space") String space, @RequestBody NebulaTag e) { + nebulaOperateService.alterDropTag(space, e); + return success(); + } + + /** + * 标签修改字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alterchangetag/{space}") + public ResponseData alterChangeTag(@PathVariable("space") String space, @RequestBody NebulaTag e) { + nebulaOperateService.alterChangeTag(space, e); + return success(); + } + + /** + * 标签删除 + * @param e + * @return + */ + @GetMapping(value = "/droptag/{space}/{tag}") + public ResponseData dropTag(@PathVariable("space") String space, @PathVariable("tag") String tag) { + nebulaOperateService.dropTag(space, tag); + return success(); + } + + + /** + * 查看所有标签 + * @param e + * @return + */ + @GetMapping(value = "/showtag/{space}") + public ResponseData showTag(@PathVariable("space") String space) { + return success(nebulaOperateService.showTag(space,true)); + } + + /** + * 查看标签的创建语句 + * @param e + * @return + */ + @GetMapping(value = "/showcreatetag/{space}/{tag}") + public ResponseData showCreateTag(@PathVariable("space") String space, + @PathVariable("tag") String tag) { + return success(nebulaOperateService.showCreateTag(space, tag)); + } + + + /** + * 标签查看详细信息 + * @param e + * @return + */ + @GetMapping(value = "/desctag/{space}/{tag}") + public ResponseData descTag(@PathVariable("space") String space, @PathVariable("tag") String tag) { + return success(nebulaOperateService.descTag(space, tag)); + } + + + /** + * 边创建语句 + * @param space + * @return + */ + @PostMapping(value = "/createedge/{space}") + public ResponseData createEdge(@PathVariable("space") String space, @RequestBody NebulaEdge e) { + nebulaOperateService.createEdge(space, e); + return success(); + } + + + /** + * 边添加字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alteraddedge/{space}") + public ResponseData alterAddEdge(@PathVariable("space") String space, @RequestBody NebulaEdge e) { + nebulaOperateService.alterAddEdge(space, e); + return success(); + } + + + /** + * 边删除字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alterdropedge/{space}") + public ResponseData alterDropEdge(@PathVariable("space") String space, @RequestBody NebulaEdge e) { + nebulaOperateService.alterDropEdge(space, e); + return success(); + } + + /** + * 边修改字段语句 + * @param space + * @return + */ + @PostMapping(value = "/alterchangeedge/{space}") + public ResponseData alterChangeEdge(@PathVariable("space") String space, @RequestBody NebulaEdge e) { + nebulaOperateService.alterChangeEdge(space, e); + return success(); + } + + /** + * 边删除 + * @param e + * @return + */ + @GetMapping(value = "/dropedge/{space}/{edge}") + public ResponseData dropEdge(@PathVariable("space") String space, @PathVariable("edge") String edge) { + nebulaOperateService.dropEdge(space, edge); + return success(); + } + + /** + * 查看标签的创建语句 + * @param e + * @return + */ + @GetMapping(value = "/showcreateedge/{space}/{edge}") + public ResponseData showCreateEdge(@PathVariable("space") String space, + @PathVariable("edge") String edge) { + return success(nebulaOperateService.showCreateEdge(space, edge)); + } + + /** + * 查看所有边 + * @param e + * @return + */ + @GetMapping(value = "/showedge/{space}") + public ResponseData showEdge(@PathVariable("space") String space) { + return success(nebulaOperateService.showEdge(space,true)); + } + + /** + * 边查看详细信息 + * @param e + * @return + */ + @GetMapping(value = "/descedge/{space}/{edge}") + public ResponseData descEdge(@PathVariable("space") String space, @PathVariable("edge") String edge) { + return success(nebulaOperateService.descEdge(space, edge)); + } + + /** + * 索引创建语句 + * @param e + * @return + */ + @PostMapping(value = "/createindex/{space}") + public ResponseData createIndex(@PathVariable("space") String space, @RequestBody NebulaIndex e) { + nebulaOperateService.createIndex(space, e); + return success(); + } + + /** + * 查看边或者标签的索引 + * @param e + * @return + */ + @GetMapping(value = "/showindex/{space}/{type}") + public ResponseData showIndex(@PathVariable("space") String space, @PathVariable("type") String type) { + return success(nebulaOperateService.showIndex(space, type)); + } + + /** + * 删除边或者标签的索引 + * @param e + * @return + */ + @PostMapping(value = "/dropindex/{space}") + public ResponseData dropIndex(@PathVariable("space") String space, @RequestBody NebulaIndex e) { + nebulaOperateService.dropIndex(space, e); + return success(); + } + + + /** + * 删除点语句 + */ + @GetMapping(value = "/deletevertex/{space}/{vid}") + public ResponseData deleteVertex(@PathVariable("space") String space, @PathVariable("vid") String vid) { + nebulaOperateService.deleteVertex(space, vid); + return success(); + } + + /** + * 添加点语句 + */ + @PostMapping(value = "/insertvertex/{space}/{tag}") + public ResponseData insertVertex(@PathVariable("space") String space + ,@PathVariable("tag") String tag, @RequestBody NebulaVertex e) { + nebulaOperateService.insertVertex(space, tag, e); + return success(e); + } + + + + /** + * 边数据删除语句 + * @param space + * @return + */ + @PostMapping(value = "/deleteedgeline/{space}/{edge}") + public ResponseData deleteEdgeData(@PathVariable("space") String space, + @PathVariable("edge") String edge, @RequestBody NebulaEdgeLine e) { + nebulaOperateService.deleteEdgeLine(space, edge, e); + return success(); + } + + /** + * 插入边数据 + * @param e + * @return + */ + @PostMapping(value = "/insertedgeline/{space}/{edge}") + public ResponseData insertEdgeData(@PathVariable("space") String space, + @PathVariable("edge") String edge, @RequestBody NebulaEdgeLine e) { + nebulaOperateService.insertEdgeLine(space,edge, e); + return success(); + } + + + /** + * 根据id查找一个节点,不用使用tag的 + */ + @GetMapping(value = "/findnodebyid/{space}/{vid}") + public ResponseData findNodeById(@PathVariable("space") String space, + @PathVariable("vid") String vid) { + return success(nebulaOperateService.findNodeById(space, vid)); + } + + + /** + * 根据id查找一个节点,需要使用tag的 + */ + @GetMapping(value = "/findnodebyid/{space}/{tag}/{vid}") + public ResponseData findNodeById(@PathVariable("space") String space, + @PathVariable("tag") String tag,@PathVariable("vid") String vid) { + return success(nebulaOperateService.findNodeById(space, tag, vid)); + } + + + /** + * 根据查询条件查询tag下面的一个节点 + */ + @PostMapping(value = "/findnodebykeyword/{space}/{tag}") + public ResponseData findNodeByKeyword(@PathVariable("space") String space, + @PathVariable("tag") String tag, + @RequestBody NebulaQo nQo) { + return success(nebulaOperateService.findNodeByKeyword(space, tag, nQo)); + } + + + /** + * 根据2个节点id获取一条边 + */ + @GetMapping(value = "/findrelationbyid/{space}/{edge}/{srcVid}/{dstVid}") + public ResponseData findRelationById(@PathVariable("space") String space, + @PathVariable("edge") String edge + ,@PathVariable("srcVid") String srcVid + ,@PathVariable("dstVid") String dstVid) { + return success(nebulaOperateService.findRelationById(space, edge, srcVid, dstVid)); + } + + + /** + * 查询一个节点的周边一层节点关系 + * @param nQ + * @return + */ + @GetMapping(value = "/findonepathbyid/{space}/{vid}") + public ResponseData findOnePathById(@PathVariable("space") String space, + @PathVariable("vid") String vid) { + return success(nebulaOperateService.findOnePathById(space, vid)); + } + + /** + * 查询一个头节点和尾结点的关系 + * @param nQ + * @return + */ + @GetMapping(value = "/findonepathbysrcidanddctid/{space}/{srcId}/{dctId}") + public ResponseData findOnePathBySrcIdAndDctId(@PathVariable("space") String space, + @PathVariable("srcId") String srcId, @PathVariable("dctId") String dctId) { + return success(nebulaOperateService.findOnePathBySrcIdAndDctId(space, srcId, dctId)); + } + + + /** + * 根据图空间查询图谱 + * 已知tag edge 查询(可没有) + */ + @PostMapping(value = "/findpathinspace/{space}") + public ResponseData findPathInSpace(@PathVariable("space") String space, + @RequestBody NebulaQo nebulaQo) { + return success(nebulaOperateService.findPathInSpace(space, nebulaQo)); + } + + /** + * 根据图空间查询图谱 + * 已知tag 查询 + */ + @PostMapping(value = "/findnodes/{space}") + public ResponseData findNodes(@PathVariable("space") String space, + @RequestBody NebulaQo nebulaQo) { + return success(nebulaOperateService.findNodes(space, nebulaQo)); + } + + /** + * 根据图空间查询图谱 + * 已知edge 查询 + */ + @PostMapping(value = "/findrelations/{space}") + public ResponseData findrelations(@PathVariable("space") String space, + @RequestBody NebulaQo nebulaQo) { + return success(nebulaOperateService.findRelations(space, nebulaQo)); + } + + + /** + * 根据图空间进行统计 + * @param space + * @return + */ + @GetMapping(value = "/censusgraphbyspace/{space}") + public ResponseData censusgraphbyspace(@PathVariable("space") String space) { + return success(nebulaOperateService.censusGraphBySpace(space)); + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/enums/DataType.java b/api/src/main/java/com/wx/application/nebula/graph/enums/DataType.java new file mode 100644 index 0000000..7f831e6 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/enums/DataType.java @@ -0,0 +1,16 @@ +package com.wx.application.nebula.graph.enums; + +public enum DataType { + INT64, + INT32, + INT16, + INT8, + FLOAT, + DOUBLE, + BOOL, + STRING, + DATE, + TIME, + DATETIME, + FIXED_STRING +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/enums/IndexType.java b/api/src/main/java/com/wx/application/nebula/graph/enums/IndexType.java new file mode 100644 index 0000000..b08e578 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/enums/IndexType.java @@ -0,0 +1,6 @@ +package com.wx.application.nebula.graph.enums; + +public enum IndexType { + TAG, + EDGE +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/enums/VidType.java b/api/src/main/java/com/wx/application/nebula/graph/enums/VidType.java new file mode 100644 index 0000000..67e534a --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/enums/VidType.java @@ -0,0 +1,7 @@ +package com.wx.application.nebula.graph.enums; + +public enum VidType { + + FIXED_STRING; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaGraphClient.java b/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaGraphClient.java new file mode 100644 index 0000000..92d0c4d --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaGraphClient.java @@ -0,0 +1,69 @@ +package com.wx.application.nebula.graph.factory; + +import org.apache.commons.pool2.impl.GenericObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import com.vesoft.nebula.client.graph.net.Session; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class NebulaGraphClient { + + private GenericObjectPool clientPool; + + public NebulaGraphClient(SessionFactory sessionFactory) { + + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); + + //最大连接 + poolConfig.setMaxTotal(100); + //最大空闲连接 + poolConfig.setMaxIdle(5); + //最小空闲连接 + poolConfig.setMinIdle(5); + + poolConfig.setTestWhileIdle(true); + poolConfig.setTestOnCreate(true); + poolConfig.setTestOnBorrow(true); + poolConfig.setTestOnReturn(true); + + //连接满时最多等待时间 + /*poolConfig.setMaxWaitMillis(5000L); + //使用时检查对象(默认不检查) + poolConfig.setTestWhileIdle(true); + poolConfig.setTestOnCreate(true); + poolConfig.setTestOnBorrow(true); + poolConfig.setTestOnReturn(true); + //jmx启用 之后可以实时的查看线程池对象的状态 + poolConfig.setJmxEnabled(false); + poolConfig.setJmxNameBase("namebase"); + poolConfig.setJmxNamePrefix("nameprefix"); + //驱逐线程每次检查对象个数 + poolConfig.setNumTestsPerEvictionRun(2); + //空闲连接被驱逐前能够保留的时间 + poolConfig.setMinEvictableIdleTimeMillis(10000L); + //当空闲线程大于minIdle 空闲连接能够保留时间,同时指定会被上面的覆盖 + poolConfig.setSoftMinEvictableIdleTimeMillis(10000L); + //驱逐线程执行间隔时间 + poolConfig.setTimeBetweenEvictionRunsMillis(200000L); + //放弃长时间占用连接的对象 + AbandonedConfig abandonedConfig=new AbandonedConfig(); + abandonedConfig.setLogAbandoned(true); + abandonedConfig.setUseUsageTracking(false); + abandonedConfig.setRemoveAbandonedOnBorrow(true); + abandonedConfig.setRemoveAbandonedOnMaintenance(true); + abandonedConfig.setRemoveAbandonedTimeout(20);//second*/ + + this.clientPool = new GenericObjectPool<>(sessionFactory, poolConfig); + } + + public Session getSession() throws Exception { + return clientPool.borrowObject(); + } + public void returnSession(Session session) { + if(session == null) { + return; + } + clientPool.returnObject(session); + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaSessionProperties.java b/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaSessionProperties.java new file mode 100644 index 0000000..6c1847b --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/factory/NebulaSessionProperties.java @@ -0,0 +1,37 @@ +package com.wx.application.nebula.graph.factory; + + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +@Component +@ConfigurationProperties(ignoreUnknownFields = false, prefix = "nebula.session") +public class NebulaSessionProperties { + + /** + * ftp地址 + */ + private String host; + + /** + * 端口号 + */ + private Integer port = 9669; + + /** + * 登录用户 + */ + private String username; + + /** + * 登录密码 + */ + private String password; + + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/factory/SessionConfigure.java b/api/src/main/java/com/wx/application/nebula/graph/factory/SessionConfigure.java new file mode 100644 index 0000000..907af0e --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/factory/SessionConfigure.java @@ -0,0 +1,35 @@ +package com.wx.application.nebula.graph.factory; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + */ +@Configuration +@EnableConfigurationProperties(NebulaSessionProperties.class) +public class SessionConfigure { + + private NebulaSessionProperties nebulaSessionProperties; + + @Autowired + public void setFtpClientProperties(NebulaSessionProperties nebulaSessionProperties) { + this.nebulaSessionProperties = nebulaSessionProperties; + } + + @Bean + public SessionFactory getSessionFactory() { + return new SessionFactory(nebulaSessionProperties); + } + + + @Bean + @PostConstruct + public NebulaGraphClient nebulaGraphClient() { + NebulaGraphClient nebulaGraphClient = new NebulaGraphClient(getSessionFactory()); + return nebulaGraphClient; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/factory/SessionFactory.java b/api/src/main/java/com/wx/application/nebula/graph/factory/SessionFactory.java new file mode 100644 index 0000000..2546898 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/factory/SessionFactory.java @@ -0,0 +1,98 @@ +package com.wx.application.nebula.graph.factory; + +import java.util.Arrays; +import java.util.List; + +import org.apache.commons.pool2.BasePooledObjectFactory; +import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.impl.DefaultPooledObject; + +import com.vesoft.nebula.client.graph.NebulaPoolConfig; +import com.vesoft.nebula.client.graph.data.HostAddress; +import com.vesoft.nebula.client.graph.net.NebulaPool; +import com.vesoft.nebula.client.graph.net.Session; + +import lombok.extern.slf4j.Slf4j; + +/** + * Session工厂类,通过Session工厂提供Session实例的创建和销毁 + */ +@Slf4j +public class SessionFactory extends BasePooledObjectFactory { + + NebulaPool pool; + NebulaSessionProperties properties; + + public SessionFactory(NebulaSessionProperties properties) { + + NebulaPool pool = new NebulaPool(); + NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig(); + nebulaPoolConfig.setMaxConnSize(100); + List addresses = Arrays.asList( + new HostAddress(properties.getHost(), properties.getPort())); + try { + pool.init(addresses, nebulaPoolConfig); + } catch (Exception e) { + log.info("{}", e); + } + + this.properties = properties; + + this.pool = pool; + } + + /** + * 创建对象 + */ + @Override + public Session create() { + Session session = null; + try { + session = pool.getSession(properties.getUsername(), properties.getPassword(), false); + } catch (Exception e) { + log.info("{}",e); + } + return session; + } + + /** + * 用PooledObject封装对象放入池中 + */ + @Override + public PooledObject wrap(Session session) { + return new DefaultPooledObject<>(session); + } + + /** + * 销毁对象 + */ + @Override + public void destroyObject(PooledObject sessionPooled) { + if (sessionPooled == null) { + return; + } + try { + Session session = sessionPooled.getObject(); + session.release(); + } catch (Exception e) { + log.error("failed to release session: {}", e); + } + } + + /** + * 验证对象 + */ + @Override + public boolean validateObject(PooledObject sessionPooled) { + if (sessionPooled == null) { + return false; + } + try { + Session session = sessionPooled.getObject(); + return session.ping(); + } catch (Exception e) { + log.error("failed to validate session: {}", e); + } + return false; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaModel.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaModel.java new file mode 100644 index 0000000..0af6253 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaModel.java @@ -0,0 +1,22 @@ +package com.wx.application.nebula.graph.query; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaModel { + + /** + * 构建返回节点 + */ + private List nodes; + + /** + * 构建返回的关系 + */ + private List relations; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaNode.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaNode.java new file mode 100644 index 0000000..6a5febc --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaNode.java @@ -0,0 +1,45 @@ +package com.wx.application.nebula.graph.query; + +import java.util.Map; + +import com.vesoft.nebula.client.graph.data.ValueWrapper; +import com.wx.application.nebula.graph.base.ResultSetUtils; + +import cn.hutool.json.JSONObject; +import lombok.Data; + +@Data +public class NebulaNode { + + private String vid; + + private String labels; + + private JSONObject properties; + + + public void setProperties(JSONObject obj) { + this.properties = obj; + } + + public void setProperties(Map propertiesMap) { + JSONObject obj = new JSONObject(); + for (Map.Entry pro : propertiesMap.entrySet()) { + obj.set(pro.getKey(), ResultSetUtils.printValueWrapper(pro.getValue())); + } + this.properties = obj; + } + + + @Override + public boolean equals(Object obj) { + NebulaNode u = (NebulaNode) obj; + return this.getVid().equals(u.getVid()); + } + + @Override + public int hashCode() { + String in = this.getVid(); + return in.hashCode(); + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaPath.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaPath.java new file mode 100644 index 0000000..9127641 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaPath.java @@ -0,0 +1,16 @@ +package com.wx.application.nebula.graph.query; + + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class NebulaPath { + + private NebulaNode srcnode; + + private NebulaNode dctnode; + + private NebulaRelation relation; +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java new file mode 100644 index 0000000..4c3ac27 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaQo.java @@ -0,0 +1,22 @@ +package com.wx.application.nebula.graph.query; + +import lombok.Data; + +@Data +public class NebulaQo { + + private String tag; + + private String edge; + + private String field = "name"; + + private String keyword; + + private Boolean pageFlag = true; + + private Integer page = 1; + + private Integer pageSize = 200; + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/NebulaRelation.java b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaRelation.java new file mode 100644 index 0000000..17cf804 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/NebulaRelation.java @@ -0,0 +1,48 @@ +package com.wx.application.nebula.graph.query; + +import java.util.Map; + +import cn.hutool.json.JSONObject; +import com.vesoft.nebula.client.graph.data.ValueWrapper; +import com.wx.application.nebula.graph.base.ResultSetUtils; + +import lombok.Data; + +@SuppressWarnings("rawtypes") +@Data +public class NebulaRelation { + + private String srcId; + + private String dstId; + + private String edgeName; + + private JSONObject properties; + + public void setProperties(JSONObject obj) { + this.properties = obj; + } + + public void setProperties(Map propertiesMap) { + JSONObject obj = new JSONObject(); + for (Map.Entry pro : propertiesMap.entrySet()) { + obj.set(pro.getKey(), ResultSetUtils.printValueWrapper(pro.getValue())); + } + this.properties = obj; + } + + @Override + public boolean equals(Object obj) { + NebulaRelation u = (NebulaRelation) obj; + return this.getSrcId().equals(u.getSrcId()) + && this.getDstId().equals(u.getDstId()); + } + + @Override + public int hashCode() { + String in = this.getSrcId().concat(this.getDstId()); + return in.hashCode(); + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/Page.java b/api/src/main/java/com/wx/application/nebula/graph/query/Page.java new file mode 100644 index 0000000..3b83c21 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/Page.java @@ -0,0 +1,62 @@ +package com.wx.application.nebula.graph.query; + +import java.util.List; + +import lombok.Data; + +@Data +public class Page { + + private List records; + + private Integer total; + + private Integer page; + + private Integer pageSize; + + public Page() { + + } + + public Page(List records, Integer total, Integer page, Integer pageSize) { + this.records = records; + this.total = total; + this.page = page; + this.pageSize = pageSize; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public Integer getPage() { + return page; + } + + public void setPage(Integer page) { + this.page = page; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/PageRequest.java b/api/src/main/java/com/wx/application/nebula/graph/query/PageRequest.java new file mode 100644 index 0000000..6ced604 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/PageRequest.java @@ -0,0 +1,22 @@ +package com.wx.application.nebula.graph.query; + +import lombok.Data; + +@Data +public class PageRequest { + + private Integer page = 1; + + private Integer pageSize = 200; + + public static PageRequest of(Integer page,Integer pageSize) { + PageRequest pt = new PageRequest(); + pt.setPage(page); + pt.setPageSize(pageSize); + return pt; + } + + public Integer skip() { + return (page-1 < 0?0:page-1) * pageSize; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/TermQuery.java b/api/src/main/java/com/wx/application/nebula/graph/query/TermQuery.java new file mode 100644 index 0000000..d6138c6 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/TermQuery.java @@ -0,0 +1,61 @@ +package com.wx.application.nebula.graph.query; + +import com.wx.application.util.JSONUtils; + +import cn.hutool.core.util.StrUtil; +import lombok.Data; + +@Data +public class TermQuery { + + public enum Operator { + EQ,//值相等 + CONTAINS, //值模糊匹配 + STARTSWITH + } + + public enum Logic { + AND, OR + } + + + //字段名称 + public String fieldName; + //值 + public Object value; + //eq ue + public Operator operator = Operator.EQ; + //and or + public Logic logic = Logic.AND; + + public TermQuery(String fieldName, Operator operator, Object value) { + this.fieldName = fieldName; + this.value = value; + this.operator = operator; + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append(fieldName); + switch (operator) { + case EQ: + sb.append("=="); + break; + case CONTAINS: + sb.append(" CONTAINS "); + break; + case STARTSWITH: + sb.append(" STARTS WITH "); + break; + default: + break; + } + if(value instanceof String) { + sb.append(JSONUtils.c(value)); + } else { + sb.append(StrUtil.format("{}", value)); + } + return sb.toString(); + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/query/TermQueryBuilder.java b/api/src/main/java/com/wx/application/nebula/graph/query/TermQueryBuilder.java new file mode 100644 index 0000000..af24c6d --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/query/TermQueryBuilder.java @@ -0,0 +1,50 @@ +package com.wx.application.nebula.graph.query; + +import java.util.ArrayList; +import java.util.List; + +/** + * + */ +public class TermQueryBuilder { + + private final static String where = "WHERE "; + + private List termQuerys = new ArrayList<>(); + + public static TermQuery termMust(String fieldName,TermQuery.Operator operator, Object value) { + return new TermQuery(fieldName,operator, value); + } + + public static TermQuery termShold(String fieldName, TermQuery.Operator operator, Object value) { + TermQuery query = new TermQuery(fieldName, operator, value); + query.logic = TermQuery.Logic.OR; + return query; + } + + public void add(TermQuery termQuery) { + termQuerys.add(termQuery); + } + + public String of(String alias) { + + if(termQuerys.size() == 0) { + return null; + } + + StringBuffer sb = new StringBuffer(where); + for(int i=0;i headerRow = reader.readRow(0); + + graphTask = new GraphTask(); + graphTask.setName(name); + graphTask.setSpace(space); + graphTaskService.create(graphTask); + + GraphTaskFile taskFile = new GraphTaskFile(); + taskFile.setTaskId(graphTask.getId()); + taskFile.setOriginalFilename(originalFilename); + taskFile.setSuffix(suffix); + taskFile.setPath(relativePath); + taskFile.setHeaderRow(JSONUtil.toJsonStr(headerRow)); + + graphTaskFileService.create(taskFile); + + + } catch (Exception e) { + log.info("{}", e); + } + + return graphTask; + } + + *//** + * 分析任务模型 + *//* + public GraphTask findTaskById(Long taskId) { + + + GraphTask graphTask = graphTaskService.getOne(taskId); + + Map fQ = new HashMap<>(); + fQ.put("EQL_taskId", taskId); + List tfs = graphTaskFileService.queryList(fQ); + + *//** + * 查询所有的tag + *//* + List tags = nebulaOperateService.showTag(graphTask.getSpace()); + + + *//** + * 查询所有的edge + *//* + List edges = nebulaOperateService.showEdge(graphTask.getSpace()); + + Map tagMap = new HashMap<>(); + + for (JSONObject tg : tags) { + String tag = tg.getStr("Name"); + List fields = nebulaOperateService.descTag(graphTask.getSpace(), tag); + fields.add(0, createField("vid", DataType.STRING, "唯一id")); + tg.set("fields", fields); + tagMap.put(tag, tg); + } + + Map edgeMap = new HashMap<>(); + for (JSONObject eg : edges) { + String edge = eg.getStr("Name"); + List fields = nebulaOperateService.descTag(graphTask.getSpace(), edge); + fields.add(0, createField("srcvid", DataType.STRING, "开始id")); + fields.add(1, createField("dstvid", DataType.STRING, "结束id")); + eg.set("fields", fields); + edgeMap.put(edge, eg); + } + + + for (GraphTaskFile fn : tfs) { + String originalFilename = fn.getOriginalFilename(); + if (tagMap.containsKey(originalFilename)) { + fn.setType(IndexType.TAG); + } + + if (edgeMap.containsKey(originalFilename)) { + fn.setType(IndexType.EDGE); + } + + if (fn.getType() != null) { + fn.setTypename(originalFilename); + } + + + } + + + graphTask.setTags(tags); + graphTask.setEdges(edges); + graphTask.setTfs(tfs); + + return graphTask; + } + + *//** + * 读取文件执行导入 + * + * @param gtQ + *//* + public void graphTaskExecute(GraphTaskExecuteQ gtQ) { + + GraphTask graphTask = graphTaskService.getOne(gtQ.getTaskId()); + + Map fQ = new HashMap<>(); + fQ.put("EQL_taskId", gtQ.getTaskId()); + List tfs = graphTaskFileService.queryList(fQ); + + Map mvMap = tfs.stream().collect(Collectors.toMap(GraphTaskFile::getId, GraphTaskFile::getPath)); + + List taskFiles = gtQ.getTaskFiles(); + + for (GraphTaskFileExecuteQ fn : taskFiles) { + final String relativePath = mvMap.get(fn.getTaskFileId()); + final String path = graphFilePath + relativePath; + + *//** + * 执行excel读取 + *//* + + if (fn.getCorrespond() == null + || fn.getCorrespond().size() == 0) { + continue; + } + + if (IndexType.TAG.equals(fn.getType())) { + + if (!fn.getCorrespond().containsKey("vid")) { + continue; + } + + ExcelUtil.readBySax(path, 0, analysisTag(graphTask.getSpace(), fn)); + } + + *//** + * 执行读取 + *//* + if (IndexType.EDGE.equals(fn.getType())) { + + if (!fn.getCorrespond().containsKey("srcvid") + || !fn.getCorrespond().containsKey("dstvid")) { + continue; + } + + ExcelUtil.readBySax(path, 0, analysisEdge(graphTask.getSpace(), fn)); + } + } + } + + + private RowHandler analysisTag(String space, GraphTaskFileExecuteQ taskFileQ) { + + JSONObject correspond = taskFileQ.getCorrespond(); + + List columns = new ArrayList<>(correspond.keySet()); + List header = new ArrayList<>(); + List vts = new ArrayList<>(); + + RowHandler rowHandler = new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + + if (rowIndex > 0) { + + JSONObject ob = new JSONObject(); + + for (String feild : correspond.keySet()) { + + *//** + * 获得属性对应的文件字段 + *//* + String fh = correspond.getStr(feild); + + if (StringUtils.isBlank(fh)) { + continue; + } + + int i = header.indexOf(fh); + if (i < 0) { + continue; + } + Object value = rowlist.get(i); + ob.set(feild, value); + } + + NebulaVertex e = new NebulaVertex(); + e.setOb(ob); + vts.add(e); + + if (vts.size() >= 500) { + nebulaOperateService.insertTagAll(space, taskFileQ.getName(), columns, vts); + vts.clear(); + } + + } else { + for (Object h : rowlist) { + header.add(h.toString()); + } + } + } + }; + + if (vts.size() >= 0) { + nebulaOperateService.insertTagAll(space, taskFileQ.getName(), columns, vts); + vts.clear(); + + GraphTaskFile file = new GraphTaskFile(); + file.setId(taskFileQ.getTaskFileId()); + file.setOver(true); + graphTaskFileService.modify(file); + } + + return rowHandler; + } + + + private RowHandler analysisEdge(String space, GraphTaskFileExecuteQ taskFileQ) { + + JSONObject correspond = taskFileQ.getCorrespond(); + + List columns = new ArrayList<>(correspond.keySet()); + List header = new ArrayList<>(); + List vts = new ArrayList<>(); + + RowHandler rowHandler = new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + + if (rowIndex > 0) { + + JSONObject ob = new JSONObject(); + + for (String feild : correspond.keySet()) { + + *//** + * 获得属性对应的文件字段 + *//* + String fh = correspond.getStr(feild); + + if (StringUtils.isBlank(fh)) { + continue; + } + + int i = header.indexOf(fh); + if (i < 0) { + continue; + } + Object value = rowlist.get(i); + ob.set(feild, value); + } + + NebulaEdgeLine e = new NebulaEdgeLine(); + e.setOb(ob); + vts.add(e); + + if (vts.size() >= 500) { + nebulaOperateService.insertEdgeLineAll(space, taskFileQ.getName(), columns, vts); + vts.clear(); + } + } else { + for (Object h : rowlist) { + header.add(h.toString()); + } + } + } + }; + + if (vts.size() >= 0) { + nebulaOperateService.insertEdgeLineAll(space, taskFileQ.getName(), columns, vts); + vts.clear(); + GraphTaskFile file = new GraphTaskFile(); + file.setId(taskFileQ.getTaskFileId()); + file.setOver(true); + graphTaskFileService.modify(file); + } + + return rowHandler; + } + + + *//** + * 获得字段属性 + *//* + private static JSONObject createField(String name, DataType type, String comment) { + JSONObject ot = new JSONObject(); + ot.set("field", name); + ot.set("type", type); + ot.set("comment", comment); + return ot; + } + +} +*/ \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/nebula/graph/service/ImportGraphInJsonService.java b/api/src/main/java/com/wx/application/nebula/graph/service/ImportGraphInJsonService.java new file mode 100644 index 0000000..eb412ff --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/service/ImportGraphInJsonService.java @@ -0,0 +1,325 @@ +package com.wx.application.nebula.graph.service; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.wx.application.core.entity.GraphTask; +import com.wx.application.core.service.GraphTaskService; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.bean.NebulaVertex; +import com.wx.application.util.MD5Util; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.io.file.FileReader; +import cn.hutool.core.util.ZipUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; + +/** + * 图谱数据导入 + */ +@Slf4j +@Service +public class ImportGraphInJsonService { + + public final static String YYYYMMDD = "yyyy-MM-dd"; + + @Value("${upload.graph.path}") + private String graphFilePath; + + /** + * 文件名限制 + */ + final static String vertexjson = "vertex.json"; + final static String edgejson = "edge.json"; + + @Autowired + GraphTaskService graphTaskService; + + @Autowired + NebulaOperateService nebulaOperateService; + + /** + * 按json文件导入 + * --------------------------------------------------------------------------- + */ + + /** + * 将上传的文件zip包进行解压 + * @param space + */ + public JSONArray uploadFile(MultipartFile file, String space) { + + JSONArray result = new JSONArray(); + + /** + * 这个空间有任务在执行 不能导入 + */ + int c = graphTaskService.countBySpaceAndStauts(space); + + if(c > 0) { + return null; + } + + try { + + String md5Path = MD5Util.getMD5(file.getInputStream()); + + String tempDir = DateUtil.format(new Date(), YYYYMMDD) + File.separator; + String mkdir = graphFilePath + tempDir + md5Path + File.separator; + + if (!FileUtil.exist(mkdir)) { + FileUtil.mkdir(mkdir); + } + + String originalFilename = file.getOriginalFilename(); + String path = mkdir + originalFilename ; + path = path.replaceAll("\\\\", "/"); + + FileUtil.writeBytes(file.getBytes(), path); + /** + * 进行解压 + */ + File unzipPath = ZipUtil.unzip(path, mkdir); + FileUtil.del(path); + + File[] fls = FileUtil.ls(unzipPath.getPath()); + + JSONObject item = null; + + Boolean allFlag = true; + + for(File fn : fls) { + item = new JSONObject(); + if(vertexjson.equals(fn.getName().toLowerCase())) { + item.set("title", "节点"); + item.set("gf_name", vertexjson); + item.set("up_name", fn.getName()); + item.set("flag", true); + } else if(edgejson.equals(fn.getName().toLowerCase())) { + item.set("title", "关系"); + item.set("gf_name", edgejson); + item.set("up_name", fn.getName()); + item.set("flag", true); + } else { + item.set("title", "匹配错误"); + item.set("gf_name", vertexjson + "," + edgejson); + item.set("up_name", fn.getName()); + item.set("flag", false); + allFlag = false; + } + result.add(item); + } + + if(!allFlag) { + FileUtil.del(unzipPath.getPath()); + } else { + ExecutorService executor = Executors.newFixedThreadPool(1); + executor.submit(new Runnable() { + @Override + public void run() { + beginTask(space, fls); + } + }); + executor.shutdown(); + } + + } catch (Exception e) { + log.info("{}", e); + } + return result; + } + + //@Async + public void beginTask(String space ,File[] fls) { + /** + * 文件都匹配成功 + * 执行导入 + */ + for(File fn : fls) { + if(vertexjson.equals(fn.getName().toLowerCase())) { + GraphTask task = new GraphTask(); + task.setSpace(space); + task.setStatus(0); + task.setFileName(fn.getName()); + graphTaskService.create(task); + analysisVertexJson(space ,fn, task.getId()); + } else if(edgejson.equals(fn.getName().toLowerCase())) { + GraphTask task = new GraphTask(); + task.setSpace(space); + task.setStatus(0); + task.setFileName(fn.getName()); + graphTaskService.create(task); + analysisEdgeJson(space, fn, task.getId()); + } + } + + try { + Thread.sleep(10000); + } catch (InterruptedException e) { + } + + nebulaOperateService.submitJobStats(space); + } + + + public void analysisVertexJson(String space,File file, Long taskId) { + + FileReader fileReader = new FileReader(file); + BufferedReader input = IoUtil.getUtf8Reader(fileReader.getInputStream()); + String line = null; + List list = new Vector<>(); + NebulaVertex vertex = null; + try { + while((line = input.readLine()) != null) { + try { + JSONObject ot = JSONUtil.parseObj(line); + String label = ot.getStr(":LABEL"); + String id = ot.getStr(":ID"); + + if(StringUtils.isBlank(label) || StringUtils.isBlank(id)) { + continue; + } + + String tag = Generators.tagname(label); + JSONObject ob = new JSONObject(); + for(String key : ot.keySet()) { + if(":LABEL".equals(key) || ":ID".equals(key)) { + continue; + } + ob.set(key, ot.get(key)); + } + if(ob.size()==0) { + continue; + } + vertex = new NebulaVertex(); + vertex.setTag(tag); + vertex.setOb(ob); + vertex.setVid(MD5Util.MD5(id)); + + list.add(vertex); + + if(list.size() > 2000) { + log.info("执行一次 节点导入 {}", list.size()); + Map> vMap = list.stream() + .collect(Collectors.groupingBy(NebulaVertex::getTag)); + + vMap.forEach((v,ls)->{ + nebulaOperateService.insertTagAll(space, v, ls); + }); + list.clear(); + } + } catch (Exception e) { + log.info("{}", e.getMessage()); + } + } + + if(list.size() > 0) { + log.info("执行一次 节点导入 {}", list.size()); + Map> vMap = list.stream() + .collect(Collectors.groupingBy(NebulaVertex::getTag)); + vMap.forEach((v,l)->{ + nebulaOperateService.insertTagAll(space, v, l); + }); + vMap = null; + list.clear(); + } + + } catch (IOException e) { + log.info("{}", e); + } finally { + GraphTask task = new GraphTask(); + task.setId(taskId); + task.setStatus(1); + graphTaskService.modify(task); + } + } + + public void analysisEdgeJson(String space, File file, Long taskId) { + + FileReader fileReader = new FileReader(file); + BufferedReader input = IoUtil.getUtf8Reader(fileReader.getInputStream()); + String line = null; + + List list = new Vector<>(); + + NebulaEdgeLine edge = null; + + try { + + while((line = input.readLine()) != null) { + + try { + + JSONObject ot = JSONUtil.parseObj(line); + String srcName = ot.getStr("头节点"); + String dctName = ot.getStr("尾节点"); + String edgeName = ot.getStr("关联"); + + String edgeHs = Generators.edgename(edgeName); + + edge = new NebulaEdgeLine(); + edge.setSrcId(MD5Util.MD5(srcName)); + edge.setDstId(MD5Util.MD5(dctName)); + + JSONObject ob = new JSONObject(); + ob.set("label", edgeName); + edge.setOb(ob); + edge.setEdge(edgeHs); + list.add(edge); + if(list.size() > 2000) { + log.info("执行一次 关系导入 {}", list.size()); + Map> vMap = list.stream() + .collect(Collectors.groupingBy(NebulaEdgeLine::getEdge)); + vMap.forEach((v,ls)->{ + nebulaOperateService.insertEdgeLineAll(space, v, ls); + }); + list.clear(); + } + + } catch (Exception e) { + log.info("{}", e.getMessage()); + } + } + + if(list.size() > 0) { + log.info("执行一次关系导入 {}", list.size()); + Map> vMap = list.stream() + .collect(Collectors.groupingBy(NebulaEdgeLine::getEdge)); + vMap.forEach((v,ls)->{ + nebulaOperateService.insertEdgeLineAll(space, v, ls); + }); + + list.clear(); + } + + } catch (IOException e) { + log.info("{}", e); + } finally { + GraphTask task = new GraphTask(); + task.setId(taskId); + task.setStatus(1); + graphTaskService.modify(task); + } + } + +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/service/ImportModelService.java b/api/src/main/java/com/wx/application/nebula/graph/service/ImportModelService.java new file mode 100644 index 0000000..1ca14f0 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/service/ImportModelService.java @@ -0,0 +1,345 @@ +package com.wx.application.nebula.graph.service; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.wx.application.core.entity.OntologyConcept; +import com.wx.application.core.entity.OntologyField; +import com.wx.application.core.entity.OntologyRelation; +import com.wx.application.core.service.OntologyConceptService; +import com.wx.application.core.service.OntologyFieldService; +import com.wx.application.core.service.OntologyRelationService; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.bean.ModelEdgeLine; +import com.wx.application.nebula.graph.bean.ModelVertex; +import com.wx.application.nebula.graph.bean.NebulaField; +import com.wx.application.nebula.graph.enums.DataType; +import com.wx.application.util.InputStreamCache; + +import cn.hutool.json.JSONObject; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.sax.handler.RowHandler; +import lombok.extern.slf4j.Slf4j; + +/** + * 本体模型导入 + */ +@Slf4j +@Service +public class ImportModelService { + + @Autowired + NebulaModelService nebulaModelService; + + @Autowired + OntologyConceptService ontologyConceptService; + + @Autowired + OntologyFieldService ontologyFieldService; + + @Autowired + OntologyRelationService ontologyRelationService; + + /** + * 导入数据解析excel + */ + public JSONObject analysisExcel(Long ontologyId, InputStream in) { + + InputStreamCache inCache = new InputStreamCache(in); + + List mxs = new ArrayList<>(); + List mes = new ArrayList<>(); + + List ontologyConcepts = new ArrayList<>(); + Map ontologyFields = new HashMap<>(); + Map ontologyRelations = new HashMap<>(); + + + ExcelReader reader = ExcelUtil.getReader(inCache.getInputStream()); + List sns = reader.getSheetNames(); + for(int i=0;i(ontologyFields.values())); + ontologyRelationService.insertBatchByXml(new ArrayList<>(ontologyRelations.values())); + + /** + * 执行导入 + */ + nebulaModelService.insertBatchModelVertex(mxs); + + nebulaModelService.insertBatchModelEdge(mes); + + + JSONObject result = new JSONObject(); + result.set("gncount", ontologyConcepts.size()); + result.set("gxscount", ontologyRelations.size()); + result.set("zsxcount", ontologyFields.size()); + + return result; + } + + + private RowHandler analysisTag(List mxs, + List ontologyConcepts, Long ontologyId) { + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + ModelVertex mx = new ModelVertex(); + mx.setOntologyId(ontologyId); + + /** + * 标签label 唯一id 名称 父id + + */ + String vid = rowlist.get(1) != null?rowlist.get(1).toString():null; + String label = rowlist.get(2) != null?rowlist.get(2).toString():null; + String parentId = rowlist.get(3) != null?rowlist.get(3).toString():null; + + if(StringUtils.isBlank(vid)) { + return; + } + + if(StringUtils.isBlank(label)) { + return; + } + + mx.setTagName(Generators.tagname(label)); + mx.setLabel(label); + + /** + * 设置id + */ + mx.setVid(Generators.ontologyVid(ontologyId, vid)); + + /** + * 执行mysql的对象封装 + */ + OntologyConcept ct = new OntologyConcept(); + ct.setOntologyId(ontologyId); + ct.setLabel(label); + ct.setOwnId(Generators.ontologyVid(ontologyId, vid)); + ct.setParentId(Generators.ontologyVid(ontologyId, parentId)); + + ontologyConcepts.add(ct); + + mxs.add(mx); + } + } + }; + } + + private RowHandler analysisTagField(List mxs, + Map ontologyFields, Long ontologyId) { + + Map mvMap = mxs.stream().collect( + Collectors.toMap(ModelVertex::getVid, a -> a, (k1, k2) -> k1)); + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 1) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + String vid_ = rowlist.get(1) != null?rowlist.get(1).toString():null; + String strfield = rowlist.get(3) != null?rowlist.get(3).toString():null; + String strtype = rowlist.get(4) != null?rowlist.get(4).toString():null; + String comment = rowlist.get(5) != null?rowlist.get(5).toString():null; + + if(StringUtils.isBlank(strfield) && StringUtils.isBlank(comment)) { + return; + } + + if(StringUtils.isBlank(strfield)) { + strfield = Generators.fieldname(comment); + } + + if(StringUtils.isBlank(strtype)) { + strtype = "STRING"; + } + DataType type = DataType.valueOf(strtype.toUpperCase()); + + /** + * 添加mysql对象 + */ + OntologyField ofd = new OntologyField(); + ofd.setOntologyId(ontologyId); + ofd.setField(strfield); + ofd.setType(type); + ofd.setComment(comment); + ontologyFields.put(strfield, ofd); + + String vid = Generators.ontologyVid(ontologyId, vid_); + + if(StringUtils.isBlank(vid) || !mvMap.containsKey(vid)) { + return; + } + + ModelVertex modelVertex = mvMap.get(vid); + if(modelVertex == null) { + return; + } + + if(modelVertex.getFields() == null) { + modelVertex.setFields(new ArrayList<>()); + } + + NebulaField field = new NebulaField(); + field.setType(type); + field.setComment(comment); + field.setField(strfield); + modelVertex.getFields().add(field); + } + } + }; + } + + + private RowHandler analysisEdgeField(List mes) { + + Map mvMap = mes.stream().collect( + Collectors.toMap(ModelEdgeLine::getLabel, a -> a, (k1, k2) -> k1)); + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + String label = rowlist.get(1) != null?rowlist.get(1).toString():null; + String strfield = rowlist.get(2) != null?rowlist.get(2).toString():null; + String strtype = rowlist.get(3) != null?rowlist.get(3).toString():null; + String comment = rowlist.get(4) != null?rowlist.get(4).toString():null; + + if(StringUtils.isBlank(label) || !mvMap.containsKey(label)) { + return; + } + + if(StringUtils.isBlank(strfield) && StringUtils.isBlank(comment)) { + return; + } + + ModelEdgeLine modelEdgeLine = mvMap.get(label); + if(modelEdgeLine == null) { + return; + } + + + if(modelEdgeLine.getFields() == null) { + modelEdgeLine.setFields(new ArrayList<>()); + } + + + NebulaField field = new NebulaField(); + + if(StringUtils.isBlank(strtype)) { + strtype = "STRING"; + } + DataType type = DataType.valueOf(strtype.toUpperCase()); + field.setType(type); + field.setComment(comment); + + if(StringUtils.isBlank(strfield)) { + strfield = Generators.fieldname(comment); + } + + field.setField(strfield); + + modelEdgeLine.getFields().add(field); + } + } + }; + } + + private RowHandler analysisEdge(List mes, + Map ontologyRelations, Long ontologyId) { + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + ModelEdgeLine mx = new ModelEdgeLine(); + mx.setOntologyId(ontologyId); + + String label = rowlist.get(1)!= null?rowlist.get(1).toString():null; + String srcId = rowlist.get(2)!= null?rowlist.get(2).toString():null; + String dstId= rowlist.get(3)!= null?rowlist.get(3).toString():null; + + if(StringUtils.isBlank(label)) { + return; + } + + /** + * 添加mysql对象 + */ + OntologyRelation relation = new OntologyRelation(); + relation.setOntologyId(ontologyId); + relation.setLabel(label); + ontologyRelations.put(label, relation); + + if(StringUtils.isBlank(srcId)) { + return; + } + if(StringUtils.isBlank(dstId)) { + return; + } + mx.setEdgeName(Generators.edgename(label)); + mx.setLabel(label); + mx.setSrcId(Generators.ontologyVid(ontologyId, srcId)); + mx.setDstId(Generators.ontologyVid(ontologyId, dstId)); + mes.add(mx); + } + } + }; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/service/ImportSchemaService.java b/api/src/main/java/com/wx/application/nebula/graph/service/ImportSchemaService.java new file mode 100644 index 0000000..8be585a --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/service/ImportSchemaService.java @@ -0,0 +1,296 @@ +package com.wx.application.nebula.graph.service; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.wx.application.nebula.graph.bean.NebulaEdge; +import com.wx.application.nebula.graph.bean.NebulaField; +import com.wx.application.nebula.graph.bean.NebulaIndex; +import com.wx.application.nebula.graph.bean.NebulaTag; +import com.wx.application.nebula.graph.enums.DataType; +import com.wx.application.nebula.graph.enums.IndexType; +import com.wx.application.util.InputStreamCache; + +import cn.hutool.core.util.HashUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import cn.hutool.poi.excel.sax.handler.RowHandler; +import lombok.extern.slf4j.Slf4j; + +/** + * 本体模型导入 + */ +@Slf4j +@Service +public class ImportSchemaService { + + @Autowired + NebulaOperateService nebulaOperateService; + + /** + * 导入数据解析excel + */ + public void analysisExcel(String space, InputStream in) { + + InputStreamCache inCache = new InputStreamCache(in); + + List mxs = new ArrayList<>(); + List mes = new ArrayList<>(); + + ExcelReader reader = ExcelUtil.getReader(inCache.getInputStream()); + List sns = reader.getSheetNames(); + for(int i=0;i{ + try { + nebulaOperateService.createTag(space, v); + /** + * 创建索引 + */ + NebulaIndex e = new NebulaIndex(); + e.setName("tagindex_" + v.getName()); + e.setOnName(v.getName()); + e.setType(IndexType.TAG); + nebulaOperateService.createIndex(space, e); + + } catch (Exception e) { + log.error("{}",e); + } + }); + + mes.forEach(v->{ + try { + nebulaOperateService.createEdge(space, v); + /** + * 创建索引 + */ + NebulaIndex e = new NebulaIndex(); + e.setName("edgeindex_" + v.getName()); + e.setOnName(v.getName()); + e.setType(IndexType.EDGE); + nebulaOperateService.createIndex(space, e); + } catch (Exception e) { + log.error("{}",e); + } + }); + + } + + + private RowHandler analysisTag(List mxs) { + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + NebulaTag mx = new NebulaTag(); + + String tagName = rowlist.get(1) != null?rowlist.get(1).toString():null; + String comment = rowlist.get(2) != null?rowlist.get(2).toString():null; + + if(StringUtils.isBlank(tagName)) { + + if(StringUtils.isBlank(comment)) { + return; + } + tagName = "tag_" + HashUtil.fnvHash(comment); + } + + mx.setName(tagName); + mx.setComment(comment); + + mxs.add(mx); + } + } + }; + } + + private RowHandler analysisTagField(List mxs) { + + Map mvMap = mxs.stream().collect( + Collectors.toMap(NebulaTag::getName, a -> a, (k1, k2) -> k1)); + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + String tagName = rowlist.get(1) != null?rowlist.get(1).toString():null; + String comment = rowlist.get(2) != null?rowlist.get(2).toString():null; + + if(StringUtils.isBlank(tagName)) { + if(StringUtils.isBlank(comment)) { + return; + } + tagName = "tag_" + HashUtil.fnvHash(comment); + } + + NebulaTag nebulaTag = mvMap.get(tagName); + if(nebulaTag == null) { + return; + } + + if(nebulaTag.getFields() == null) { + nebulaTag.setFields(new ArrayList<>()); + } + NebulaField field = new NebulaField(); + + String Field = rowlist.get(3) != null?rowlist.get(3).toString():null; + String strtype = rowlist.get(4) != null?rowlist.get(4).toString():null; + String fieldcomment = rowlist.get(5) != null?rowlist.get(5).toString():null; + + if(StringUtils.isBlank(Field)) { + if(StringUtils.isBlank(fieldcomment)) { + return; + } + Field = "field_" + HashUtil.fnvHash(fieldcomment); + } + + field.setField(Field); + + if(StringUtils.isBlank(strtype)) { + strtype = "STRING"; + } + DataType type = DataType.valueOf(strtype.toUpperCase()); + field.setType(type); + field.setComment(fieldcomment); + nebulaTag.getFields().add(field); + } + } + }; + } + + + private RowHandler analysisEdgeField(List mes) { + + Map mvMap = mes.stream().collect( + Collectors.toMap(NebulaEdge::getName, a -> a, (k1, k2) -> k1)); + + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + String edgeName = rowlist.get(1) != null?rowlist.get(1).toString():null; + String comment = rowlist.get(2) != null?rowlist.get(2).toString():null; + + if(StringUtils.isBlank(edgeName)) { + if(StringUtils.isBlank(comment)) { + return; + } + edgeName = "edge_" + HashUtil.fnvHash(comment); + } + + NebulaEdge nebulaEdge = mvMap.get(edgeName); + if(nebulaEdge == null) { + return; + } + + if(nebulaEdge.getFields() == null) { + nebulaEdge.setFields(new ArrayList<>()); + } + NebulaField field = new NebulaField(); + + String Field = rowlist.get(3) != null?rowlist.get(3).toString():null; + String strtype = rowlist.get(4) != null?rowlist.get(4).toString():null; + String fieldcomment = rowlist.get(5) != null?rowlist.get(5).toString():null; + + if(StringUtils.isBlank(Field)) { + if(StringUtils.isBlank(fieldcomment)) { + return; + } + Field = "field_" + HashUtil.fnvHash(fieldcomment); + } + + field.setField(Field); + + if(StringUtils.isBlank(strtype)) { + strtype = "STRING"; + } + DataType type = DataType.valueOf(strtype.toUpperCase()); + field.setType(type); + field.setComment(rowlist.get(4).toString()); + nebulaEdge.getFields().add(field); + } + } + }; + } + + private RowHandler analysisEdge(List mes) { + return new RowHandler() { + @Override + public void handle(int sheetIndex, long rowIndex, List rowlist) { + if(rowIndex > 0) { + + Object index = rowlist.get(0); + if(index == null || StringUtils.isBlank(index.toString())) { + return; + } + + NebulaEdge mx = new NebulaEdge(); + + String edgeName = rowlist.get(1)!= null?rowlist.get(1).toString():null; + String comment = rowlist.get(2)!= null?rowlist.get(2).toString():null; + + if(StringUtils.isBlank(edgeName)) { + if(StringUtils.isBlank(comment)) { + return; + } + edgeName = "edge_" + HashUtil.fnvHash(comment); + } + + mx.setName(edgeName); + mx.setComment(comment); + + mes.add(mx); + } + } + }; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/service/NebulaModelService.java b/api/src/main/java/com/wx/application/nebula/graph/service/NebulaModelService.java new file mode 100644 index 0000000..abdceda --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/service/NebulaModelService.java @@ -0,0 +1,903 @@ +package com.wx.application.nebula.graph.service; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.vesoft.nebula.client.graph.data.ResultSet; +import com.wx.application.constant.CONSTANT; +import com.wx.application.core.entity.OntologyConcept; +import com.wx.application.core.entity.OntologyRelation; +import com.wx.application.core.mapper.OntologyConceptMapper; +import com.wx.application.core.mapper.OntologyRelationMapper; +import com.wx.application.nebula.graph.base.BaseGraphSerice; +import com.wx.application.nebula.graph.base.Generators; +import com.wx.application.nebula.graph.base.ResultSetUtils; +import com.wx.application.nebula.graph.bean.ModelEdgeLine; +import com.wx.application.nebula.graph.bean.ModelVertex; +import com.wx.application.nebula.graph.bean.NebulaEdge; +import com.wx.application.nebula.graph.bean.NebulaEdgeLine; +import com.wx.application.nebula.graph.bean.NebulaField; +import com.wx.application.nebula.graph.bean.NebulaIndex; +import com.wx.application.nebula.graph.bean.NebulaTag; +import com.wx.application.nebula.graph.bean.NebulaVertex; +import com.wx.application.nebula.graph.enums.IndexType; +import com.wx.application.nebula.graph.query.NebulaModel; +import com.wx.application.nebula.graph.query.NebulaNode; +import com.wx.application.nebula.graph.query.NebulaPath; +import com.wx.application.nebula.graph.query.NebulaQo; +import com.wx.application.nebula.graph.query.NebulaRelation; +import com.wx.application.nebula.graph.query.PageRequest; +import com.wx.application.nebula.graph.query.TermQuery; +import com.wx.application.nebula.graph.query.TermQueryBuilder; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; + +/** + *本体模型 + */ +@Slf4j +@Service +public class NebulaModelService extends BaseGraphSerice { + + @Autowired + OntologyRelationMapper ontologyRelationMapper; + + @Autowired + OntologyConceptMapper ontologyConceptMapper; + + /** + * 模型空间分割id + */ + final static String ONTOLOGYID = "ontologyId"; + final static String LABEL = "label"; + + /** + * 默认本体空间 + */ + final static String noumenon_space = "dn_noumenon_space"; + final static String noumenon_tag = "dn_noumenon_tag"; + final static String noumenon_edge = "dn_noumenon_edge"; + /** + * 本体空间快照名称 + */ + final static String nebulafieldsnapshot = "nebulafieldsnapshot"; + + + protected NebulaVertex modelToNebulaVertex(ModelVertex mx) { + NebulaVertex vertex = new NebulaVertex(); + Long ontologyId = mx.getOntologyId(); + vertex.setVid(mx.getVid()); + JSONObject ob = new JSONObject(); + ob.set(ONTOLOGYID, ontologyId); + String tagName = Generators.tagname(mx.getLabel()); + ob.set("tagName", tagName); + + ob.set("label", mx.getLabel()); + /** + * 加个字段快照 + */ + if(mx.getFields() != null) { + ob.set(nebulafieldsnapshot, JSONUtil.toJsonStr(mx.getFields())); + } + vertex.setOb(ob); + return vertex; + } + + /** + * 插入模型点 + * @param vertex + */ + public NebulaVertex insertModelVertex(ModelVertex mx) { + NebulaVertex vertex = modelToNebulaVertex(mx); + insertVertex(noumenon_space, noumenon_tag, vertex); + return vertex; + } + + + public void insertBatchModelVertex(List mx) { + + if(mx == null) { + return; + } + + List vtxs = new ArrayList<>(); + mx.forEach(v-> { + try { + NebulaVertex vtx = modelToNebulaVertex(v); + vtxs.add(vtx); + if(vtxs.size() > CONSTANT.nebula_batch_create_max) { + insertTagAll(noumenon_space, noumenon_tag, vtxs); + vtxs.clear(); + } + } catch (Exception e) { + log.info("{}",e); + } + }); + + if(vtxs.size() > 0) { + insertTagAll(noumenon_space, noumenon_tag, vtxs); + vtxs.clear(); + } + } + + /** + * 删除一个本体模型点 + */ + public void deleteModelVertex(String vid) { + deleteVertex(noumenon_space, vid); + } + + /** + * 批量删除点 + * @param vids + */ + public void deleteModelVertexs(List vids) { + deleteVertexs(noumenon_space, noumenon_tag, vids); + } + + protected NebulaEdgeLine modelToNebulaEdge(ModelEdgeLine el) { + NebulaEdgeLine edge = new NebulaEdgeLine(); + + Long ontologyId = el.getOntologyId(); + + edge.setSrcId(el.getSrcId()); + edge.setDstId(el.getDstId()); + + edge.setEdgeNo(el.getEdgeNo()); + JSONObject ob = new JSONObject(); + ob.set(ONTOLOGYID, ontologyId); + + String edgeName = Generators.edgename(el.getLabel()); + + ob.set("edgeName", edgeName); + ob.set("label", el.getLabel()); + /*ob.set("arrow", el.getArrow()); + ob.set("paternity", el.getPaternity());*/ + /** + * 加个快照 + */ + ob.set(nebulafieldsnapshot, JSONUtil.toJsonStr(el.getFields())); + edge.setOb(ob); + return edge; + } + /** + * 创建一个模型关系 + */ + public NebulaEdgeLine insertModelEdge(ModelEdgeLine el) { + NebulaEdgeLine edge = modelToNebulaEdge(el); + insertEdgeLine(noumenon_space, noumenon_edge, edge); + return edge; + } + + + public void insertBatchModelEdge(List mx) { + + if(mx == null) { + return; + } + + List vtxs = new ArrayList<>(); + mx.forEach(v-> { + try { + NebulaEdgeLine vtx = modelToNebulaEdge(v); + vtxs.add(vtx); + if(vtxs.size() > CONSTANT.nebula_batch_create_max) { + insertEdgeLineAll(noumenon_space, noumenon_edge, vtxs); + vtxs.clear(); + } + } catch (Exception e) { + log.info("{}",e); + } + }); + + if(vtxs.size() > 0) { + insertEdgeLineAll(noumenon_space, noumenon_edge, vtxs); + vtxs.clear(); + } + } + + + /** + * 删除一个本体模型点 + */ + public void deleteModelEdge(NebulaEdgeLine edge) { + deleteEdgeLine(noumenon_space, noumenon_edge, edge); + } + + + /** + * 根据OntologyId删除所有的本体和关系 + */ + public void deleteAllByOntologyId(Long ontologyId) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + deleteVertexConduit(noumenon_space, noumenon_tag, builder); + } + + + /** + * 根据条件统计点 + */ + public Long countVertexsByOntologyid(Long ontologyId) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + return countVertexs(noumenon_space, noumenon_tag, builder); + } + + /** + * 根据条件统计边 + */ + public Long countEdgesByOntologyid(Long ontologyId) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + return countEdges(noumenon_space, noumenon_edge, builder); + } + + /** + * 根据对象属性名称统计开始节点和 结束节点的数量 + */ + public List groupCountVexByEdgeByOntologyid(Long ontologyId) { + + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + + /** + * 通用聚合统计 + * 根据关键统计开始节点和 结束节点的数量 + */ + String nGql = "LOOKUP ON {} " + + "YIELD dst(edge) AS DstVID,src(edge) AS " + + "SrcVID,dn_noumenon_edge.label as label | " + + "GROUP BY $-.label YIELD $-.label as relation, " + + "count(DISTINCT $-.DstVID ) AS dstCount, " + + "count(DISTINCT $-.SrcVID ) AS srcCount | ORDER BY $-.srcCount DESC"; + + String query = null; + if(builder != null && StringUtils.isNotBlank(query = builder.of(noumenon_edge))) { + nGql = nGql.replaceFirst("YIELD", " {} YIELD"); + nGql = StrUtil.format(nGql, noumenon_edge, query); + } + ResultSet resultSet = executeGql(noumenon_space, nGql); + + List ntls = ResultSetUtils.printResultObject(resultSet,3); + + Map nMap = new HashMap<>(); + + if(ntls != null && ntls.size() > 0) { + for(JSONObject fn : ntls) { + nMap.put(fn.getStr("relation"), fn); + } + } + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("ontology_id", ontologyId); + List ontologyRelations = ontologyRelationMapper.selectList(wrapper); + + List result = new ArrayList<>(); + if(ontologyRelations != null && ontologyRelations.size() > 0) { + ontologyRelations.forEach(v-> { + JSONObject it = new JSONObject(); + it.set("relation", v.getLabel()); + JSONObject cs = nMap.get(v.getLabel()); + if(cs != null) { + it.set("dstcount", cs.getInt("dstcount")); + it.set("srccount", cs.getInt("srccount")); + } else { + it.set("dstcount", 0); + it.set("srccount", 0); + } + result.add(it); + }); + } + + return result; + } + + + /** + * 根据label标签查询关系 + */ + public List findRelationsByLabel(String label) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(LABEL, TermQuery.Operator.EQ, label)); + return findRelations(noumenon_space, noumenon_edge, builder); + } + + /** + * 根据id结婚查询概念 + * @param vids + * @return + */ + public List findNodeByIds(List vids) { + return findNodeByIds(noumenon_space, noumenon_tag, vids); + } + + /** + * 根据模型id查询 + * @return + */ + public List findNodesByOntologyId(Long ontologyId) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + /** + * 查询模型的节点 + */ + return findNodes(noumenon_space, noumenon_tag, builder); + } + + + public NebulaModel findAllGraphByOntologyId(Long ontologyId) { + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + /** + * 分页查询查询模型关系 + */ + List relations = findRelations(noumenon_space, + noumenon_edge, builder); + + List nodes = findNodes(noumenon_space, noumenon_tag, builder); + + NebulaModel result = new NebulaModel(); + result.setNodes(nodes); + result.setRelations(relations); + + return result; + } + + /** + * 根据OntologyId查询的本体和关系,用户图谱展示 + */ + public NebulaModel findRelationByOntologyId(Long ontologyId, NebulaQo nQ) { + + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + + /** + * 分页查询 + */ + PageRequest pageRequest = null; + if(nQ.getPageFlag()) { + pageRequest = PageRequest.of(nQ.getPage(), nQ.getPageSize()); + } + + /** + * 分页查询查询模型关系 + */ + List relations = findRelations(noumenon_space, + noumenon_edge, builder, pageRequest); + + List nodes = null; + if(relations.size() > 0) { + List vids = new ArrayList<>(); + for(NebulaRelation fn : relations) { + vids.add(fn.getSrcId()); + vids.add(fn.getDstId()); + } + nodes = findNodeByIds(noumenon_space, noumenon_tag, vids); + } + + if(nodes == null || nodes.size() == 0) { + builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + nodes = findNodes(noumenon_space, noumenon_tag, builder, pageRequest); + } + + NebulaModel result = new NebulaModel(); + result.setNodes(nodes); + result.setRelations(relations); + + return result; + } + + + /** + * 复制图模型 + */ + public void copyByOntologyId(Long srcOntologyId, Long dictOntologyId) { + + /** + * 查询模型关系 + */ + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, srcOntologyId)); + + List relations = findRelations(noumenon_space, noumenon_edge, builder); + + /** + * 查询模型的节点 + */ + List nodes = findNodes(noumenon_space, noumenon_tag, builder); + + Map vidMap = new HashMap<>(); + + List vertexs = new ArrayList<>(); + + nodes.forEach(v->{ + + try { + + String srcId = v.getVid(); + String qzDctId = dictOntologyId + "_"; + final Pattern pattern = Pattern.compile("(\\d+)_", Pattern.DOTALL); + String dctId = ReUtil.replaceFirst(pattern, srcId, qzDctId); + + + JSONObject ob = v.getProperties(); + /** + * 赋值新的模型空间id + */ + ob.set(ONTOLOGYID, dictOntologyId); + NebulaVertex vx = new NebulaVertex(); + vx.setOb(ob); + vx.setVid(dctId); + + vertexs.add(vx); + if(vertexs.size() > 2000) { + insertTagAll(noumenon_space, noumenon_tag, vertexs); + vertexs.clear(); + } + /** + * 老的vid 和 新vid进行对应 + */ + vidMap.put(srcId, dctId); + } catch (Exception e) { + log.error("{}",e); + } + }); + + if(vertexs.size() > 0) { + insertTagAll(noumenon_space, noumenon_tag, vertexs); + vertexs.clear(); + } + + /** + * 插入关系 + */ + + List edges = new ArrayList<>(); + relations.forEach(v->{ + + try { + String srcId = v.getSrcId(); + String dstId = v.getDstId(); + JSONObject ob = v.getProperties(); + /** + * 赋值新的模型空间id + */ + ob.set(ONTOLOGYID, dictOntologyId); + + NebulaEdgeLine edge = new NebulaEdgeLine(); + edge.setSrcId(vidMap.get(srcId)); + edge.setDstId(vidMap.get(dstId)); + edge.setOb(ob); + edges.add(edge); + + if(edges.size() > 2000) { + insertEdgeLineAll(noumenon_space, noumenon_edge, edges); + edges.clear(); + } + + } catch (Exception e) { + log.error("{}",e); + } + }); + + if(edges.size() > 0) { + insertEdgeLineAll(noumenon_space, noumenon_edge, edges); + edges.clear(); + } + } + + /** + * 根据本体模型创建图空间 + */ + public void initGraphDatabase(Long ontologyId, String space) { + /** + * 查询模型关系 + */ + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + + /** + * 查询模型的节点 + */ + List nodes = findNodes(noumenon_space, noumenon_tag, builder); + + int tn = 20; + + List> lists = ListUtil.split(nodes, (nodes.size() / tn) + 1); + ExecutorService executor = Executors.newFixedThreadPool(tn); + + for(List fn : lists) { + executor.submit(new Runnable() { + @Override + public void run() { + fn.forEach(v->{ + try { + JSONObject ob = v.getProperties(); + String tagName = ob.getStr("tagName"); + String comment = ob.getStr("label"); + JSONArray napshot = ob.getJSONArray(nebulafieldsnapshot); + NebulaTag tag = new NebulaTag(); + tag.setName(tagName); + tag.setComment(comment); + + if(napshot != null) { + List fields = napshot.toList(NebulaField.class); + tag.setFields(fields); + } + + createTag(space, tag); + + NebulaIndex e = new NebulaIndex(); + e.setName(Generators.indextagname(tagName)); + e.setOnName(tagName); + e.setType(IndexType.TAG); + createIndex(space, e); + + } catch (Exception e) { + log.error("{}",e); + } + }); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.MINUTES)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + List relations = findRelations(noumenon_space, noumenon_edge, builder); + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("ontology_id", ontologyId); + List ontologyRelations = ontologyRelationMapper.selectList(wrapper); + + List rls = ontologyRelations.stream().map(OntologyRelation::getLabel).collect(Collectors.toList()); + + Map fieldMaps = new ConcurrentHashMap<>(); + Map edgeMaps = new ConcurrentHashMap<>(); + + relations.forEach(v->{ + try { + JSONObject ob = v.getProperties(); + String edgeName = ob.getStr("edgeName"); + String comment = ob.getStr("label"); + JSONArray napshot = ob.getJSONArray(nebulafieldsnapshot); + edgeMaps.put(comment, edgeName); + if(napshot != null && napshot.size() > 0) { + if(!fieldMaps.containsKey(comment)) { + fieldMaps.put(comment, new JSONArray()); + } + fieldMaps.get(comment).addAll(napshot); + } + } catch (Exception e) { + log.error("{}",e); + } + }); + + + List> rts = ListUtil.split(rls, (rls.size() / tn) + 1); + executor = Executors.newFixedThreadPool(tn); + + for(List fn : rts) { + executor.submit(new Runnable() { + @Override + public void run() { + fn.forEach(comment->{ + try { + + NebulaEdge edge = new NebulaEdge(); + + String edgeName = edgeMaps.get(comment); + edgeName = StringUtils.isBlank(edgeName)?Generators.edgename(comment):edgeName; + JSONArray napshot = fieldMaps.get(comment); + + if(napshot != null && napshot.size() > 0) { + List fields = napshot.toList(NebulaField.class); + edge.setFields(fields); + } + + edge.setName(edgeName); + edge.setComment(comment); + + createEdge(space, edge); + + /** + * 创建索引 + */ + NebulaIndex e = new NebulaIndex(); + e.setName(Generators.indexedgename(edgeName)); + e.setOnName(edgeName); + e.setType(IndexType.EDGE); + createIndex(space, e); + + } catch (Exception e) { + log.error("{}",e); + } + }); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.MINUTES)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + } + + /** + * 根据id查找节点 + */ + public NebulaNode findNodeById(String vid) { + return findNodeById(noumenon_space, noumenon_tag, vid); + } + + + public List findListPathById(String vid) { + + NebulaModel model = findOnePathById(noumenon_space , vid); + + List nodes = model.getNodes(); + + Map nodeMap = nodes.stream() + .collect(Collectors.toMap(NebulaNode::getVid, + node-> node, (oldValue, newValue) -> newValue)); + + List relations = model.getRelations(); + + List result = new ArrayList<>(); + + relations.forEach(v -> { + if(nodeMap.containsKey(v.getSrcId()) + && nodeMap.containsKey(v.getDstId())) { + NebulaPath pth = new NebulaPath(); + pth.setSrcnode(nodeMap.get(v.getSrcId())); + pth.setDctnode(nodeMap.get(v.getDstId())); + pth.setRelation(v); + result.add(pth); + } + }); + + return result; + } + + + /** + * 根据id查找path + */ + public NebulaModel findPathById(Long ontologyId, String vid) { + + NebulaModel model = findOnePathById(noumenon_space , vid); + if(model.getNodes().size() == 0) { + NebulaNode node = findNodeById(vid); + if(node != null) { + model.getNodes().add(node); + } + } + + /** + * 从mysql中构建树形图谱 + */ + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", vid); + OntologyConcept own = ontologyConceptMapper.selectOne(wrapper); + + findparentOntologyConcept(ontologyId, own, model); + + Set srls = new HashSet<>(model.getRelations()); + Set snls = new HashSet<>(model.getNodes()); + + model.setNodes(new ArrayList<>(snls)); + model.setRelations(new ArrayList<>(srls)); + return model; + } + + /** + * 递归查找父亲id + */ + public void findparentOntologyConcept(Long ontologyId, OntologyConcept own, NebulaModel model) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", own.getParentId()); + OntologyConcept pa = ontologyConceptMapper.selectOne(wrapper); + if(pa != null) { + + NebulaRelation relation = new NebulaRelation(); + relation.setSrcId(own.getOwnId()); + relation.setDstId(own.getParentId()); + relation.setEdgeName(noumenon_edge); + + JSONObject properties = new JSONObject(); + properties.set("edgeName", Generators.edgename("父概念")); + properties.set("label", "父概念"); + properties.set("arrow", true); + properties.set(ONTOLOGYID, ontologyId); + relation.setProperties(properties); + model.getRelations().add(relation); + + NebulaNode node = new NebulaNode(); + node.setVid(pa.getOwnId()); + node.setLabels(noumenon_tag); + + properties = new JSONObject(); + properties.set("label", pa.getLabel()); + properties.set("tagName", Generators.tagname(pa.getLabel())); + properties.set(ONTOLOGYID, ontologyId); + node.setProperties(properties); + model.getNodes().add(node); + + findparentOntologyConcept(ontologyId, pa, model); + } + } + + + /** + * 递归 + * 查询当前节点的值属性,包含继承的值属性 + */ + public List findNebulaFieldWithParents(String vId) { + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", vId); + OntologyConcept own = ontologyConceptMapper.selectOne(wrapper); + List conceptIds = null; + if(own != null) { + conceptIds = new ArrayList<>(); + conceptIds.add(own.getOwnId()); + findConceptWithParents(own, conceptIds); + } + + /** + * 查询属性 + */ + List nodes = super.findNodeByIds(noumenon_space, noumenon_tag, conceptIds); + + List fds = new ArrayList<>(); + + nodes.forEach(v-> { + JSONObject ob = v.getProperties(); + JSONArray napshot = ob.getJSONArray(nebulafieldsnapshot); + if(napshot != null) { + List fields = napshot.toList(NebulaField.class); + fds.addAll(fields); + } + }); + + //java8根据对象属性去重 + List unique = fds.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(NebulaField::getField))),ArrayList::new)); + return unique; + } + + /** + * 递归 + */ + public void findConceptWithParents(OntologyConcept own, List conceptIds) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("own_id", own.getParentId()); + OntologyConcept pa = ontologyConceptMapper.selectOne(wrapper); + if(pa != null) { + conceptIds.add(pa.getOwnId()); + findConceptWithParents(pa, conceptIds); + } + } + + + /** + * 通过对象属性名称查询所有的path + */ + public NebulaModel findPathByEdgeLabel(Long ontologyId,String label) { + /** + * 查询模型关系 + */ + String nGql = "match p=(v)-[r:{}]->(v1) where r.{}==\"{}\" and r.{}=={} return p "; + nGql = StrUtil.format(nGql, noumenon_edge, LABEL, label,ONTOLOGYID,ontologyId); + ResultSet resultSet = executeGql(noumenon_space, nGql); + return ResultSetUtils.printResultPath(resultSet); + } + + /** + * 通过对象属性名称查询所有的path + */ + public List findNodesbyField(Long ontologyId, String field) { + + List result = new ArrayList<>(); + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + List nodes = findNodes(noumenon_space, noumenon_tag, builder); + + for(NebulaNode fn : nodes) { + JSONArray arr = fn.getProperties().getJSONArray(nebulafieldsnapshot); + if(arr != null) { + List fields = arr.toList(NebulaField.class); + fields.forEach(v-> { + String key = v.getField(); + if(field.equals(key)) { + result.add(fn); + } + }); + } + } + return result; + } + + + /** + * 图空间的值属性数量分组聚合 + */ + public List groupFieldByOntologyId(Long ontologyId) { + + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(ONTOLOGYID, TermQuery.Operator.EQ, ontologyId)); + + /** + * 统计值属性数量 + */ + List nodes = findNodes(noumenon_space, noumenon_tag, builder); + + Map mapCount = new HashMap<>(); + Map mapField = new HashMap<>(); + + for(NebulaNode fn : nodes) { + JSONArray arr = fn.getProperties().getJSONArray(nebulafieldsnapshot); + if(arr != null) { + List fields = arr.toList(NebulaField.class); + fields.forEach(v-> { + String key = v.getField(); + Integer cc = mapCount.get(key); + if(cc == null) { + cc = 0; + } + cc += 1; + mapCount.put(key, cc); + mapField.put(key, v); + }); + } + } + + List fls = new ArrayList<>(); + for(NebulaField field : mapField.values()) { + Map fp = BeanUtil.beanToMap(field); + fp.put("count", mapCount.get(field.getField())); + fls.add(fp); + } + + return fls; + } +} diff --git a/api/src/main/java/com/wx/application/nebula/graph/service/NebulaOperateService.java b/api/src/main/java/com/wx/application/nebula/graph/service/NebulaOperateService.java new file mode 100644 index 0000000..88276e8 --- /dev/null +++ b/api/src/main/java/com/wx/application/nebula/graph/service/NebulaOperateService.java @@ -0,0 +1,286 @@ +package com.wx.application.nebula.graph.service; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Vector; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.wx.application.core.entity.GraphCase; +import com.wx.application.core.mapper.GraphCaseMapper; +import com.wx.application.nebula.graph.base.BaseGraphSerice; +import com.wx.application.nebula.graph.query.NebulaModel; +import com.wx.application.nebula.graph.query.NebulaNode; +import com.wx.application.nebula.graph.query.NebulaQo; +import com.wx.application.nebula.graph.query.NebulaRelation; +import com.wx.application.nebula.graph.query.PageRequest; +import com.wx.application.nebula.graph.query.TermQuery; +import com.wx.application.nebula.graph.query.TermQueryBuilder; + +import cn.hutool.json.JSONObject; + +@Service +public class NebulaOperateService extends BaseGraphSerice { + + @Autowired + GraphCaseMapper graphCaseMapper; + + /** + * 查询所有图空间 + * @param space + * @param nQ + * @return + */ + public List findSpace() { + + List spaces = showSpace(); + List result = new ArrayList<>(); + spaces.forEach(v-> { + + String sn = v.getStr("Name"); + if("dn_noumenon_space".equals(sn)) { + return; + } + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("name", sn); + GraphCase graphCase = graphCaseMapper.selectOne(wrapper); + JSONObject st = descSpace(v.getStr("Name")); + + if(graphCase != null) { + st.set("comment", graphCase.getComment()); + st.set("OntologyId", graphCase.getOntologyId()); + } + + result.add(st); + }); + return result; + } + + + public NebulaModel findPathInSpace(String space, NebulaQo nQ) { + + long sttime = System.currentTimeMillis(); + nQ.setPageSize(50); + + PageRequest pageRequest = PageRequest.of(0, nQ.getPageSize()); + List nodes = findNodes(space, pageRequest); + + long edtime = System.currentTimeMillis(); + + /** + * 根据点查询一个点的周边 + */ + + if(nodes.size() == 0) { + return null; + } + + int i = 0; + ExecutorService executor = Executors.newFixedThreadPool(nodes.size()); + + + Set nodeset = new HashSet<>(); + Set relationset = new HashSet<>(); + + + //效果2 + for(NebulaNode node : nodes) { + executor.submit(new Runnable() { + @Override + public void run() { + NebulaModel nml = findOnePathById(space, node.getVid()); + nodeset.addAll(nml.getNodes()); + relationset.addAll(nml.getRelations()); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.SECONDS)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + edtime = System.currentTimeMillis(); + System.out.println("耗时" + (edtime-sttime) ); + + if(relationset.size() > 200) { + + Set nodeset1 = new HashSet<>(); + Set relationset1 = new HashSet<>(); + + Map nodeMap = nodeset.stream(). + collect(Collectors.toMap(NebulaNode::getVid, a -> a,(k1,k2)->k1)); + i=0; + + for(NebulaRelation rt : relationset) { + relationset1.add(rt); + nodeset1.add(nodeMap.get(rt.getSrcId())); + nodeset1.add(nodeMap.get(rt.getDstId())); + i++; + if(i >= 200) { + break; + } + } + + NebulaModel result = new NebulaModel(); + result.setNodes(new ArrayList<>(nodeset1)); + result.setRelations(new ArrayList<>(relationset1)); + return result; + } + + NebulaModel result = new NebulaModel(); + result.setNodes(new ArrayList<>(nodeset)); + result.setRelations(new ArrayList<>(relationset)); + return result; + } + + + /** + * 根据tag查询点 + */ + public List findNodes(String space, NebulaQo nQ) { + if(StringUtils.isBlank(nQ.getTag())) { + return null; + } + PageRequest pageRequest = PageRequest.of(0, nQ.getPageSize()); + List ns = findNodes(space, nQ.getTag(), null, pageRequest); + return ns; + } + + /** + * 根据edge查询 + */ + public NebulaModel findRelations(String space, NebulaQo nQ) { + + if(StringUtils.isBlank(nQ.getEdge())) { + return null; + } + + PageRequest pageRequest = PageRequest.of(0, 100); + List relations = findRelations(space, nQ.getEdge(), null, pageRequest); + + List nodes = new Vector<>(); + + List tags =showTag(space, false); + List tagList = new ArrayList<>(); + + for(JSONObject tg : tags) { + String tag = tg.getStr("Name"); + tagList.add(tag); + } + + Set vidset = new HashSet<>(); + + for(NebulaRelation rel : relations) { + vidset.add(rel.getSrcId()); + vidset.add(rel.getDstId()); + } + + List vids = new ArrayList<>(); + ExecutorService executor = Executors.newFixedThreadPool(10); + + for(String vid : vidset) { + vids.add(vid); + if(vids.size() >= 50) { + List vidsThread = new ArrayList<>(vids); + executor.submit(new Runnable() { + @Override + public void run() { + List ns = findNodeByIds(space, StringUtils.join(tagList,","), vidsThread); + nodes.addAll(ns); + } + }); + vids.clear(); + } + } + + if(vids.size() > 0) { + executor.submit(new Runnable() { + @Override + public void run() { + List ns = findNodeByIds(space, StringUtils.join(tagList,","), vids); + nodes.addAll(ns); + } + }); + } + + executor.shutdown(); + try { + if (!executor.awaitTermination(60, TimeUnit.SECONDS)) { + + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + + NebulaModel result = new NebulaModel(); + result.setNodes(nodes); + result.setRelations(relations); + return result; + } + + + + /** + * 根据 + * @param space + * @param tag + * @param pageRequest + * @return + */ + public List findNodeByKeyword(String space, String tag, NebulaQo nQ) { + + if(StringUtils.isBlank(nQ.getKeyword())) { + return null; + } + + TermQueryBuilder builder = new TermQueryBuilder(); + builder.add(TermQueryBuilder.termMust(nQ.getField(), TermQuery.Operator.STARTSWITH, nQ.getKeyword())); + /** + * 查询模型的节点 + */ + + PageRequest pageRequest = PageRequest.of(0, nQ.getPageSize()); + + return findNodesByWhere(space, tag, builder, pageRequest); + } + + /** + * 按图空间进行统计 + */ + public List censusGraphBySpace(String space) { + + List rs = showStats(space); + if(rs.size() > 0) { + return rs; + } + + Integer jobId = submitJobStats(space); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + + if(jobId != null) { + rs = showStats(space); + //stopJob(space, jobId); + } + return rs; + } +} diff --git a/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java b/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java new file mode 100644 index 0000000..7cc637f --- /dev/null +++ b/api/src/main/java/com/wx/application/tool/generator/DefaultGenerator.java @@ -0,0 +1,160 @@ +package com.wx.application.tool.generator; + +import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine; +import org.apache.commons.lang.StringUtils; + +import java.util.*; + +/** + * 生成文件 + */ +public class DefaultGenerator { + /** + *

+ * 读取控制台内容 + *

+ */ + @SuppressWarnings("resource") + public static String scanner(String tip) { + Scanner scanner = new Scanner(System.in); + StringBuilder help = new StringBuilder(); + help.append("请输入" + tip + ":"); + System.out.println(help.toString()); + if (scanner.hasNext()) { + String ipt = scanner.next(); + if (StringUtils.isNotEmpty(ipt)) { + return ipt; + } + } + throw new MybatisPlusException("请输入正确的" + tip + "!"); + } + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + String projectPath = System.getProperty("user.dir"); + gc.setOutputDir(projectPath + "/src/main/java"); + gc.setAuthor("zj"); + // 是否打开输出目录 + gc.setOpen(false); + gc.setServiceName("%sService"); +// gc.setFileOverride(true); + // gc.setSwagger2(true); 实体属性 Swagger2 注解 + mpg.setGlobalConfig(gc); + + // TODO 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl("jdbc:mysql://118.25.104.98:3306/dn_nebula?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL"); + // dsc.setSchemaName("public"); + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + dsc.setUsername("root"); + dsc.setPassword("Whb123321"); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); +// pc.setModuleName(scanner("模块名")); + pc.setParent("com.wx.application.core") + .setController("controller")// 这里是控制器包名,默认 web + .setEntity("entity") + .setMapper("mapper") + .setService("service") + .setServiceImpl(null) + ; + + mpg.setPackageInfo(pc); + + // 自定义配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + // to do nothing + // 注入一些自定义的字段值 + Map map = new HashMap<>(); + map.put("ResponseData", "com.wx.application.base.ResponseData"); + this.setMap(map); + } + }; + + // 如果模板引擎是 velocity + String templatePath = "_templates/mapper.xml.vm"; + + // 自定义输出配置 + List focList = new ArrayList<>(); + // 自定义配置会被优先输出 + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! + if (StringUtils.isNotEmpty(pc.getModuleName())) { + return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() + + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + } + return projectPath + "/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; + } + }); + /* + cfg.setFileCreate(new IFileCreate() { + @Override + public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { + // 判断自定义文件夹是否需要创建 + checkDir("调用默认方法创建的目录"); + return false; + } + }); + */ + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + // 配置模板 + TemplateConfig templateConfig = new TemplateConfig(); + + // 配置自定义输出模板 + //指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别 + // templateConfig.setEntity("_templates/entity2.java"); + // templateConfig.setService(); + // templateConfig.setController(); + + templateConfig.setXml(null) + .setController("_templates/controller.java.vm") + .setEntity("_templates/entity.java.vm") + .setMapper("_templates/mapper.java.vm") + .setService("_templates/service.java.vm") + .setServiceImpl(null) + ; + mpg.setTemplate(templateConfig); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + // 公共父类 + strategy.setSuperEntityClass("com.wx.application.base.BaseEntity"); + strategy.setSuperServiceClass("com.wx.application.base.BaseService"); + strategy.setSuperControllerClass("com.wx.application.base.BaseController"); + // 写于父类中的公共字段 + strategy.setSuperEntityColumns("id","create_time","is_remove"); + strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); + strategy.setExclude(); + strategy.setControllerMappingHyphenStyle(true); + + //TODO 表名前缀 + strategy.setTablePrefix("dn" + "_"); + mpg.setStrategy(strategy); + mpg.setTemplateEngine(new VelocityTemplateEngine()); + mpg.execute(); + } + +} diff --git a/api/src/main/java/com/wx/application/util/DateUtils.java b/api/src/main/java/com/wx/application/util/DateUtils.java new file mode 100644 index 0000000..026824d --- /dev/null +++ b/api/src/main/java/com/wx/application/util/DateUtils.java @@ -0,0 +1,33 @@ +package com.wx.application.util; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + + +public class DateUtils { + + public static String fn1(Integer interval, String date) { + try { + SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar cal = Calendar.getInstance(); + cal.setTime(sf.parse(date)); + cal.add(Calendar.DAY_OF_YEAR, interval); + return sf.format(cal.getTime()); + } catch (Exception e) { + } + return null; + } + + /** + * 按秒添加 + * @param interval + * @param date + * @return + */ + public static Date fn2(Integer interval) { + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.SECOND, interval); + return cal.getTime(); + } +} diff --git a/api/src/main/java/com/wx/application/util/FileUitls.java b/api/src/main/java/com/wx/application/util/FileUitls.java new file mode 100644 index 0000000..1e67893 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/FileUitls.java @@ -0,0 +1,55 @@ +package com.wx.application.util; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IORuntimeException; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; + +public class FileUitls { + + /** + * 在默认临时文件目录下创建临时文件,创建后的文件名为 prefix[Randon].suffix。 + * 默认临时文件目录由系统属性 {@code java.io.tmpdir} 指定。 + * 在 UNIX 系统上,此属性的默认值通常是 {@code "tmp"} 或 {@code "vartmp"}; + * 在 Microsoft Windows 系统上,它通常是 {@code "C:\\WINNT\\TEMP"}。 + * 调用 Java 虚拟机时,可以为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响。 + * + * @param suffix 后缀,如果null则使用默认.tmp + * @param isReCreat 是否重新创建文件(删掉原来的,创建新的) + * @return 临时文件 + * @throws IORuntimeException IO异常 + */ + public static File createTempFile(String suffix, boolean isReCreat) throws IOException { + return FileUtil.createTempFile(suffix,true); + } + + /** + * 追加文本到文件并换行 + * @param file + * @param json + * @throws Exception + */ + public static void writeFile(File file, String json)throws Exception{ + //写入中文字符时解决中文乱码问题 + BufferedWriter bw=new BufferedWriter(new java.io.FileWriter(file,true)); + bw.write(json+"\t\n"); + //注意关闭的先后顺序,先打开的后关闭,后打开的先关闭 + bw.close(); + } + + /** + * 删除文件 + * @param file + * @return + */ + public static boolean deleteFile(File file) { + // 如果文件路径所对应的文件存在,并且是一个文件,则直接删除 + if (file.exists() && file.isFile()) { + return file.delete(); + } else { + return false; + } + } +} diff --git a/api/src/main/java/com/wx/application/util/InputStreamCache.java b/api/src/main/java/com/wx/application/util/InputStreamCache.java new file mode 100644 index 0000000..eb942fb --- /dev/null +++ b/api/src/main/java/com/wx/application/util/InputStreamCache.java @@ -0,0 +1,61 @@ +package com.wx.application.util; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + + +public class InputStreamCache { + /** + * 将InputStream中的字节保存到ByteArrayOutputStream中。 + */ + private ByteArrayOutputStream byteArrayOutputStream; + private InputStream inputStream; + + public InputStreamCache(InputStream inputStream) { + if (inputStream == null) return; + this.inputStream = inputStream; + initCache(); + } + + /** + * 初始化 + */ + private void initCache(){ + byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len; + try { + while ((len = inputStream.read(buffer)) != -1 ) { + byteArrayOutputStream.write(buffer, 0, len); + } + byteArrayOutputStream.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 获取缓存流 + * @return InputStream + */ + public InputStream getInputStream() { + if (byteArrayOutputStream == null) return this.inputStream; + return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); + } + + /** + * 销毁 + */ + public void destroyCache() { + this.byteArrayOutputStream = null; + if(this.inputStream != null) { + try { + this.inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} diff --git a/api/src/main/java/com/wx/application/util/J8listUtils.java b/api/src/main/java/com/wx/application/util/J8listUtils.java new file mode 100644 index 0000000..e2f1b05 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/J8listUtils.java @@ -0,0 +1,15 @@ +package com.wx.application.util; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; + +public class J8listUtils { + + public static Predicate distinctByKey(Function keyExtractor) { + Map seen = new ConcurrentHashMap<>(); + return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; + } + +} diff --git a/api/src/main/java/com/wx/application/util/JSONUtils.java b/api/src/main/java/com/wx/application/util/JSONUtils.java new file mode 100644 index 0000000..82de824 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/JSONUtils.java @@ -0,0 +1,75 @@ +package com.wx.application.util; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.ValueFilter; + +import java.util.List; + +/** + * @description : 转换json类 + * --------------------------------- + * @author zj + * @since 2017-10-27 + */ +public class JSONUtils { + + protected final static ValueFilter filter = new ValueFilter() { + @Override + public Object process(Object source, String name, Object value) { + if (value == null) + return null; + return value; + } + }; + + /** + * 将对象转换为JSON + * + * @param o + * @param prettyFormat + * @return + */ + public static String c(Object o) { + return JSON.toJSONString(o, filter); + } + + /** + * 将对象转换为JSON + * + * @param o + * @param prettyFormat + * @return + */ + public static String c(Object o, SerializerFeature... features) { + return JSON.toJSONString(o, filter, features); + } + + /** + * 将JSON转换为对象 + * + * @param json + * @param clazz + * @return + */ + public static T p(String json, Class clazz) { + if (json == null || clazz == null) { + return null; + } + return JSON.parseObject(json, clazz); + } + + /** + * 将JSON转换为数组对象 + * + * @param json + * @param clazz + * @return + */ + public static List pa(String json, Class clazz) { + if (json == null || clazz == null) { + return null; + } + return JSON.parseArray(json, clazz); + } + +} diff --git a/api/src/main/java/com/wx/application/util/JwtUtils.java b/api/src/main/java/com/wx/application/util/JwtUtils.java new file mode 100644 index 0000000..372c1b7 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/JwtUtils.java @@ -0,0 +1,128 @@ +package com.wx.application.util; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import javax.crypto.SecretKey; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; + +import com.alibaba.fastjson.JSON; +import com.wx.application.base.ErrorCodeEnum; +import com.wx.application.constant.CONSTANT; +import com.wx.application.core.entity.RiskUser; +import com.wx.application.exception.CommonException; + +import cn.hutool.crypto.SecureUtil; +import cn.hutool.crypto.digest.DigestAlgorithm; +import cn.hutool.crypto.digest.Digester; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import lombok.Data; +import lombok.experimental.Accessors; + +public class JwtUtils { + + @Data + @Accessors(chain = true) + public static class LoginUser { + private String userType; + private Long userId; + private String openId; + private String appId; + } + + + //加密因子 + private static final SecretKey key = SecureUtil.generateKey("HmacSHA256", "AbCDeeeeeeass2SASDFFFFFF!##@$%^%@FF".getBytes()); + /** + * 默认过期时间 :12小时 并不想失效 + */ + //private static final Long expiration = 12 * 60 * 60 * 1000L; + /** + * JWT 添加至HTTP HEAD中的前缀 + */ + private static final String JWT_SEPARATOR = "Bearer "; + + + public static void initClaims() { + String token = MDC.get(JWT_SEPARATOR); + if (StringUtils.isBlank(token)) { + throw new CommonException(ErrorCodeEnum.UNAUTHORIZED); + } + + Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); + String subject = claims.getSubject(); + String userType = (String) claims.get(CONSTANT.JWT_USER_TAG); + MDC.put(userType, subject); + } + + public static RiskUser getCurrentLoginAdminUser() { + initClaims(); + String subject = MDC.get(CONSTANT.LOGIN_TYPE_ADMIN); + if (StringUtils.isBlank(subject)) { + throw new CommonException(ErrorCodeEnum.UNAUTHORIZED); + } + RiskUser user = JSON.parseObject(subject, RiskUser.class); + if (null == user) { + throw new CommonException(ErrorCodeEnum.UNAUTHORIZED); + } + return user; + } + + /** + * 新建一个jwt对象 + * + * @param id 对象id + * @param subject 对象内容 + * @return + */ + public static String generateJwtToken(Long id, String userType, Object subject) { + long nowMillis = System.currentTimeMillis(); + Date now = new Date(nowMillis); + Map claims = new HashMap();//创建payload的私有声明(根据特定的业务需要添加,如果要拿这个做验证,一般是需要和jwt的接收方提前沟通好验证方式的) + claims.put(CONSTANT.JWT_USER_TAG, userType); + //下面就是在为payload添加各种标准声明和私有声明了 + String compact = Jwts.builder() + .setClaims(claims)///如果有私有声明,一定要先设置这个自己创建的私有的声明,这个是给builder的claim赋值,一旦写在标准的声明赋值之后,就是覆盖了那些标准的声明的 + .setId(new Digester(DigestAlgorithm.MD5).digestHex(userType + id))//设置jti(JWT ID):是JWT的唯一标识 + .setIssuedAt(now)//iat: jwt的签发时间 + .setNotBefore(now) + .setSubject(JSON.toJSONString(subject)) //sub(Subject):代表这个JWT的主体,即它的所有人 +// .setExpiration(new Date(nowMillis + expiration)) + .signWith(key).compact(); + + // 在JWT字符串前添加"Bearer "字符串,用于加入"Authorization"请求头 + return JWT_SEPARATOR + compact; + } + + /** + * 检查token是否有效 + * + * @param jsonWebToken + * @return + */ + public static boolean checkTokenExpired(String jsonWebToken) { + try { + if (StringUtils.startsWith(jsonWebToken, JWT_SEPARATOR)) { + jsonWebToken = StringUtils.substringAfter(jsonWebToken, JWT_SEPARATOR); + } + Jwts.parser().setSigningKey(key).parseClaimsJws(jsonWebToken).getBody(); + + //暂存下 + MDC.put(JWT_SEPARATOR, jsonWebToken); + return true; + } catch (ExpiredJwtException eje) { + // Token过期 + eje.printStackTrace(); + return false; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + +} diff --git a/api/src/main/java/com/wx/application/util/MD5Util.java b/api/src/main/java/com/wx/application/util/MD5Util.java new file mode 100644 index 0000000..fb905b8 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/MD5Util.java @@ -0,0 +1,78 @@ +package com.wx.application.util; + +import org.apache.commons.codec.binary.Hex; +import org.apache.commons.codec.digest.DigestUtils; + +import java.io.*; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * @description : MD5加密 + * --------------------------------- + * @author zj + * @since 2017-10-27 + */ +public class MD5Util { + + static MessageDigest MD5 = null; + + static { + try { + MD5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException ne) { + ne.printStackTrace(); + } + } + + public static String getMD5(InputStream inputStream) { + try { + byte[] buffer = new byte[8192]; + int length; + while ((length = inputStream.read(buffer)) != -1) { + MD5.update(buffer, 0, length); + } + return new String(Hex.encodeHex(MD5.digest())); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return null; + } catch (IOException e) { + e.printStackTrace(); + return null; + } finally { + try { + if (inputStream != null) + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + /** + * 对一个文件获取md5值 + * + * @return md5串 + */ + public static String getMD5(File file) { + FileInputStream fileInputStream = null; + try { + fileInputStream = new FileInputStream(file); + return getMD5(fileInputStream); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 求一个字符串的md5值 + * + * @param target 字符串 + * @return md5 value + */ + public static String MD5(String target) { + return DigestUtils.md5Hex(target); + } + +} \ No newline at end of file diff --git a/api/src/main/java/com/wx/application/util/MyStringUtils.java b/api/src/main/java/com/wx/application/util/MyStringUtils.java new file mode 100644 index 0000000..3633072 --- /dev/null +++ b/api/src/main/java/com/wx/application/util/MyStringUtils.java @@ -0,0 +1,20 @@ +package com.wx.application.util; + +import org.apache.commons.lang.StringUtils; + +public class MyStringUtils { + + public static String fn1(String ef) { + + if(StringUtils.isBlank(ef)) { + return null; + } + + String ef_1 = ef.replaceAll("\r", ""); + ef_1 = ef_1.replaceAll("\n", ""); + ef_1 = ef_1.replaceAll("\t", ""); + + return ef_1; + } + +} diff --git a/api/src/main/java/com/wx/application/util/UUIDGenerator.java b/api/src/main/java/com/wx/application/util/UUIDGenerator.java new file mode 100644 index 0000000..23f990d --- /dev/null +++ b/api/src/main/java/com/wx/application/util/UUIDGenerator.java @@ -0,0 +1,63 @@ +package com.wx.application.util; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; +import java.util.UUID; + +/** + * @description : UUID生成类 + * --------------------------------- + * @author zj + * @since 2017-10-27 + */ +public class UUIDGenerator { + + public static String getUUID(){ + String s = UUID.randomUUID().toString(); + //去掉“-”符号 + return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); + } + + /** + * 获得指定数目的UUID + * @param number int 需要获得的UUID数量 + * @return String[] UUID数组 + */ + public static String[] getUUID(int number){ + if(number < 1){ + return null; + } + String[] ss = new String[number]; + for(int i=0;i + * $!{table.comment} + *

+ * + * @author ${author} + * @since ${date} + */ +#if(${entityLombokModel}) +@Data +@EqualsAndHashCode(callSuper=false) +#end +#if(${table.convert}) +@TableName("${table.name}") +#end +#if(${superEntityClass}) +public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end { +#elseif(${activeRecord}) +public class ${entity} extends Model<${entity}> { +#else +public class ${entity} implements Serializable { +#end + +## ---------- BEGIN 字段循环遍历 ---------- +#foreach($field in ${table.fields}) +#if(${field.keyFlag}) +#set($keyPropertyName=${field.propertyName}) +#end +#if("$!field.comment" != "") + /** + * ${field.comment} + */ +#end +#if(${field.keyFlag}) +## 主键 +#if(${field.keyIdentityFlag}) + @TableId(value="${field.typeName}", type= IdType.AUTO) +#elseif(${field.convert}) + @TableId("${field.name}") +#end + +## 普通字段 +#elseif(${field.fill}) +## ----- 存在字段填充设置 ----- +#if(${field.convert}) + @TableField(value = "${field.typeName}", fill = FieldFill.${field.fill}) +#else + @TableField(fill = FieldFill.${field.fill}) +#end + +#elseif(${field.convert}) + @TableField("${field.name}") +#end +## 乐观锁注解 +#if(${versionFieldName}==${field.name}) + @Version +#end +## 逻辑删除注解 +#if(${logicDeleteFieldName}==${field.name}) + @TableLogic +#end +#if(${field.propertyType.equals("Date")}) + +#end + private ${field.propertyType} ${field.propertyName}; +#end + +## ---------- END 字段循环遍历 ---------- + +#if(!${entityLombokModel}) +#foreach($field in ${table.fields}) +#if(${field.propertyType.equals("boolean")}) +#set($getprefix="is") +#else +#set($getprefix="get") +#end + + public ${field.propertyType} ${getprefix}${field.capitalName}() { + return ${field.propertyName}; + } + +#if(${entityBuilderModel}) + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { +#else + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { +#end + this.${field.propertyName} = ${field.propertyName}; +#if(${entityBuilderModel}) + return this; +#end + } +#end +#end + +#if(${entityColumnConstant}) +#foreach($field in ${table.fields}) + public static final String ${field.name.toUpperCase()} = "${field.name}"; + +#end +#end +#if(${activeRecord}) + @Override + protected Serializable pkVal() { +#if(${keyPropertyName}) + return this.${keyPropertyName}; +#else + return this.id; +#end + } + +#end + +} diff --git a/api/src/main/resources/_templates/entity.kt.vm b/api/src/main/resources/_templates/entity.kt.vm new file mode 100644 index 0000000..adcef6a --- /dev/null +++ b/api/src/main/resources/_templates/entity.kt.vm @@ -0,0 +1,114 @@ +package ${package.Entity}; + +#foreach($pkg in ${table.importPackages}) +import ${pkg}; +#end +#if(${swagger2}) +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +#end +/** + *

+ * $!{table.comment} + *

+ * + * @author ${author} + * @since ${date} + */ +#if(${table.convert}) +@TableName("${table.name}") +#end +#if(${swagger2}) +@ApiModel(value="${entity}对象", description="$!{table.comment}") +#end +#if(${superEntityClass}) +class ${entity} : ${superEntityClass}#if(${activeRecord})<${entity}>#end() { +#elseif(${activeRecord}) +class ${entity} : Model<${entity}>() { +#else +class ${entity} : Serializable { +#end + +## ---------- BEGIN 字段循环遍历 ---------- +#foreach($field in ${table.fields}) +#if(${field.keyFlag}) +#set($keyPropertyName=${field.propertyName}) +#end +#if("$!field.comment" != "") + #if(${swagger2}) + @ApiModelProperty(value = "${field.comment}") + #else + /** + * ${field.comment} + */ + #end +#end +#if(${field.keyFlag}) +## 主键 +#if(${field.keyIdentityFlag}) + @TableId(value = "${field.name}", type = IdType.AUTO) +#elseif(!$null.isNull(${idType}) && "$!idType" != "") + @TableId(value = "${field.name}", type = IdType.${idType}) +#elseif(${field.convert}) + @TableId("${field.name}") +#end +## 普通字段 +#elseif(${field.fill}) +## ----- 存在字段填充设置 ----- +#if(${field.convert}) + @TableField(value = "${field.name}", fill = FieldFill.${field.fill}) +#else + @TableField(fill = FieldFill.${field.fill}) +#end +#elseif(${field.convert}) + @TableField("${field.name}") +#end +## 乐观锁注解 +#if(${versionFieldName}==${field.name}) + @Version +#end +## 逻辑删除注解 +#if(${logicDeleteFieldName}==${field.name}) + @TableLogic +#end + #if(${field.propertyType} == "Integer") + var ${field.propertyName}: Int? = null + #else + var ${field.propertyName}: ${field.propertyType}? = null + #end +#end +## ---------- END 字段循环遍历 ---------- + + +#if(${entityColumnConstant}) + companion object { +#foreach($field in ${table.fields}) + + const val ${field.name.toUpperCase()} : String = "${field.name}" + +#end + } + +#end +#if(${activeRecord}) + override fun pkVal(): Serializable? { +#if(${keyPropertyName}) + return ${keyPropertyName} +#else + return null +#end + } + +#end + override fun toString(): String { + return "${entity}{" + +#foreach($field in ${table.fields}) +#if($!{foreach.index}==0) + "${field.propertyName}=" + ${field.propertyName} + +#else + ", ${field.propertyName}=" + ${field.propertyName} + +#end +#end + "}" + } +} diff --git a/api/src/main/resources/_templates/mapper.java.vm b/api/src/main/resources/_templates/mapper.java.vm new file mode 100644 index 0000000..4cb2d79 --- /dev/null +++ b/api/src/main/resources/_templates/mapper.java.vm @@ -0,0 +1,22 @@ +package ${package.Mapper}; + +import ${package.Entity}.${entity}; +import ${superMapperClassPackage}; +import org.springframework.stereotype.Repository; + +/** + *

+ * $!{table.comment} Mapper 接口 + *

+ * + * @author ${author} + * @since ${date} + */ +#if(${kotlin}) +interface ${table.mapperName} : ${superMapperClass}<${entity}> +#else +@Repository +public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { + +} +#end diff --git a/api/src/main/resources/_templates/mapper.xml.vm b/api/src/main/resources/_templates/mapper.xml.vm new file mode 100644 index 0000000..ce64c33 --- /dev/null +++ b/api/src/main/resources/_templates/mapper.xml.vm @@ -0,0 +1,10 @@ + + + + +#if(${enableCache}) + + +#end + + diff --git a/api/src/main/resources/_templates/queryQ.java.vm b/api/src/main/resources/_templates/queryQ.java.vm new file mode 100644 index 0000000..b9cedb8 --- /dev/null +++ b/api/src/main/resources/_templates/queryQ.java.vm @@ -0,0 +1,7 @@ +package cn.wx.sports.core.entity.qo; + +import cn.wx.common.persistence.base.BaseQ; + +public class ###templateQ### extends BaseQ { + +} diff --git a/api/src/main/resources/_templates/service.java.vm b/api/src/main/resources/_templates/service.java.vm new file mode 100644 index 0000000..4183453 --- /dev/null +++ b/api/src/main/resources/_templates/service.java.vm @@ -0,0 +1,28 @@ +package ${package.Service}; + + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import ${package.Entity}.${entity}; +import ${superServiceClassPackage}; +import ${package.Mapper}.${table.mapperName}; + +/** + *

+ * $!{table.comment} 服务类 + *

+ * + * @author ${author} + * @since ${date} + */ +/*@Slf4j*/ +@Service("core${table.serviceName}") +@Transactional +public class ${table.serviceName} extends ${superServiceClass}<${entity}, ${table.mapperName}> { + + @Autowired + ${table.mapperName} baseMapper; +} diff --git a/api/src/main/resources/_templates/serviceImpl.java.vm b/api/src/main/resources/_templates/serviceImpl.java.vm new file mode 100644 index 0000000..a5ed504 --- /dev/null +++ b/api/src/main/resources/_templates/serviceImpl.java.vm @@ -0,0 +1,26 @@ +package ${package.ServiceImpl}; + +import ${package.Entity}.${entity}; +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import ${superServiceImplClassPackage}; +import org.springframework.stereotype.Service; + +/** + *

+ * $!{table.comment} 服务实现类 + *

+ * + * @author ${author} + * @since ${date} + */ +@Service +#if(${kotlin}) +open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { + +} +#else +public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { + +} +#end diff --git a/api/src/main/resources/_templates/template.html.vm b/api/src/main/resources/_templates/template.html.vm new file mode 100644 index 0000000..b965777 --- /dev/null +++ b/api/src/main/resources/_templates/template.html.vm @@ -0,0 +1,204 @@ + + + + + + + + + + + + +
+
+
+ + + + + + #####dowrite4##### + + + + + + + + #####dowrite3##### + + + +
#操作
{{index + 1}} 编辑   删除
+ +
+
+ 显示 {{startIndex}} 到 {{endIndex}} 条,共 {{totalCount}} 条记录 +
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+ #####dowrite2##### +
+ +
+ +
+ +
+ + + + + + + + + + + #####dowrite5##### + + + + + + + \ No newline at end of file diff --git a/api/src/main/resources/application.yml b/api/src/main/resources/application.yml new file mode 100644 index 0000000..3ca1f3c --- /dev/null +++ b/api/src/main/resources/application.yml @@ -0,0 +1,66 @@ +spring: + messages: + basename: message + encoding: UTF-8 + devtools: + restart: + enable: true + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + jpa: + show-sql: true + generate-ddl: true + hibernate: + ddl-auto: update + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5InnoDBDialect + open-in-view: false + servlet: + multipart: + max-file-size: 2048MB + max-request-size: 2048MB +server: + tomcat: + uri-encoding: UTF-8 + servlet: + encoding: + force: true + enabled: true + charset: UTF-8 + +mybatis-plus: + # 如果是放在src/main/java目录下 classpath:/com/yourpackage/*/mapper/*Mapper.xml + # 如果是放在resource目录 classpath:/mapper/*Mapper.xml + mapper-locations: classpath:/mapper/*Mapper.xml + #实体扫描,多个package用逗号或者分号分隔 + typeAliasesPackage: com.suyan.skydrive.entity + global-config: + #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID"; + id-type: 2 + #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" + field-strategy: 2 + #驼峰下划线转换 + db-column-underline: true + #mp2.3+ 全局表前缀 mp_ + #table-prefix: mp_ + #刷新mapper 调试神器 + refresh-mapper: true + #数据库大写下划线转换 + #capital-mode: true + # Sequence序列接口实现类配置 + key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator + #逻辑删除配置(下面3个配置) + logic-delete-value: 1 + logic-not-delete-value: 0 + #自定义填充策略接口实现 + configuration: + #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId) + map-underscore-to-camel-case: true + cache-enabled: true + #配置JdbcTypeForNull, oracle数据库必须配置 + jdbc-type-for-null: 'null' + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用 + +logging: + config: classpath:logback.xml \ No newline at end of file diff --git a/api/src/main/resources/banner.txt b/api/src/main/resources/banner.txt new file mode 100644 index 0000000..c67b512 --- /dev/null +++ b/api/src/main/resources/banner.txt @@ -0,0 +1,17 @@ +${AnsiColor.BLUE} + _____________________ _______ ___________ + .g""""""""""""""""""""""] j""""""], j["""""""""""""Q. + `g .geeeeeeep jmeeefj' .g #, ]f creeeeg. 0, + \t_ `9. [ j[ .f j^b `#, j[ lL___,M' _@. + ^t_ `!, f ]f j' .#_#. "L ]f y*"' + .ueeeeeeeeeee!. ji [ j[ _f ___ q, j[ jMw._ `"*eeeeeegn + .&_______________,c!' f___]f .&'___f"""b____4.]f___j6 `"+,__________j] + .__""__""__"__"""_____ ""__"___""`"" ______""___"""""' ___""__""__"__ + i#""`9.j5"""`b.j'"""# .f""""""# f"""""""""""`bw .f^"""""""""""j] + #b `4M' `#M j' #' j. "b L .reeee,. ] ]_ ,eereeeed] + `@. "" _ "" .f j' ,fq q. L iL____d- _d `!, ^q_ + "@, jg. J'.[ jLjb `!. f . ,m" `*, `^q. + "s. j"Y. j' ]' ____ `t f .Nw_ "*mveevee*' _X + Yf___d 0.___f d'___]""""@___`g L____f "+,________________jP' + """""" """""" """""" """""" """""" """"""""""""""""" +${AnsiColor.BLACK} diff --git a/api/src/main/resources/config.properties b/api/src/main/resources/config.properties new file mode 100644 index 0000000..4fdd440 --- /dev/null +++ b/api/src/main/resources/config.properties @@ -0,0 +1,22 @@ +spring.application.name=MedicalCosmetology +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.url=@jdbc_url@?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL +spring.datasource.username=@db_username@ +spring.datasource.password=@db_password@ +#spring.redis.host=@redis_host@ +#spring.redis.port=@redis_port@ +#spring.redis.password=@redis_password@ +spring.servlet.multipart.max-file-size=2048MB +spring.servlet.multipart.max-request-size=2048MB +server.port=@server_port@ +ignore.urls[0]=/login/** + +upload.graph.path=@upload_graph_path@ +zbx.path=@zbx_path@ + +nebula.grap = @nebula_grap@ +nebula.session.host=@nebula_session_host@ +nebula.session.port=@nebula_session_port@ +nebula.session.username=@nebula_session_username@ +nebula.session.password=@nebula_session_password@ diff --git a/api/src/main/resources/logback.xml b/api/src/main/resources/logback.xml new file mode 100644 index 0000000..e5041f0 --- /dev/null +++ b/api/src/main/resources/logback.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{REQ_ID}] %logger{36} %msg%n + + + + + ${LOG_HOME}/${LOG_NAME}.log + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{REQ_ID}] %logger{36} %msg%n + + + + 10MB + 7 + ${LOG_HOME}/${LOG_NAME}.log.%d{yyyy-MM-dd}.%i.log + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/src/main/resources/mapper/GraphCaseMapper.xml b/api/src/main/resources/mapper/GraphCaseMapper.xml new file mode 100644 index 0000000..d23dd13 --- /dev/null +++ b/api/src/main/resources/mapper/GraphCaseMapper.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/api/src/main/resources/mapper/GraphTaskMapper.xml b/api/src/main/resources/mapper/GraphTaskMapper.xml new file mode 100644 index 0000000..7925113 --- /dev/null +++ b/api/src/main/resources/mapper/GraphTaskMapper.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/api/src/main/resources/mapper/OntologyConceptMapper.xml b/api/src/main/resources/mapper/OntologyConceptMapper.xml new file mode 100644 index 0000000..7043dba --- /dev/null +++ b/api/src/main/resources/mapper/OntologyConceptMapper.xml @@ -0,0 +1,36 @@ + + + + + + insert into dn_ontology_concept( + ontology_id, + own_id, + label, + parent_id, + create_time + ) values( + #{ontologyId}, + #{ownId}, + #{label}, + #{parentId}, + now() + ) ON duplicate KEY UPDATE id = LAST_INSERT_ID(id),is_remove=0 + + + + + + + + + + diff --git a/api/src/main/resources/mapper/OntologyFieldMapper.xml b/api/src/main/resources/mapper/OntologyFieldMapper.xml new file mode 100644 index 0000000..3249d15 --- /dev/null +++ b/api/src/main/resources/mapper/OntologyFieldMapper.xml @@ -0,0 +1,33 @@ + + + + + + insert into dn_ontology_field ( + ontology_id, + field, + type, + comment, + parent_id, + create_time + ) values( + #{ontologyId}, + #{field}, + #{type}, + #{comment}, + #{parentId}, + now() + ) ON duplicate KEY UPDATE id = LAST_INSERT_ID(id),is_remove=0 + + + + + + + diff --git a/api/src/main/resources/mapper/OntologyMapper.xml b/api/src/main/resources/mapper/OntologyMapper.xml new file mode 100644 index 0000000..c731a35 --- /dev/null +++ b/api/src/main/resources/mapper/OntologyMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/src/main/resources/mapper/OntologyRelationMapper.xml b/api/src/main/resources/mapper/OntologyRelationMapper.xml new file mode 100644 index 0000000..f7f5453 --- /dev/null +++ b/api/src/main/resources/mapper/OntologyRelationMapper.xml @@ -0,0 +1,29 @@ + + + + + + insert into dn_ontology_relation ( + ontology_id, + label, + parent_id, + create_time + ) values( + #{ontologyId}, + #{label}, + #{parentId}, + now() + ) ON duplicate KEY UPDATE id = LAST_INSERT_ID(id),is_remove=0 + + + + + + + diff --git a/api/src/main/resources/mapper/QuestionQaMapper.xml b/api/src/main/resources/mapper/QuestionQaMapper.xml new file mode 100644 index 0000000..4be8088 --- /dev/null +++ b/api/src/main/resources/mapper/QuestionQaMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/src/main/resources/mapper/RemarkTaskMapper.xml b/api/src/main/resources/mapper/RemarkTaskMapper.xml new file mode 100644 index 0000000..24373fc --- /dev/null +++ b/api/src/main/resources/mapper/RemarkTaskMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/src/main/resources/mapper/RiskUserMapper.xml b/api/src/main/resources/mapper/RiskUserMapper.xml new file mode 100644 index 0000000..5ef4c4c --- /dev/null +++ b/api/src/main/resources/mapper/RiskUserMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api/src/main/resources/message.properties b/api/src/main/resources/message.properties new file mode 100644 index 0000000..136edfd --- /dev/null +++ b/api/src/main/resources/message.properties @@ -0,0 +1,23 @@ +SUCCESS=\u64CD\u4F5C\u6210\u529F +SYSTEM_ERROR=\u7CFB\u7EDF\u5F02\u5E38 +USER_NOT_EXIST=\u7528\u6237\u540d\u5bc6\u7801\u9519\u8bef +UNAUTHORIZED=\u672A\u6388\u6743,\u8BF7\u5148\u767B\u5F55 +AUTHORIZATION_EXPIRED=\u767B\u5F55\u4FE1\u606F\u8FC7\u671F +KAPTCHA_INCORRECT=\u9A8C\u8BC1\u7801\u9519\u8BEF +KAPTCHA_NOT_FOUND=\u9A8C\u8BC1\u7801\u4E0D\u5B58\u5728 +KAPTCHA_TIMEOUT=\u9A8C\u8BC1\u7801\u8D85\u65F6 +KAPTCHA_ERROR=\u9A8C\u8BC1\u7801\u5F02\u5E38 +LOGIN_ERROR=\u7528\u6237\u540D\u6216\u5BC6\u7801\u9519\u8BEF +MIXED_SHOPPING=\u6DF7\u5408\u8D2D\u7269 +GOOD_ITEM_NOT_FOUND=\u5546\u54C1\u4E0D\u5B58\u5728 +GOOD_ITEM_NOT_ENOUGH=\u5546\u54C1\u5E93\u5B58\u4E0D\u8DB3 +ORDER_ITEM_IS_EMPTY=\u8BA2\u5355\u5546\u54C1\u4E3A\u7A7A +LEASE_DAY_INCORRECT=\u79DF\u8D41\u65E5\u671F\u4E0D\u5408\u6CD5 +INTERNAL_ERROR=\u670D\u52A1\u5668\u5185\u90E8\u9519\u8BEF +UNIT_NAME_EXIST=\u533B\u9662\u540D\u79F0\u5DF2\u5B58\u5728 +MEDICAL_INSURANCE_NAME_EXIST=\u533B\u4FDD\u4EBA\u5458\u5DF2\u5B58\u5728 +NURSE_NAME_EXIST=\u62A4\u58EB\u5DF2\u5B58\u5728 +DOCTOR_NAME_EXIST=\u533B\u751F\u5DF2\u5B58\u5728 +DEPARTMENT_NAME_EXIST=\u79D1\u5BA4\u5DF2\u5B58\u5728 +MSG_TO_FAST=\u77ED\u4FE1\u53D1\u9001\u8FC7\u5FEB +SECURITY_CODE_INVALID=\u9A8C\u8BC1\u7801\u9519\u8BEF diff --git a/api/src/test/java/HashUtilTest.java b/api/src/test/java/HashUtilTest.java new file mode 100644 index 0000000..e66af8c --- /dev/null +++ b/api/src/test/java/HashUtilTest.java @@ -0,0 +1,20 @@ +import cn.hutool.core.util.HashUtil; + +public class HashUtilTest { + + public static void main(String[] args) { + + for(int i=0;i<10;i++) { + int a = HashUtil.fnvHash("设许、计算、制造"); + System.out.println(a); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + } + +} diff --git a/api/src/test/java/JSONTest.java b/api/src/test/java/JSONTest.java new file mode 100644 index 0000000..0a8591f --- /dev/null +++ b/api/src/test/java/JSONTest.java @@ -0,0 +1,25 @@ +import com.wx.application.nebula.graph.base.ResultSetUtils; + +import cn.hutool.json.JSONObject; + +public class JSONTest { + + public static void main(String[] args) { + + JSONObject properties = new JSONObject(); + properties.put("zj", "{\"vid\":\"834556db2d1d253e7faed7e4fc293fac\",\"tagName\":\"部门1\",\"fields\":[{\"fieldName\":\"名称\",\"len\":255,\"dataType\":\"STRING\"}]}"); + + properties.put("zj1", "[{\"fieldName\":\"名称\",\"len\":255,\"dataType\":\"STRING\"}]"); + + properties.put("name", "zhangjian"); + + + ResultSetUtils.printnebulafieldsnapshot(properties); + + System.out.println(1); + + } + + + +} diff --git a/api/src/test/java/StringTest.java b/api/src/test/java/StringTest.java new file mode 100644 index 0000000..a1163d6 --- /dev/null +++ b/api/src/test/java/StringTest.java @@ -0,0 +1,48 @@ +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.regex.Pattern; + +import com.wx.application.nebula.graph.bean.NebulaTag; +import com.wx.application.util.JSONUtils; +import com.wx.application.util.UUIDGenerator; + +import cn.hutool.core.util.ReUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; + +public class StringTest { + + public static void main(String[] args) throws UnsupportedEncodingException { + + /*NebulaTag e = new NebulaTag(); + e.setOntologyId(2L); + e.setName("张剑"); + String a = StrUtil.format("{}={}", "rrr", JSONUtils.c(JSONUtil.toJsonStr(e))); + + StringBuffer sb = new StringBuffer(); + + sb.append("\"").append(JSONUtils.c(JSONUtil.toJsonStr(e))).append("\""); + + System.out.println(a); + System.out.println(sb.toString());*/ + + /*String a = UUIDGenerator.getUUID(); + System.out.println(a);*/ + + /*final Pattern pattern = Pattern.compile("(\\d+)_", Pattern.DOTALL); + + String replaceAll = ReUtil.replaceFirst(pattern, "11_1570242142998245408","1_"); + System.out.println(replaceAll);*/ + + int distance = 5; + int min = -1; + int max = 1; + + for(int i=0;i<100;i++) { + System.out.println(Math.random() * (max - min) + min); + } + + + } + +} diff --git a/api/src/test/java/TreeNode.java b/api/src/test/java/TreeNode.java new file mode 100644 index 0000000..9eea77b --- /dev/null +++ b/api/src/test/java/TreeNode.java @@ -0,0 +1,22 @@ +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class TreeNode { + + /** + * 节点ID + **/ + private String id; + + /** + * 父级ID + **/ + private String parentId; + + /** + * 节点名称 + **/ + private String name; +} diff --git a/api/src/test/java/TreeNodeTest.java b/api/src/test/java/TreeNodeTest.java new file mode 100644 index 0000000..6205603 --- /dev/null +++ b/api/src/test/java/TreeNodeTest.java @@ -0,0 +1,118 @@ +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import cn.hutool.core.collection.CollUtil; + +/** + * 测试类 + * 此方法建议数据量少的情况使用 或者 此数据很少变动并且加入到缓存中 +*/ +public class TreeNodeTest { + + public static void main(String[] args) { + /** + * 0 + * / \ + * 123 130 + * / \ / \ + * 124 125 131 132 + * / \ / \ / \ / \ + * 126 127 128 129 133 134 135 136 + * 只支持 节点路径长度必须一致的情况下才可以 + * 此Demo可以实现 根据0 获取到[126 127 128 129 133 134 135 136] + * 根据123 获取到[126 127 128 129] + * 注:比如 126 127节点没有 此时获取到的0根节点 就会出现 [124 128 129 133 134 135 136] + */ + TreeNode treeNode = new TreeNode("123","0","北京"); + + TreeNode treeNode1 = new TreeNode("124","123","丰台区"); + TreeNode treeNode2 = new TreeNode("125","123","海淀区"); + + TreeNode treeNode3 = new TreeNode("126","124","丰台区丰台科技园"); + TreeNode treeNode4 = new TreeNode("127","124","丰台区丰台南路"); + TreeNode treeNode5 = new TreeNode("128","125","海淀区中关村"); + TreeNode treeNode6 = new TreeNode("129","125","海淀区海淀公园"); + + + + TreeNode treeNode7 = new TreeNode("130","0","上海"); + + TreeNode treeNode8 = new TreeNode("131","130","徐汇区"); + TreeNode treeNode9 = new TreeNode("132","130","虹口区"); + + TreeNode treeNode10 = new TreeNode("133","131","徐汇区龙华寺"); + TreeNode treeNode11 = new TreeNode("134","131","徐汇区天主教堂"); + TreeNode treeNode12 = new TreeNode("135","132","虹口区虹口足球场"); + TreeNode treeNode13 = new TreeNode("136","132","虹口区鲁迅公园"); + + + List treeNodes = new LinkedList<>(); + treeNodes.add(treeNode); + treeNodes.add(treeNode1); + treeNodes.add(treeNode2); + treeNodes.add(treeNode3); + treeNodes.add(treeNode4); + treeNodes.add(treeNode5); + treeNodes.add(treeNode6); + treeNodes.add(treeNode7); + treeNodes.add(treeNode8); + treeNodes.add(treeNode9); + treeNodes.add(treeNode10); + treeNodes.add(treeNode11); + treeNodes.add(treeNode12); + treeNodes.add(treeNode13); + + // 按照父级ID分组 + Map> groupByParentIdMap = treeNodes.stream() + .collect(Collectors.groupingBy(TreeNode::getParentId)); + // 存放 0:对应的所有根节点ID数据 + Set topToLowerChildIdSet = new HashSet<>(); + // 取出顶级数据(也就是父级ID为0的数据 当然顶层的父级ID也可以自定义 这里只是演示 所以给了0) + List topTreeNodes = groupByParentIdMap.get("0"); + + for(TreeNode node : topTreeNodes){ + getMinimumChildIdArray(groupByParentIdMap,node.getId(),topToLowerChildIdSet); + } + System.out.println("0节点下所有的根节点数据集合:" + topToLowerChildIdSet.toString()); + } + + /** + * 根据父级节点获取最低层次 那一级的节点数据 + * 1 + * / \ + * 2 3 + * / \ / \ + * 4 5 6 7 + * 上面的树形结构调用此方法 根据1 可以获取到 [4 5 6 7] + * 根据3 可以获得到 [6 7] + * @param groupByParentIdMap 所有的元素集合(根据父级ID进行了分组) 分组方法可以使用lambda 如下: + * Map> peopleByCity = personStream.collect(Collectors.groupingBy(Person::getCity)); + * @param pid 父级ID + * @param topToLowerChildIdSet 存储最深根节点的数据集合 + */ + public static Set getMinimumChildIdArray(Map> groupByParentIdMap, + String pid, Set topToLowerChildIdSet){ + // 存放当前pid对应的所有根节点ID数据 + Set currentPidLowerChildIdSet = new HashSet<>(); + // 获取当前pid下所有的子节点 + List childTreeNodes = groupByParentIdMap.get(pid); + if(CollUtil.isEmpty(childTreeNodes)){ + return null; + } + for(TreeNode treeNode : childTreeNodes){ + Set lowerChildIdSet = getMinimumChildIdArray(groupByParentIdMap,treeNode.getId(),currentPidLowerChildIdSet); + if(CollUtil.isEmpty(lowerChildIdSet)){ + // 如果返回null 表示当前遍历的treeNode节点为最底层的节点 + currentPidLowerChildIdSet.add(treeNode.getId()); + } + } + System.out.println("当前父级ID:"+ pid + "下所有的根节点数据:" + currentPidLowerChildIdSet.toString()); + // 把当前获取到的根节点数据 一并保存到上一个节点父级ID集合中 + topToLowerChildIdSet.addAll(currentPidLowerChildIdSet); + return currentPidLowerChildIdSet; + } +} diff --git a/api/src/test/java/ZzbdsTest.java b/api/src/test/java/ZzbdsTest.java new file mode 100644 index 0000000..2d93600 --- /dev/null +++ b/api/src/test/java/ZzbdsTest.java @@ -0,0 +1,43 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.apache.commons.lang.StringUtils; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.ReUtil; +import cn.hutool.json.JSONUtil; + +public class ZzbdsTest { + + public static void main(String[] args) { + + String text = " CREATE TAG `tag_1304958069` ( `field_369043812` string NULL COMMENT \"名称\" ) ttl_duration = 0, ttl_col = \"\", comment = \"组织\""; + + String regex="(comment = \")(.+)(\")"; + + String a = getMatchedString(regex, text); + + + List resultFindAll = ReUtil.findAll("(comment = \")(.+)(\")", + text, 2, new ArrayList()); + + + List> lists = ListUtil.split(Arrays.asList(1, 2, 3, 4),4); + + System.out.println(JSONUtil.toJsonStr(lists)); + + System.out.println(10/20); + } + + private static String getMatchedString(String regex,String text){ + Pattern pattern=Pattern.compile(regex,Pattern.CASE_INSENSITIVE); + Matcher matcher=pattern.matcher(text); + while(matcher.find()){ + return matcher.group(2); + } + return null; + } +} diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..8bea256 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,3 @@ +node_modules +.idea +dist diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..82c049f --- /dev/null +++ b/web/README.md @@ -0,0 +1,24 @@ +# map-web + +## Project setup +``` +npm install +``` + +### Compiles and hot-reloads for development +``` +npm run serve +``` + +### Compiles and minifies for production +``` +npm run build +``` + +### Lints and fixes files +``` +npm run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/web/babel.config.js b/web/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/web/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/web/package-lock.json b/web/package-lock.json new file mode 100644 index 0000000..c6466b1 --- /dev/null +++ b/web/package-lock.json @@ -0,0 +1,15578 @@ +{ + "name": "web-home", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ant-design/colors": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz", + "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@antv/algorithm": { + "version": "0.1.8-beta.6", + "resolved": "https://registry.npmjs.org/@antv/algorithm/-/algorithm-0.1.8-beta.6.tgz", + "integrity": "sha512-NlJt4afQBK2t6m1E71OXNrvmKfpjEqUn61sk5M60eGua5xZgmiOLT4RTCHfU22xTGd5fW2oY8p/D98+jsFCncg==", + "requires": { + "@antv/util": "^2.0.13" + } + }, + "@antv/dom-util": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@antv/dom-util/-/dom-util-2.0.3.tgz", + "integrity": "sha512-dUHsUT4U9X1T1/Y9bH3jRMe0MzvWJk2jSQm1vm3w9NX+Ra0ftq5VUBiGTNbthm3nFwG0fFFjip904rYjl50g4A==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/event-emitter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@antv/event-emitter/-/event-emitter-0.1.2.tgz", + "integrity": "sha512-6C6NJOdoNVptCr5y9BVOhKkCgW7LFs/SpcRyAExUeSjAm0zJqcqNkSIRGsXYhj4PJI+CZICHzGwwiSnIsE68Ug==" + }, + "@antv/g-base": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@antv/g-base/-/g-base-0.5.9.tgz", + "integrity": "sha512-IAzuCLRmz9cKCWUKR3cKWgLZ/6OQYpTCIOgxAP8Bc+HRw0mu8iC3OTz+tWKGv9L8unpvCvpQd1H+OTTjdg/TpQ==", + "requires": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "@types/d3-timer": "^2.0.0", + "d3-ease": "^1.0.5", + "d3-interpolate": "^1.3.2", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.2", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.2.tgz", + "integrity": "sha512-Efwp0ZHxVDK/8RUa/RRWN7HKFHJmjn7Oq5HaNBbCmsxd7JTla3Zsoq1AZrjWMDlq0lplo77urclwI+XIW8NEHw==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/g-canvas": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@antv/g-canvas/-/g-canvas-0.5.10.tgz", + "integrity": "sha512-U454VM7TlO/y1fYP9B9Fbj4QCl/CjQDxaCAHzg8SKq5FecSUseh7Gjliv4YMb3QAb9UCaNx0RUpobUCFBZgLhg==", + "requires": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.2", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.2.tgz", + "integrity": "sha512-Efwp0ZHxVDK/8RUa/RRWN7HKFHJmjn7Oq5HaNBbCmsxd7JTla3Zsoq1AZrjWMDlq0lplo77urclwI+XIW8NEHw==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/g-math": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@antv/g-math/-/g-math-0.1.7.tgz", + "integrity": "sha512-xGyXaloD1ynfp7gS4VuV+MjSptZIwHvLHr8ekXJSFAeWPYLu84yOW2wOZHDdp1bzDAIuRv6xDBW58YGHrWsFcA==", + "requires": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "@antv/g-svg": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-0.5.6.tgz", + "integrity": "sha512-Xve1EUGk4HMbl2nq4ozR4QLh6GyoZ8Xw/+9kHYI4B5P2lIUQU95MuRsaLFfW5NNpZDx85ZeH97tqEmC9L96E7A==", + "requires": { + "@antv/g-base": "^0.5.3", + "@antv/g-math": "^0.1.6", + "@antv/util": "~2.0.0", + "detect-browser": "^5.0.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/g-webgpu": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@antv/g-webgpu/-/g-webgpu-0.5.5.tgz", + "integrity": "sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==", + "requires": { + "@antv/g-webgpu-core": "^0.5.5", + "@antv/g-webgpu-engine": "^0.5.5", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "gl-vec2": "^1.3.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "polyline-miter-util": "^1.0.1", + "polyline-normals": "^2.0.2", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "@antv/g-webgpu-core": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@antv/g-webgpu-core/-/g-webgpu-core-0.5.6.tgz", + "integrity": "sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==", + "requires": { + "eventemitter3": "^4.0.0", + "gl-matrix": "^3.1.0", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13" + } + }, + "@antv/g-webgpu-engine": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@antv/g-webgpu-engine/-/g-webgpu-engine-0.5.6.tgz", + "integrity": "sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==", + "requires": { + "@antv/g-webgpu-core": "^0.5.6", + "@webgpu/glslang": "^0.0.15", + "@webgpu/types": "^0.0.31", + "gl-matrix": "^3.1.0", + "hammerjs": "^2.0.8", + "inversify": "^5.0.1", + "inversify-inject-decorators": "^3.1.0", + "probe.gl": "^3.1.1", + "reflect-metadata": "^0.1.13", + "regl": "^1.3.11" + } + }, + "@antv/g6": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-4.2.7.tgz", + "integrity": "sha512-HWMXlTApzjYQJe3AfPpdXna8K7V7zndY7fZIfrxOxQs+pG5bhfzfnrhNzd4erTMP50iNYQRSpNBGAJClvaEn+w==", + "requires": { + "@antv/g6-pc": "0.2.7" + } + }, + "@antv/g6-core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@antv/g6-core/-/g6-core-0.2.7.tgz", + "integrity": "sha512-uX6y9Zjk/ucihnLaDOMqBwlnhIFKMIgSx+8IlOwIVWs0IV8HjOGYWoqk2+Jn76lexMtcC1M94522V5mVRNX2NQ==", + "requires": { + "@antv/algorithm": "0.1.8-beta.6", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-math": "^0.1.1", + "@antv/matrix-util": "^3.1.0-beta.2", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "ml-matrix": "^6.5.0", + "tslib": "^2.1.0" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.2", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.2.tgz", + "integrity": "sha512-Efwp0ZHxVDK/8RUa/RRWN7HKFHJmjn7Oq5HaNBbCmsxd7JTla3Zsoq1AZrjWMDlq0lplo77urclwI+XIW8NEHw==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/g6-element": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@antv/g6-element/-/g6-element-0.2.7.tgz", + "integrity": "sha512-+jmXMNA97OF19NLRyCZ305834mp021dW2Ly1/LyLQ2YPdLWZFVAAWq2vasDJrnnpAH4krvgHa2vaVAhm5VLalA==", + "requires": { + "@antv/g-base": "^0.5.1", + "@antv/g6-core": "0.2.7", + "@antv/util": "~2.0.5" + } + }, + "@antv/g6-pc": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@antv/g6-pc/-/g6-pc-0.2.7.tgz", + "integrity": "sha512-qFQM4fqs+kTWPHIs+QK+nWwEg3jdzjmIN3ILNMO1MZCrXx/dsDlHTun/VzLA2SZcdK1FeCX5uRZfX2OBSREuFA==", + "requires": { + "@ant-design/colors": "^4.0.5", + "@antv/algorithm": "0.1.8-beta.6", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.5.1", + "@antv/g6-core": "0.2.7", + "@antv/g6-element": "0.2.7", + "@antv/g6-plugin": "0.2.7", + "@antv/hierarchy": "^0.6.7", + "@antv/layout": "^0.1.12", + "@antv/matrix-util": "^3.0.4", + "@antv/path-util": "^2.0.3", + "@antv/util": "~2.0.5", + "color": "^3.1.3", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "insert-css": "^2.0.0", + "ml-matrix": "^6.5.0" + } + }, + "@antv/g6-plugin": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@antv/g6-plugin/-/g6-plugin-0.2.7.tgz", + "integrity": "sha512-CLv1zoGUzBH5JQVILACneyPVoM0YkM6dTXpj00BBOKIzJrzferFTaqeNDvtQfQWCq6AWUefztQZSmnwqWBAuuQ==", + "requires": { + "@antv/dom-util": "^2.0.2", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-svg": "^0.5.2", + "@antv/g6-core": "0.2.7", + "@antv/matrix-util": "^3.0.4", + "@antv/scale": "^0.3.4", + "@antv/util": "^2.0.9", + "insert-css": "^2.0.0" + } + }, + "@antv/hierarchy": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.7.tgz", + "integrity": "sha512-Te2fJCq5W80990gCUiUazp1BOloushOEnbgaD+z5z/m0ntjVEhJzQJDyTNG7NT30CO4iskv4R0Jmh5u9kxAznQ==", + "requires": { + "@antv/util": "^2.0.7" + } + }, + "@antv/layout": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@antv/layout/-/layout-0.1.12.tgz", + "integrity": "sha512-+7VCN/2ahuJUNPtGso7y4QbEAOHnFiScuPZkk5BLZzQCU01NxkeDB7yxLG++f9n8x9Ho1xiK7xPI1g23eGqqTA==", + "requires": { + "@antv/g-webgpu": "0.5.5", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "ml-matrix": "^6.5.0" + } + }, + "@antv/matrix-util": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.0.4.tgz", + "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/path-util": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@antv/path-util/-/path-util-2.0.9.tgz", + "integrity": "sha512-kunEz4dNheQMVn4rVFsoBDx+n9Knfi3uRLvDk9SojZAqpninsjFhdoiYtbExwJGz1FYGtiV10Y6N1tp73kZFcg==", + "requires": { + "@antv/util": "^2.0.9", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/scale": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.3.9.tgz", + "integrity": "sha512-m56Rs4Zta7XnuF+aNbJXMsgBqATO1M4kvu+dEmhzLYsPK5D3dHpJTOGh/Zy55eirekb9F7jiu29SJqPNnhxq+g==", + "requires": { + "@antv/util": "~2.0.3", + "fecha": "~4.2.0", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/util": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@antv/util/-/util-2.0.13.tgz", + "integrity": "sha512-mfYL7K8XJIeDmal33K+6abr8Yb526YXKg5XQlddNo+X1Doll+gun6HxnbdySoLv21vW4bLkcbVPjqxWl7ZJAFA==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", + "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + } + } + }, + "@antv/x6": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@antv/x6/-/x6-1.30.1.tgz", + "integrity": "sha512-bdiiKqlHZyQiZ6MrpqE18cFNNO2aWt+ZwSkTE3UlxyPmkAr9JxISwkr771/Fwc10LOV1ImlTAUpfXd8fxYJaAQ==", + "requires": { + "csstype": "^3.0.3", + "jquery": "^3.5.1", + "jquery-mousewheel": "^3.1.13", + "lodash-es": "^4.17.15", + "mousetrap": "^1.6.5", + "utility-types": "^3.10.0" + } + }, + "@antv/x6-vue-shape": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@antv/x6-vue-shape/-/x6-vue-shape-1.3.1.tgz", + "integrity": "sha512-GD5GWRVN2i6RuI6DLPjaTPU1IPxhI9BTUzSwCWY8RgB44VMJhBB6WoEZC3aVUYbPBnuz2ECVrvV3kAhV+eKIyg==", + "requires": { + "vue-demi": "^0.7.4" + } + }, + "@babel/code-frame": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.12.13.tgz", + "integrity": "sha1-3PyCa+72XnXFDiHTg319lXmN1lg=", + "requires": { + "@babel/highlight": "^7.12.13" + } + }, + "@babel/compat-data": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/compat-data/download/@babel/compat-data-7.13.15.tgz", + "integrity": "sha1-fo7qQtC2T9orN1si0GxgUiLoSPQ=", + "dev": true + }, + "@babel/core": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/core/download/@babel/core-7.13.16.tgz?cache=0&sync_timestamp=1618919229530&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.13.16.tgz", + "integrity": "sha1-d1arJDlsyWdfHD/NW3n8zhkuqWo=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.16", + "@babel/helper-compilation-targets": "^7.13.16", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/generator/download/@babel/generator-7.13.16.tgz", + "integrity": "sha1-C+/ChwMaIB2EzfwXO0azIK5HLRQ=", + "dev": true, + "requires": { + "@babel/types": "^7.13.16", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha1-D1jobfxLs7H819uAZXDhd9Q5tqs=", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz?cache=0&sync_timestamp=1612314760016&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.12.13.tgz", + "integrity": "sha1-a8IDYciLCnTQUTemXKyNPL9vYfw=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.13.16.tgz", + "integrity": "sha1-bpHczxXj9D5VVt/+MthgEJiHVjw=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.13.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.13.11.tgz", + "integrity": "sha1-MNMKAFvKLJU/VlP8JQkaSSF39PY=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.0", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.17", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.12.17.tgz?cache=0&sync_timestamp=1613661220666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-create-regexp-features-plugin%2Fdownload%2F%40babel%2Fhelper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha1-oqyH6eMZJprGVbjUQV6U041mPLc=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.2.0.tgz", + "integrity": "sha1-pkAFF3IEX+2q7MbwxsafAr3TS/E=", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.13.0.tgz?cache=0&sync_timestamp=1614034839085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-explode-assignable-expression%2Fdownload%2F%40babel%2Fhelper-explode-assignable-expression-7.13.0.tgz", + "integrity": "sha1-F7XFn/Rz2flW9A71cM86dsoSZX8=", + "dev": true, + "requires": { + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.12.13.tgz", + "integrity": "sha1-k61lbbPDwiMlWf17LD29y+DrN3o=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha1-vGNFHUA6OzCCuX4diz/lvUCR5YM=", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.13.16.tgz", + "integrity": "sha1-GxZRJJ6UtR+PDTNDmEPjPjl3WzA=", + "dev": true, + "requires": { + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.16" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.13.12.tgz?cache=0&sync_timestamp=1616428156989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha1-3+No8m1CagcpnY1lE4IXaCFubXI=", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.13.12.tgz?cache=0&sync_timestamp=1616428145076&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-imports%2Fdownload%2F%40babel%2Fhelper-module-imports-7.13.12.tgz", + "integrity": "sha1-xqNppvNiHLJdoBQHhoTakZa2GXc=", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-module-transforms": { + "version": "7.13.14", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.13.14.tgz?cache=0&sync_timestamp=1617027372441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.13.14.tgz", + "integrity": "sha1-5gBlK6SMyxZBd1QTyzLPpOi0le8=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha1-XALRcbTIYVsecWP4iMHIHDCiquo=", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha1-gGUmzhJa7QM3O8QWqCgyHjpqM68=", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.13.0.tgz?cache=0&sync_timestamp=1614034833096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.13.0.tgz", + "integrity": "sha1-N2p2DZ97SyB3qd0Fqpw5J8rbIgk=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.13.12.tgz?cache=0&sync_timestamp=1616428110982&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.13.12.tgz", + "integrity": "sha1-ZEL0wa2RJQJIGlZKc4beDHf/OAQ=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.13.12.tgz?cache=0&sync_timestamp=1616428158129&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-simple-access%2Fdownload%2F%40babel%2Fhelper-simple-access-7.13.12.tgz", + "integrity": "sha1-3WxTivthgZ0gWgEsMXkqOcel6vY=", + "dev": true, + "requires": { + "@babel/types": "^7.13.12" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npm.taobao.org/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha1-Ri3GOn5DWt6EaDhcY9K4TM5LPL8=", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.12.13.tgz?cache=0&sync_timestamp=1612314636310&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-split-export-declaration%2Fdownload%2F%40babel%2Fhelper-split-export-declaration-7.12.13.tgz", + "integrity": "sha1-6UML4AuvPoiw4T5vnU6vITY3KwU=", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha1-yaHwIZF9y1zPDU5FPjmQIpgfye0=" + }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npm.taobao.org/@babel/helper-validator-option/download/@babel/helper-validator-option-7.12.17.tgz?cache=0&sync_timestamp=1613661224272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-validator-option%2Fdownload%2F%40babel%2Fhelper-validator-option-7.12.17.tgz", + "integrity": "sha1-0fvwEuGnm37rv9xtJwuq+NnrmDE=", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.13.0.tgz?cache=0&sync_timestamp=1614034839729&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.13.0.tgz", + "integrity": "sha1-vbXGb9qFJuwjWriUrVOhI1x5/MQ=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" + } + }, + "@babel/helpers": { + "version": "7.13.17", + "resolved": "https://registry.nlark.com/@babel/helpers/download/@babel/helpers-7.13.17.tgz?cache=0&sync_timestamp=1618960866833&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.13.17.tgz", + "integrity": "sha1-tJfHoA6XGdW2E7iYK9pu0+6UyvY=", + "dev": true, + "requires": { + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.17", + "@babel/types": "^7.13.17" + } + }, + "@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.13.10.tgz", + "integrity": "sha1-qLKmYUj1sn1maxXYF3Q0enMdUtE=", + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/parser/download/@babel/parser-7.13.16.tgz", + "integrity": "sha1-DxgXmwRI5pObHz9cTDVaOpvN/Tc=", + "dev": true + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/download/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", + "integrity": "sha1-o0hNhNC1SfP8kWuZ7keD8m+rrSo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.13.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.13.15.tgz", + "integrity": "sha1-gOVJ3yc6OzBQQxsUjIkkkd8bzFs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034504606&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.13.0.tgz", + "integrity": "sha1-FGN2AAuU79AB5XpAqIpSWvqrnzc=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.13.15.tgz", + "integrity": "sha1-6RzP7y3CTdW9XcyfyeJVfGhOz7g=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.11", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-decorators": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.13.8.tgz?cache=0&sync_timestamp=1614382919309&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-dynamic-import%2Fdownload%2F%40babel%2Fplugin-proposal-dynamic-import-7.13.8.tgz", + "integrity": "sha1-h2ofaWbh3sMy6MlFGv2jvrzfLh0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-export-namespace-from%2Fdownload%2F%40babel%2Fplugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha1-OTvkekrNA/oq9uPN6bBuM94bRG0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.13.8.tgz?cache=0&sync_timestamp=1614382894206&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-json-strings%2Fdownload%2F%40babel%2Fplugin-proposal-json-strings-7.13.8.tgz", + "integrity": "sha1-vx+zYlRwda/aNjTtMVccWQGv73s=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.13.8.tgz", + "integrity": "sha1-k/p41jhXxAzjyMMxUiD9AL+7Tho=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", + "integrity": "sha1-NzCjHa/TwQ2MzRBkjtgKKsVHLvM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.12.13.tgz?cache=0&sync_timestamp=1612314758019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-numeric-separator%2Fdownload%2F%40babel%2Fplugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha1-vZ2jGI54e1EgtPnUZagmHOZ+0ds=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.13.8.tgz?cache=0&sync_timestamp=1614382897959&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.13.8.tgz", + "integrity": "sha1-XSEKTXJ9bOOxj53oLMmaOWTu1go=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-compilation-targets": "^7.13.8", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.13.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.13.8.tgz?cache=0&sync_timestamp=1614383097188&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.13.8.tgz", + "integrity": "sha1-Ota9WQFQbqmW/DG9zzzPor7XEQc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.13.12", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.13.12.tgz?cache=0&sync_timestamp=1616428079626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-optional-chaining%2Fdownload%2F%40babel%2Fplugin-proposal-optional-chaining-7.13.12.tgz", + "integrity": "sha1-up/rYB1CLgrepnYMK9a7t7/sSGY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.13.0.tgz", + "integrity": "sha1-BL1MbUD25rv6L1fi2AlLrZAO94c=", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.12.13.tgz?cache=0&sync_timestamp=1612315369895&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.12.13.tgz", + "integrity": "sha1-vr3lEzm+gpwXqqrO0YZB3rYrObo=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.12.13.tgz", + "integrity": "sha1-+sgpvzx+9KG8kWJXtAPljGva9kg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@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-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha1-AolkqbqA28CUyRXEh618TnpmRlo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@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.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha1-BE+4HrrWaY/mLEeIdVdby7m3DxU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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", + "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz?cache=0&sync_timestamp=1593521791666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-numeric-separator%2Fdownload%2F%40babel%2Fplugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@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.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha1-xfD6biSfW3OXJ/kjVAz3qAYTAXg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.13.0.tgz?cache=0&sync_timestamp=1614034822229&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-arrow-functions%2Fdownload%2F%40babel%2Fplugin-transform-arrow-functions-7.13.0.tgz", + "integrity": "sha1-EKWb661S1jegJ6+mkujVzv9ePa4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.13.0.tgz?cache=0&sync_timestamp=1614034507617&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.13.0.tgz", + "integrity": "sha1-jhEr9ncbgr8el05eJoBsXJmqUW8=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-remap-async-to-generator": "^7.13.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.12.13.tgz?cache=0&sync_timestamp=1612314818063&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoped-functions%2Fdownload%2F%40babel%2Fplugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha1-qb8YNvKjm062zwmWdzneKepL9MQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.13.16", + "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.13.16.tgz", + "integrity": "sha1-qcDxB5SFXGOx1imRTH3P7d0YWJI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.13.0.tgz?cache=0&sync_timestamp=1614034503988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.13.0.tgz", + "integrity": "sha1-AmUVUHXEKRi/TTpAUxNBdq2bUzs=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-replace-supers": "^7.13.0", + "@babel/helper-split-export-declaration": "^7.12.13", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.13.0.tgz?cache=0&sync_timestamp=1614034823289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-computed-properties%2Fdownload%2F%40babel%2Fplugin-transform-computed-properties-7.13.0.tgz", + "integrity": "sha1-hFxui5u1U3ax+guS7wvcjqBmRO0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.13.17", + "resolved": "https://registry.nlark.com/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.13.17.tgz?cache=0&sync_timestamp=1618960864725&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-destructuring%2Fdownload%2F%40babel%2Fplugin-transform-destructuring-7.13.17.tgz", + "integrity": "sha1-Z42WV2Y4wZ1bNrMyUE0/1uBt6ic=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.12.13.tgz?cache=0&sync_timestamp=1612315581050&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha1-PxYBzCmQW/y2f1ORDxl66v67Ja0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.12.13.tgz?cache=0&sync_timestamp=1612314817333&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-duplicate-keys%2Fdownload%2F%40babel%2Fplugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha1-bwa4eouAP9ko5UuBwljwoAM5BN4=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.12.13.tgz?cache=0&sync_timestamp=1612314730682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-exponentiation-operator%2Fdownload%2F%40babel%2Fplugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha1-TVI5C5onPmUeSrpq7knvQOgM0KE=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.13.0.tgz?cache=0&sync_timestamp=1614034500476&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.13.0.tgz", + "integrity": "sha1-x5n4gagJGsJrVIZ6hFw+l9JpYGI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.12.13.tgz?cache=0&sync_timestamp=1612314730751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-function-name%2Fdownload%2F%40babel%2Fplugin-transform-function-name-7.12.13.tgz", + "integrity": "sha1-uwJEUvmq7YYdN0yOeiQlLOOlAFE=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.12.13.tgz?cache=0&sync_timestamp=1612314767825&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-literals%2Fdownload%2F%40babel%2Fplugin-transform-literals-7.12.13.tgz", + "integrity": "sha1-LKRbr+SoIBl88xV5Sk0mVg/kvbk=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha1-X/pmzVm54ZExTJ8fgDuTjowIHkA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.13.0.tgz", + "integrity": "sha1-GfUR1g49h1PMWm1Od106UYSGbMM=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.13.8.tgz?cache=0&sync_timestamp=1614382840057&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.13.8.tgz", + "integrity": "sha1-ewGtfC3PInWwb6F4HgDRPUILPhs=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.13.8", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.13.8.tgz?cache=0&sync_timestamp=1614383098157&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.13.8.tgz", + "integrity": "sha1-bQZu4r/zx7PWC/KN7Baa2ZODGuM=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.13.0", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.13.0.tgz", + "integrity": "sha1-ij2WqX0ZlwW5/QIVgAgq+BwG5ws=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314730683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-named-capturing-groups-regex%2Fdownload%2F%40babel%2Fplugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha1-IhNyWl9bu+NktQw7pZmMlZnFydk=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha1-4i2MOvJLFQ3VKMvW5oXnmb8cNRw=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.12.13.tgz?cache=0&sync_timestamp=1612315374931&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.12.13.tgz", + "integrity": "sha1-tEFqLWO4974xTz00m9VanBtRcfc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.13.0.tgz", + "integrity": "sha1-j6dgPjCX+cC3yhpIIbwvtS6eUAc=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.12.13.tgz?cache=0&sync_timestamp=1612314768626&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-property-literals%2Fdownload%2F%40babel%2Fplugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha1-TmqeN4ZNjxs7wOLc57+IV9uLGoE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.13.15.tgz", + "integrity": "sha1-5esolFv4tlY+f4GJRflmqNKZfzk=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha1-fZmI1PBuD+aX6h2YAxiKoYtHJpU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.13.15.tgz", + "integrity": "sha1-Lt31hd0Ga4QQJRfhCld/JPdqnNc=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-plugin-utils": "^7.13.0", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha1-23VXMrcMU51QTGOQ2c6Q/mSv960=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.13.0.tgz?cache=0&sync_timestamp=1614034823666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-spread%2Fdownload%2F%40babel%2Fplugin-transform-spread-7.13.0.tgz", + "integrity": "sha1-hIh3EOJzwYFaznrkWfb0Kl0x1f0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.12.13.tgz?cache=0&sync_timestamp=1612315370472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha1-dg/9k2+s5z+GCuZG+4bugvPQbR8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.13.0", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.13.0.tgz", + "integrity": "sha1-o2BJEnl3rZRDje50Q1mNHO/fQJ0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.13.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.12.13.tgz?cache=0&sync_timestamp=1612315369316&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha1-eF3Weh8upXnZwr5yLejITLhfWn8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha1-hAztO4FtO1En3R0S3O3F3q0aXnQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.12.13.tgz?cache=0&sync_timestamp=1612314730902&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-unicode-regex%2Fdownload%2F%40babel%2Fplugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha1-tSUhaFgE4VWxIC6D/BiNNLtw9aw=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.13.15", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.13.15.tgz", + "integrity": "sha1-yKbrWE+W7LoYPT1BSoNVOlmfR48=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.15", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-async-generator-functions": "^7.13.15", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-dynamic-import": "^7.13.8", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.13.8", + "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.13.8", + "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-proposal-private-methods": "^7.13.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.13.0", + "@babel/plugin-transform-async-to-generator": "^7.13.0", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.13.0", + "@babel/plugin-transform-computed-properties": "^7.13.0", + "@babel/plugin-transform-destructuring": "^7.13.0", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.13.0", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.13.0", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/plugin-transform-modules-systemjs": "^7.13.8", + "@babel/plugin-transform-modules-umd": "^7.13.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.13.0", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.13.15", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.13.0", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.13.0", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.13.14", + "babel-plugin-polyfill-corejs2": "^0.2.0", + "babel-plugin-polyfill-corejs3": "^0.2.0", + "babel-plugin-polyfill-regenerator": "^0.2.0", + "core-js-compat": "^3.9.0", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz?cache=0&sync_timestamp=1598549925898&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-modules%2Fdownload%2F%40babel%2Fpreset-modules-0.1.4.tgz", + "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=", + "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.13.17", + "resolved": "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.13.17.tgz?cache=0&sync_timestamp=1618960866380&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.13.17.tgz", + "integrity": "sha1-iWbR/JWTv4SGAvBmLWtNAGnjp+w=", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.12.13.tgz?cache=0&sync_timestamp=1612314730561&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.12.13.tgz", + "integrity": "sha1-UwJlvooliduzdSOETFvLVZR/syc=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.13.17", + "resolved": "https://registry.nlark.com/@babel/traverse/download/@babel/traverse-7.13.17.tgz", + "integrity": "sha1-yFQV4MfVCsBT11i67Jiyiy7P7qM=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.16", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.13.16", + "@babel/types": "^7.13.17", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.13.17", + "resolved": "https://registry.nlark.com/@babel/types/download/@babel/types-7.13.17.tgz", + "integrity": "sha1-SAEKEVyfunWItEN91oyUaQErOLQ=", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "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?cache=0&sync_timestamp=1603524710662&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-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?cache=0&sync_timestamp=1618694827665&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-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?cache=0&sync_timestamp=1603524515155&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-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?cache=0&sync_timestamp=1593916080558&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-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" + }, + "dependencies": { + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + } + } + }, + "@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?cache=0&sync_timestamp=1609074523193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz", + "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=", + "dev": true + }, + "@probe.gl/stats": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.3.1.tgz", + "integrity": "sha512-7ekl4qYndDgmCzZMNhicgJpIzApyjdqo67qv1zKx8hmAgC+AeCk6LE8sdiTauddd8+FDViAkxhrr271KwOgHfw==", + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.0.tgz?cache=0&sync_timestamp=1607927406873&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Ffriendly-errors-webpack-plugin%2Fdownload%2F%40soda%2Ffriendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha1-hHUdgqkwGdXJLAzw5FrFkIfNIkA=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" + }, + "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 + }, + "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=1618558821529&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": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "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 + } + } + } + } + }, + "@soda/get-current-script": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.2.tgz?cache=0&sync_timestamp=1592273074614&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Fget-current-script%2Fdownload%2F%40soda%2Fget-current-script-1.0.2.tgz", + "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=", + "dev": true + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + }, + "@types/anymatch": { + "version": "1.3.1", + "resolved": "https://registry.nlark.com/@types/anymatch/download/@types/anymatch-1.3.1.tgz", + "integrity": "sha1-M2utwb7sudrMOL6izzKt9ieoQho=", + "dev": true + }, + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1613378063000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz", + "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.34.tgz?cache=0&sync_timestamp=1613378229103&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect%2Fdownload%2F%40types%2Fconnect-3.4.34.tgz", + "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.4", + "resolved": "https://registry.npm.taobao.org/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.4.tgz?cache=0&sync_timestamp=1615910572832&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fconnect-history-api-fallback%2Fdownload%2F%40types%2Fconnect-history-api-fallback-1.3.4.tgz", + "integrity": "sha1-jA8Obl2CUraZ9aZi9Rvfgv2di7g=", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-l6stHr1VD1BWlW6u3pxrjLtJfpPZq9I3XmKIQtq7zHM/s6fwEtI1Yn6Sr5/jQTrUDCC5jkS6gWqlFGCDArDqNg==" + }, + "@types/express": { + "version": "4.17.11", + "resolved": "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.11.tgz?cache=0&sync_timestamp=1613378493388&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.11.tgz", + "integrity": "sha1-3r48qm+OX82pa0e9VOL0DE7llUU=", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.19", + "resolved": "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.19.tgz?cache=0&sync_timestamp=1615830555880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.19.tgz", + "integrity": "sha1-AKz8FjLnKaysTxUw6eFvbdFQih0=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.3.tgz?cache=0&sync_timestamp=1613378611554&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fglob%2Fdownload%2F%40types%2Fglob-7.1.3.tgz", + "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.5", + "resolved": "https://registry.npm.taobao.org/@types/http-proxy/download/@types/http-proxy-1.17.5.tgz", + "integrity": "sha1-wgPF5uncaCDSekDrHlEccKIgQj0=", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/@types/mime/download/@types/mime-1.3.2.tgz", + "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.4.tgz", + "integrity": "sha1-8Owl2/Lw5LGGRzE6wDETTKWySyE=", + "dev": true + }, + "@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.1.tgz", + "integrity": "sha1-KD9mn/dte4Jg34q3pCYsyD2YglY=" + }, + "@types/node": { + "version": "15.0.1", + "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.0.1.tgz?cache=0&sync_timestamp=1619534698043&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.0.1.tgz", + "integrity": "sha1-7zTeoIgQKNETmL5b9OhWdD49w1o=", + "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=1613379433112&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=" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.4.tgz?cache=0&sync_timestamp=1613379575883&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.4.tgz", + "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=", + "dev": true + }, + "@types/qs": { + "version": "6.9.6", + "resolved": "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.6.tgz", + "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz", + "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=", + "dev": true + }, + "@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.9.tgz", + "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz", + "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=", + "dev": true + }, + "@types/tapable": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/@types/tapable/download/@types/tapable-1.0.7.tgz?cache=0&sync_timestamp=1617127562296&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Ftapable%2Fdownload%2F%40types%2Ftapable-1.0.7.tgz", + "integrity": "sha1-VFFYNC+Uno/Tv9gTIklx7N3D+sQ=", + "dev": true + }, + "@types/uglify-js": { + "version": "3.13.0", + "resolved": "https://registry.npm.taobao.org/@types/uglify-js/download/@types/uglify-js-3.13.0.tgz", + "integrity": "sha1-HK2N8fsLFDxaugjeVxLqnR/3ESQ=", + "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 + } + } + }, + "@types/webpack": { + "version": "4.41.27", + "resolved": "https://registry.nlark.com/@types/webpack/download/@types/webpack-4.41.27.tgz", + "integrity": "sha1-9H2kiMgDfn8bLb8nFPu6y2HsD/w=", + "dev": true, + "requires": { + "@types/anymatch": "*", + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "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 + } + } + }, + "@types/webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npm.taobao.org/@types/webpack-dev-server/download/@types/webpack-dev-server-3.11.3.tgz", + "integrity": "sha1-I34m2HZRz5VJDc01b1aMjIQBYXc=", + "dev": true, + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + } + }, + "@types/webpack-sources": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1613384741414&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz", + "integrity": "sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz", + "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.2.1.tgz?cache=0&sync_timestamp=1602851113365&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-jsx-merge-props%2Fdownload%2F%40vue%2Fbabel-helper-vue-jsx-merge-props-1.2.1.tgz", + "integrity": "sha1-MWJKelBfsU2h1YAjclpMXycOaoE=", + "dev": true + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.2.tgz?cache=0&sync_timestamp=1610812390314&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-transform-on%2Fdownload%2F%40vue%2Fbabel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha1-m5xpHNBvyFUiGiR1w8yDHXdLx9w=", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-jsx/download/@vue/babel-plugin-jsx-1.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-jsx-1.0.5.tgz", + "integrity": "sha1-coINX7NxxB0hE7MbFnh5lei99po=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.2.1.tgz?cache=0&sync_timestamp=1602851113524&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-transform-vue-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-transform-vue-jsx-1.2.1.tgz", + "integrity": "sha1-ZGBGxlLC8CQnJ/NFGdkXsGQEHtc=", + "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.2.1", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "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 + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.12.tgz?cache=0&sync_timestamp=1619342752992&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-4.5.12.tgz", + "integrity": "sha1-w6I88z9uXqMFNvE8D5sfx+AoscE=", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@babel/helper-compilation-targets": "^7.9.6", + "@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.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.0", + "@vue/babel-plugin-jsx": "^1.0.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + } + }, + "@vue/babel-preset-jsx": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.2.4.tgz?cache=0&sync_timestamp=1603806821600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-jsx%2Fdownload%2F%40vue%2Fbabel-preset-jsx-1.2.4.tgz", + "integrity": "sha1-kv6nnbbxOwHoDToAmeKSS9y+Toc=", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/babel-sugar-composition-api-inject-h": "^1.2.1", + "@vue/babel-sugar-composition-api-render-instance": "^1.2.4", + "@vue/babel-sugar-functional-vue": "^1.2.2", + "@vue/babel-sugar-inject-h": "^1.2.2", + "@vue/babel-sugar-v-model": "^1.2.3", + "@vue/babel-sugar-v-on": "^1.2.3" + } + }, + "@vue/babel-sugar-composition-api-inject-h": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-inject-h/download/@vue/babel-sugar-composition-api-inject-h-1.2.1.tgz?cache=0&sync_timestamp=1602851113182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-inject-h-1.2.1.tgz", + "integrity": "sha1-BdbgxDJxDjdYKyvppgSbaJtvA+s=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-composition-api-render-instance": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-render-instance/download/@vue/babel-sugar-composition-api-render-instance-1.2.4.tgz?cache=0&sync_timestamp=1603806823870&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-render-instance%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-render-instance-1.2.4.tgz", + "integrity": "sha1-5MvGmXw0T6wnF4WteikyXFHWjRk=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.2.2.tgz?cache=0&sync_timestamp=1602929884928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-functional-vue%2Fdownload%2F%40vue%2Fbabel-sugar-functional-vue-1.2.2.tgz", + "integrity": "sha1-JnqayNeHyW7b8Dzj85LEnam9Jlg=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.2.2.tgz?cache=0&sync_timestamp=1602929885089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-inject-h-1.2.2.tgz", + "integrity": "sha1-1zjTyJM2fshJHcu2abAAkZKT46o=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.2.3.tgz", + "integrity": "sha1-+h8pulHr8KoabDX6ZtU5vEWaGPI=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "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 + } + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.2.3.tgz?cache=0&sync_timestamp=1603181896860&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-v-on%2Fdownload%2F%40vue%2Fbabel-sugar-v-on-1.2.3.tgz", + "integrity": "sha1-NCNnF4WGpp85LwS/ujICHQKROto=", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + } + } + }, + "@vue/cli-overlay": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-overlay/download/@vue/cli-overlay-4.5.12.tgz?cache=0&sync_timestamp=1619342458582&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-overlay%2Fdownload%2F%40vue%2Fcli-overlay-4.5.12.tgz", + "integrity": "sha1-1a41OrsYdnIgQZfc0HekNn1NSiQ=", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.5.12.tgz?cache=0&sync_timestamp=1619342449502&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-4.5.12.tgz", + "integrity": "sha1-yXN9QHlIXOm+B8RjyB4eM4hsYhk=", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "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.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.12.tgz?cache=0&sync_timestamp=1619342523851&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-eslint%2Fdownload%2F%40vue%2Fcli-plugin-eslint-4.5.12.tgz", + "integrity": "sha1-f8Kh0KSQ+jAO9OlFGMLMSbp6KS8=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.12", + "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.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.5.12.tgz?cache=0&sync_timestamp=1619342449633&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.5.12.tgz", + "integrity": "sha1-l3xLK2lMwD6e+BYRKl1YkjST0Kw=", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.5.12" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.12.tgz?cache=0&sync_timestamp=1619342786436&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-vuex%2Fdownload%2F%40vue%2Fcli-plugin-vuex-4.5.12.tgz", + "integrity": "sha1-9/vhd+5xdvBVtUbp50Ry+dkXdiY=", + "dev": true + }, + "@vue/cli-service": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-service/download/@vue/cli-service-4.5.12.tgz", + "integrity": "sha1-SDrvfcTip7ArfyJPCi73zqkQ4DM=", + "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", + "@types/minimist": "^1.2.0", + "@types/webpack": "^4.0.0", + "@types/webpack-dev-server": "^3.11.0", + "@vue/cli-overlay": "^4.5.12", + "@vue/cli-plugin-router": "^4.5.12", + "@vue/cli-plugin-vuex": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.12", + "@vue/component-compiler-utils": "^3.1.2", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^7.4.0", + "acorn-walk": "^7.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.8.6", + "browserslist": "^4.12.0", + "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.5.3", + "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.26", + "postcss-loader": "^3.0.0", + "ssri": "^7.1.0", + "terser-webpack-plugin": "^2.3.6", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "vue-style-loader": "^4.1.2", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.8.0", + "webpack-chain": "^6.4.0", + "webpack-dev-server": "^3.11.0", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1619285351874&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1616431241238&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" + } + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.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 + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz?cache=0&sync_timestamp=1617826842740&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.8", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz", + "integrity": "sha1-iUdkoZsHQ/L3BOfCqEjFKDppZyQ=", + "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": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.6.12", + "webpack-sources": "^1.4.3" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.12", + "resolved": "https://registry.nlark.com/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.5.12.tgz", + "integrity": "sha1-DgaT1IgzbShP+mWP8zseoikn0GU=", + "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", + "semver": "^6.1.0", + "strip-ansi": "^6.0.0" + } + }, + "@vue/component-compiler-utils": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcomponent-compiler-utils%2Fdownload%2F%40vue%2Fcomponent-compiler-utils-3.2.0.tgz", + "integrity": "sha1-j4UYLO7Sjps8dTE95mn4MWbRHl0=", + "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", + "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/composition-api": { + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.4.9.tgz", + "integrity": "sha512-l6YOeg5LEXmfPqyxAnBaCv1FMRw0OGKJ4m6nOWRm6ngt5TuHcj5ZoBRN+LXh3J0u6Ur3C4VA+RiKT+M0eItr/g==" + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz", + "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=", + "dev": true + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.3.0.tgz?cache=0&sync_timestamp=1613217239610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fweb-component-wrapper%2Fdownload%2F%40vue%2Fweb-component-wrapper-1.3.0.tgz", + "integrity": "sha1-trQKdiVCnSvXwigd26YB7QXcfxo=", + "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&sync_timestamp=1610041305745&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=1610041307537&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&sync_timestamp=1610041309019&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&sync_timestamp=1610041308491&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&sync_timestamp=1610041306677&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=1610045497114&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", + "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?cache=0&sync_timestamp=1610041308619&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-bytecode%2Fdownload%2F%40webassemblyjs%2Fhelper-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&sync_timestamp=1610041306931&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&sync_timestamp=1610045498486&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&sync_timestamp=1610041308922&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&sync_timestamp=1610041309288&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&sync_timestamp=1610045504190&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&sync_timestamp=1610041306557&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&sync_timestamp=1610041306793&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&sync_timestamp=1610041306194&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?cache=0&sync_timestamp=1610041307079&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-parser%2Fdownload%2F%40webassemblyjs%2Fwast-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?cache=0&sync_timestamp=1610045500821&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-printer%2Fdownload%2F%40webassemblyjs%2Fwast-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" + } + }, + "@webgpu/glslang": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/@webgpu/glslang/-/glslang-0.0.15.tgz", + "integrity": "sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==" + }, + "@webgpu/types": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.0.31.tgz", + "integrity": "sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ==" + }, + "@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 + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "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.2", + "resolved": "https://registry.nlark.com/acorn/download/acorn-6.4.2.tgz?cache=0&sync_timestamp=1619285351874&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-6.4.2.tgz", + "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz", + "integrity": "sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz", + "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=", + "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.1.0", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faggregate-error%2Fdownload%2Faggregate-error-3.1.0.tgz", + "integrity": "sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1619537077405&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fajv%2Fdownload%2Fajv-6.12.6.tgz", + "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=", + "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.5.2", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=", + "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=" + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.2.tgz?cache=0&sync_timestamp=1618723616144&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.2.tgz", + "integrity": "sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.21.3.tgz?cache=0&sync_timestamp=1618335310789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.21.3.tgz", + "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=", + "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=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "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": "3.1.2", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.2.tgz?cache=0&sync_timestamp=1617747494189&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fanymatch%2Fdownload%2Fanymatch-3.1.2.tgz", + "integrity": "sha1-wFV8CWrzLxBhmPT04qODU343hxY=", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz", + "integrity": "sha1-G8R4GPMFdk8jqzMGsL/AhsWinRE=", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz?cache=0&sync_timestamp=1598649397806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fargparse%2Fdownload%2Fargparse-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?cache=0&sync_timestamp=1614624302839&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-union%2Fdownload%2Farray-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 + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz", + "integrity": "sha1-EamAuE67kXgc41sP3C7ilON4Pwc=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "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", + "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=" + }, + "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-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + }, + "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 + }, + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "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.8.6", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.8.6.tgz", + "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "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=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101311814&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz", + "integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.21.1.tgz?cache=0&sync_timestamp=1608611162952&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.21.1.tgz", + "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611945896690&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-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-helper-vue-jsx-merge-props": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", + "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz", + "integrity": "sha1-k2POhMEMmkDmx1N0jhRBtgyKC4E=", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "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=1587495874530&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" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.0.tgz", + "integrity": "sha1-aGd1v5pap1fhBSCQNnXjiJyu7cQ=", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.2.0.tgz", + "integrity": "sha1-9LS7exkymCffNv9W9ubTZwJst6I=", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0", + "core-js-compat": "^3.9.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.2.0.tgz", + "integrity": "sha1-hT9fVxb0aR2YyE+Aacdjbqjaerg=", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz", + "integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&sync_timestamp=1617714233441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz", + "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=" + }, + "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.5.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz", + "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", + "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=", + "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.nlark.com/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299293319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz", + "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=", + "dev": true, + "optional": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz", + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", + "dev": true + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.2.0.tgz", + "integrity": "sha1-NYhgZ0OWxpl3canQUfzBtX1K4AI=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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=1616385328325&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=" + }, + "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=", + "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.1.0", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.1.0.tgz?cache=0&sync_timestamp=1605194257215&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserify-rsa%2Fdownload%2Fbrowserify-rsa-4.1.0.tgz", + "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.2.1.tgz?cache=0&sync_timestamp=1596557839950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserify-sign%2Fdownload%2Fbrowserify-sign-4.2.1.tgz", + "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.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.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } + } + }, + "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.16.5", + "resolved": "https://registry.nlark.com/browserslist/download/browserslist-4.16.5.tgz", + "integrity": "sha1-lSglRAvKiRPGLQAhM0y+ko7wYq4=", + "requires": { + "caniuse-lite": "^1.0.30001214", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.719", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-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=1616431241238&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" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610403007655&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz", + "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "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", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.nlark.com/caller-path/download/caller-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=1606867359182&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": "6.2.0", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz", + "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "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.30001219", + "resolved": "https://registry.nlark.com/caniuse-lite/download/caniuse-lite-1.0.30001219.tgz?cache=0&sync_timestamp=1619591697862&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001219.tgz", + "integrity": "sha1-W/pdBRn0H5k2GL0xj2BqTEwWFWs=" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.4.0.tgz?cache=0&sync_timestamp=1614018423407&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcase-sensitive-paths-webpack-plugin%2Fdownload%2Fcase-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "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", + "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?cache=0&sync_timestamp=1579455903027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz", + "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=", + "dev": true + }, + "chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.5.1.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.5.1.tgz", + "integrity": "sha1-7pznu+vSt59J8wR5nVRo4x4U5oo=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.3.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true, + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "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.3", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.3.tgz?cache=0&sync_timestamp=1617905987379&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchrome-trace-event%2Fdownload%2Fchrome-trace-event-1.0.3.tgz", + "integrity": "sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=", + "dev": true + }, + "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?cache=0&sync_timestamp=1618678923258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-stack%2Fdownload%2Fclean-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.11", + "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.11.tgz", + "integrity": "sha1-SXNvpFLwqvT65YDjCssmgo0twb8=", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz", + "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=", + "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.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.6.0.tgz", + "integrity": "sha1-NsfcmPtqmna9YjjsP3fiQlYn6Tk=", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz", + "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=", + "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.2.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880249159&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, + "requires": { + "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 + }, + "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" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "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.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" + }, + "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.3", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.3.tgz?cache=0&sync_timestamp=1602228725017&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor%2Fdownload%2Fcolor-3.1.3.tgz", + "integrity": "sha1-ymf7TnuX1hHc3jns7tQiBn2RWW4=", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "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=" + }, + "color-string": { + "version": "1.5.5", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.5.tgz", + "integrity": "sha1-ZUdKjw50OWJfPSemoZ2J/EUiMBQ=", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colord": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.8.0.tgz", + "integrity": "sha512-kNkVV4KFta3TYQv0bzs4xNwLaeag261pxgzGQSh4cQ1rEhYjcTJfFRP0SDlbhLONg0eSoLzrDd79PosjbltufA==" + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz?cache=0&sync_timestamp=1614259647923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolorette%2Fdownload%2Fcolorette-1.2.2.tgz", + "integrity": "sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-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?cache=0&sync_timestamp=1578286227326&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompressible%2Fdownload%2Fcompressible-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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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=" + }, + "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 + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "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.2", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz?cache=0&sync_timestamp=1617709678926&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.2.tgz", + "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=", + "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": "^4.0.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-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": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.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" + } + } + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-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" + }, + "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 + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "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" + } + }, + "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=1587567576732&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" + } + }, + "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" + } + }, + "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 + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-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": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz?cache=0&sync_timestamp=1618384508676&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.11.1", + "resolved": "https://registry.nlark.com/core-js/download/core-js-3.11.1.tgz", + "integrity": "sha1-+SA5K/jtY6Dsjk5ymFe/o9EhxSU=" + }, + "core-js-compat": { + "version": "3.11.1", + "resolved": "https://registry.nlark.com/core-js-compat/download/core-js-compat-3.11.1.tgz", + "integrity": "sha1-V6kemwLTu4zzf4Ls6vRKPWRvphQ=", + "dev": true, + "requires": { + "browserslist": "^4.16.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=1616463603361&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=" + }, + "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?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-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.4", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz", + "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "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?cache=0&sync_timestamp=1590421084109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "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-function": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz", + "integrity": "sha1-jtJMLAIFBzM5+voAS8jBQfzLKC4=", + "requires": { + "balanced-match": "0.1.0", + "color": "^0.11.0", + "debug": "^3.1.0", + "rgb": "~0.1.0" + }, + "dependencies": { + "balanced-match": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", + "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=" + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "requires": { + "color-name": "^1.0.0" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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.6.0", + "resolved": "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz?cache=0&sync_timestamp=1618852776726&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-loader%2Fdownload%2Fcss-loader-3.6.0.tgz", + "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=", + "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.32", + "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.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "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-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.4.2.tgz", + "integrity": "sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", + "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=" + }, + "cssnano": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.8.tgz", + "integrity": "sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==", + "requires": { + "cssnano-preset-default": "^5.1.4", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "dependencies": { + "browserslist": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", + "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", + "requires": { + "caniuse-lite": "^1.0.30001259", + "electron-to-chromium": "^1.3.846", + "escalade": "^3.1.1", + "nanocolors": "^0.1.5", + "node-releases": "^1.1.76" + } + }, + "caniuse-lite": { + "version": "1.0.30001261", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", + "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==" + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==" + }, + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "requires": { + "timsort": "^0.3.0" + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + }, + "cssnano-preset-default": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz", + "integrity": "sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==", + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.2", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "electron-to-chromium": { + "version": "1.3.853", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz", + "integrity": "sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==" + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node-releases": { + "version": "1.1.76", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", + "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==" + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==" + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==" + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==" + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz", + "integrity": "sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==", + "requires": { + "colord": "^2.6", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==" + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" + } + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, + "svgo": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.7.0.tgz", + "integrity": "sha512-aDLsGkre4fTDCWvolyW+fs8ZJFABpzLXbtdK1y71CKnHzAnpDxKXPj2mNKj+pyOXUCzFHzuxRJ94XOFygOWV3w==", + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "nanocolors": "^0.1.12", + "stable": "^0.1.8" + } + } + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.nlark.com/cssnano-preset-default/download/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha1-kgYisfwelaNOiDggPxOXpQTy0/8=", + "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.3", + "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 + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.2.0.tgz?cache=0&sync_timestamp=1606408790645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.2.0.tgz", + "integrity": "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.1.3.tgz", + "integrity": "sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.14.tgz", + "integrity": "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, + "csstype": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-/xKyIYpKzd+I2DhiS2ANYJtEfHkE9lHKBFwqsplKsazPcXy2N1KIJSMTJsRk42jHbHCH0KPJGd0RnBt6NBJ1MA==", + "dev": true, + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "dependencies": { + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "dev": true + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true + } + } + }, + "d3-array": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", + "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", + "dev": true, + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "dev": true + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dev": true, + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "dev": true, + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dev": true, + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dev": true, + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "requires": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true + }, + "d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "dev": true, + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.1.tgz", + "integrity": "sha512-LtAIu54UctRmhGKllleflmHalttH3zkfSi4NlKrTAoFKjC+AFBJohsCAdgCBYQwH0F8hIOGY89X1pPqAchlMkA==", + "dev": true + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "dev": true + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "dev": true + }, + "d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "dev": true + }, + "d3-shape": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "dev": true, + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "dev": true, + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dev": true, + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dev": true, + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073647826&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "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.3.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz", + "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1610348716845&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" + } + } + }, + "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?cache=0&sync_timestamp=1606859943631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz", + "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", + "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=" + }, + "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=1610365857779&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.3", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz?cache=0&sync_timestamp=1590421084109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-7.0.3.tgz", + "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=", + "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&sync_timestamp=1606970975645&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.2.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-stream-5.2.0.tgz", + "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=", + "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=1617823583529&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?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-4.0.1.tgz", + "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "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=1617947695861&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=1617971613935&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=", + "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?cache=0&sync_timestamp=1601076849468&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdel%2Fdownload%2Fdel-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?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-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 + } + } + }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dev": true, + "requires": { + "robust-predicates": "^3.0.0" + } + }, + "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=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "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-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", + "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" + }, + "detect-node": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.5.tgz", + "integrity": "sha1-nScKp+qlrwtyxMnZuBTn9M5zi3k=", + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz", + "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=", + "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?cache=0&sync_timestamp=1618563954924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-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", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.3.0.tgz?cache=0&sync_timestamp=1605778245785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.3.0.tgz", + "integrity": "sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=", + "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", + "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz", + "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=", + "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.1", + "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.1.tgz?cache=0&sync_timestamp=1605129209848&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feasy-stack%2Fdownload%2Feasy-stack-1.0.1.tgz", + "integrity": "sha1-iv5CZGJpiMq7EfPHBMzQyDVBEGY=", + "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=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.2.tgz", + "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "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.723", + "resolved": "https://registry.nlark.com/electron-to-chromium/download/electron-to-chromium-1.3.723.tgz", + "integrity": "sha1-UnaadWNTQqTbKa9fHkC9Pa0CyHc=" + }, + "element-ui": { + "version": "2.15.10", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.10.tgz", + "integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz?cache=0&sync_timestamp=1612290724809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.4.tgz", + "integrity": "sha1-2jfOvTHnmhNn6UG1ku0fvr1Yq7s=", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1614682798745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz", + "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=" + }, + "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", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-4.5.0.tgz?cache=0&sync_timestamp=1618825588845&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.5.0.tgz", + "integrity": "sha1-Lzz9hNvjtIfxjy2y7x4GSlccpew=", + "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?cache=0&sync_timestamp=1570537376335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.2.0.tgz", + "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz", + "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=", + "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=", + "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.18.0", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.18.0.tgz", + "integrity": "sha1-q4CzWe7Lft5MKYAAOQvFrD7HtaQ=", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" + } + }, + "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" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602567230854&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz", + "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=" + }, + "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?cache=0&sync_timestamp=1618677309735&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.nlark.com/eslint/download/eslint-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.1.1", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1599933675196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz", + "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1617957623227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz", + "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.3.0.tgz?cache=0&sync_timestamp=1608469485280&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.3.0.tgz", + "integrity": "sha1-NxYsJfy566oublPVtNiM4X2eDCs=", + "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 + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-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?cache=0&sync_timestamp=1618335310789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-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=1618213533393&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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz?cache=0&sync_timestamp=1599933675196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-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?cache=0&sync_timestamp=1592222036938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.3.tgz", + "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1597435362955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz", + "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/espree/download/espree-6.2.1.tgz?cache=0&sync_timestamp=1607144055171&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.4.1", + "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1619285351874&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", + "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.4.0", + "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz", + "integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596641300398&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz?cache=0&sync_timestamp=1598898255610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesrecurse%2Fdownload%2Fesrecurse-4.3.0.tgz", + "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz?cache=0&sync_timestamp=1596641300398&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-5.2.0.tgz", + "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1596641300398&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.7", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517714257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz", + "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.3.0.tgz?cache=0&sync_timestamp=1614444838320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevents%2Fdownload%2Fevents-3.3.0.tgz", + "integrity": "sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=", + "dev": true + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041748498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz", + "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=", + "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&sync_timestamp=1606970975645&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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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&sync_timestamp=1585184242595&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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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=1616385328325&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=" + }, + "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=" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz?cache=0&sync_timestamp=1591599659970&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-3.1.3.tgz", + "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=" + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.1.2.tgz", + "integrity": "sha1-S2LEK44D3j+EhGC2OQeZIGldAVQ=" + }, + "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=1610876505711&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" + }, + "dependencies": { + "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" + } + } + } + } + } + }, + "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=" + }, + "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.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fecha": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz", + "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q==" + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-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?cache=0&sync_timestamp=1613794272556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffile-entry-cache%2Fdownload%2Ffile-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.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.nlark.com/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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-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?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.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?cache=0&sync_timestamp=1611059462226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.2.tgz", + "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=", + "dev": true + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" + }, + "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.14.0", + "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.0.tgz?cache=0&sync_timestamp=1619369184337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.0.tgz", + "integrity": "sha1-9dJg+VxfjBBYlEkf7uXciZO0Av4=" + }, + "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=" + }, + "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=1613410971123&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "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?cache=0&sync_timestamp=1611075413359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-extra%2Fdownload%2Ffs-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=", + "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=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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=" + }, + "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 + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz", + "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=", + "requires": { + "globule": "^1.0.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz", + "integrity": "sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=", + "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=" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz?cache=0&sync_timestamp=1612364352840&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.1.1.tgz", + "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-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=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gl-matrix": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.3.0.tgz", + "integrity": "sha512-COb7LDz+SXaHtl/h4LeaFcNdJdAQSDeVqjiIihSXNrkWObZLhDI4hIkZC11Aeqp7bcE72clzB0BnDXr2SmslRA==" + }, + "gl-vec2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/gl-vec2/-/gl-vec2-1.3.0.tgz", + "integrity": "sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==" + }, + "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=", + "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": "5.1.2", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.2.tgz", + "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "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?cache=0&sync_timestamp=1617957623227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobals%2Fdownload%2Fglobals-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?cache=0&sync_timestamp=1616407139482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobby%2Fdownload%2Fglobby-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" + } + }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.2.tgz", + "integrity": "sha1-2L3Z6eTu+PluJFmZpd7n612FKcQ=", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.6.tgz", + "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4=" + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "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" + } + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "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=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz", + "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "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?cache=0&sync_timestamp=1618558073716&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "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=" + } + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz?cache=0&sync_timestamp=1615461262702&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-bigints%2Fdownload%2Fhas-bigints-1.0.1.tgz", + "integrity": "sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz?cache=0&sync_timestamp=1614443577352&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.2.tgz", + "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=" + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "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", + "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.1", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + } + } + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-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": "10.7.2", + "resolved": "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.2.tgz", + "integrity": "sha1-iTGbhh7cZsSIVO0ebaIeqJ+Ec2A=", + "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.9", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.9.tgz?cache=0&sync_timestamp=1617826541967&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.9.tgz", + "integrity": "sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=" + }, + "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-entities": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.4.0.tgz?cache=0&sync_timestamp=1617031651212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-entities%2Fdownload%2Fhtml-entities-1.4.0.tgz", + "integrity": "sha1-z70bAdKvr5rcobEK59/6uYxx0tw=", + "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?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=", + "dev": true + } + } + }, + "html-tags": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz", + "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=", + "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", + "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.nlark.com/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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-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?cache=0&sync_timestamp=1584445172927&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-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?cache=0&sync_timestamp=1610159975962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.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?cache=0&sync_timestamp=1617915647514&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-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.5.3", + "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.5.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-parser-js%2Fdownload%2Fhttp-parser-js-0.5.3.tgz", + "integrity": "sha1-AdJwnHnUFpi7AdTezF6dpOSgM9k=", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz", + "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha1-Q3ANbZ7st0Gb8IahKND3IF2etmU=", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054842871&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz", + "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1600868555829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.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?cache=0&sync_timestamp=1584198706482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhuman-signals%2Fdownload%2Fhuman-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", + "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&sync_timestamp=1605801267950&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.2.1", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838209136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz", + "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", + "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?cache=0&sync_timestamp=1590809289115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-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=1608469485280&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?cache=0&sync_timestamp=1600349104815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-from%2Fdownload%2Fimport-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" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-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-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" + } + }, + "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 + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.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.nlark.com/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "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=", + "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=" + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.3.3.tgz", + "integrity": "sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz", + "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=", + "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.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-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=1617823583529&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.2", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "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.2.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ=" + }, + "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=1605885656632&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=1610365857779&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" + } + } + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "dev": true + }, + "inversify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.1.1.tgz", + "integrity": "sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==" + }, + "inversify-inject-decorators": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/inversify-inject-decorators/-/inversify-inject-decorators-3.1.0.tgz", + "integrity": "sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==" + }, + "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", + "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", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-any-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-1.0.0.tgz", + "integrity": "sha512-0o0ZsgObnylv72nO39P6M+PL7jPUEx39O6BEfZuX36IKPy/RpdudxluAIaRn/LZi5eVPDMlMBaLABzOK6bwPlw==" + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz", + "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-bigint/download/is-bigint-1.0.1.tgz", + "integrity": "sha1-aSMFHfy8dkJ4VAuc4OazITql68I=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-boolean-object/download/is-boolean-object-1.1.0.tgz", + "integrity": "sha1-4qqtOjqPyjTCj27uE1sVbtJYf/A=", + "dev": true, + "requires": { + "call-bind": "^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=1604429876103&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.2.3", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.3.tgz?cache=0&sync_timestamp=1612133072647&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-callable%2Fdownload%2Fis-callable-1.2.3.tgz", + "integrity": "sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=", + "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-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "requires": { + "has": "^1.0.3" + } + }, + "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", + "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?cache=0&sync_timestamp=1576729165697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "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", + "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-docker": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.2.1.tgz?cache=0&sync_timestamp=1617958843085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-docker%2Fdownload%2Fis-docker-2.2.1.tgz", + "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=", + "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=" + }, + "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-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123422635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz", + "integrity": "sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=", + "dev": true + }, + "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", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-number-object/download/is-number-object-1.0.4.tgz", + "integrity": "sha1-NqyV50HPGLKD/B3fXoPaeY4+wZc=", + "dev": true + }, + "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?cache=0&sync_timestamp=1615183730200&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-inside%2Fdownload%2Fis-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-3.0.0.tgz?cache=0&sync_timestamp=1618600535482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-3.0.0.tgz", + "integrity": "sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=", + "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.1.2", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.1.2.tgz", + "integrity": "sha1-gcjr3k2xQvLPHFP8htakV4gmYlE=", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "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-string": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/is-string/download/is-string-1.0.5.tgz?cache=0&sync_timestamp=1576732180884&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-string%2Fdownload%2Fis-string-1.0.5.tgz", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=", + "dev": true + }, + "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=" + }, + "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", + "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=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isnumeric": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/isnumeric/-/isnumeric-0.2.0.tgz", + "integrity": "sha1-ojR7o2DeGeM9D/1ZD933dVy/LmQ=" + }, + "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=" + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.1.0.tgz?cache=0&sync_timestamp=1618360204983&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjavascript-stringify%2Fdownload%2Fjavascript-stringify-2.1.0.tgz", + "integrity": "sha1-J8dlOb4U2L0Sghmi1zGwkzeQTnk=", + "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=1618267659406&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.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz", + "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha1-BvAzXxbjU6aV5yBr9QUDy1I6buU=" + }, + "js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, + "js-cookie": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz", + "integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg=" + }, + "js-message": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz?cache=0&sync_timestamp=1605129209185&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-message%2Fdownload%2Fjs-message-1.0.7.tgz", + "integrity": "sha1-+93QU8ekcCGHG7iyyVOXzBfCDkc=", + "dev": true + }, + "js-queue": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.2.tgz?cache=0&sync_timestamp=1605129207324&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-queue%2Fdownload%2Fjs-queue-2.0.2.tgz", + "integrity": "sha1-C+WQM4+QOzbHPTPDGIOoIUEs1II=", + "dev": true, + "requires": { + "easy-stack": "^1.0.1" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1618435151523&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz", + "integrity": "sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=", + "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=" + }, + "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-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=" + }, + "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=1609553748947&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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=" + }, + "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?cache=0&sync_timestamp=1573614722142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-stringify-safe%2Fdownload%2Fjson-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "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.2.0", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.2.0.tgz", + "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=", + "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?cache=0&sync_timestamp=1604161917513&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-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=", + "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", + "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=" + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "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" + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-5.0.0.tgz?cache=0&sync_timestamp=1618487916116&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless-loader%2Fdownload%2Fless-loader-5.0.0.tgz", + "integrity": "sha1-SY3eOmxsT4h0WO6e0/CGoSrRtGY=", + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + } + } + }, + "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" + } + }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" + }, + "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=" + }, + "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", + "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?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-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?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-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?cache=0&sync_timestamp=1610028023329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-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?cache=0&sync_timestamp=1584445172927&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-1.4.0.tgz", + "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=", + "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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "requires": { + "minimist": "^1.2.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=", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.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=" + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "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=" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz?cache=0&sync_timestamp=1618723151470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-2.2.0.tgz", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.1.tgz?cache=0&sync_timestamp=1606312223003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.1.tgz", + "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=", + "dev": true + }, + "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=1606867304538&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": "3.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz?cache=0&sync_timestamp=1587567576732&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" + } + }, + "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-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "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" + } + }, + "math-expression-evaluator": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.3.8.tgz", + "integrity": "sha512-9FbRY3i6U+CbHgrdNbAUaisjWTozkm1ZfupYQJiZ87NtYHk2Zh9DvxMgp/fifxVhqTLpd5fCCLossUbpZxGeKw==" + }, + "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.nlark.com/mdn-data/download/mdn-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 + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz?cache=0&sync_timestamp=1570537376335&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "9.0.0", + "resolved": "https://registry.npmmirror.com/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "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.4.1", + "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz", + "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=", + "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&sync_timestamp=1618054842871&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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.5.2.tgz?cache=0&sync_timestamp=1613584754851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.5.2.tgz", + "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4=", + "dev": true + }, + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.47.0.tgz?cache=0&sync_timestamp=1617306043996&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.47.0.tgz", + "integrity": "sha1-jLMT5Zll08Bc+/iYkVomevRqM1w=" + }, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.30.tgz?cache=0&sync_timestamp=1617340140598&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.30.tgz", + "integrity": "sha1-bnvotMR5gl+F7WMmaV23P5MF1i0=", + "requires": { + "mime-db": "1.47.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=1617823583529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmimic-fn%2Fdownload%2Fmimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.nlark.com/mini-css-extract-plugin/download/mini-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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-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", + "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=", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=" + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + } + } + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz", + "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=", + "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=" + } + } + }, + "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.4", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.4.tgz?cache=0&sync_timestamp=1595998554107&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminipass-pipeline%2Fdownload%2Fminipass-pipeline-1.2.4.tgz", + "integrity": "sha1-aEcveXEcCEZXwGfFxq2Tzd6oIUw=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "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" + } + }, + "ml-array-max": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.3.tgz", + "integrity": "sha512-49YwnLlAf4/E/VyezUz+SNfSBhPE8JTahxRPuyM9S9Uv+ft5x0C8A4trtkDgrttMxoxbhudTA1yg8zgJZaYtpA==", + "requires": { + "is-any-array": "^1.0.0" + } + }, + "ml-array-min": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.2.tgz", + "integrity": "sha512-yidQcOHFaGEuVr6FcwAn+QvKXJv1Lxel5fyKrO+aXGJGp97Mt+p8r21WYtikS/PTVbxdSrliQ0UK4wSHYHHgzQ==", + "requires": { + "is-any-array": "^1.0.0" + } + }, + "ml-array-rescale": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.5.tgz", + "integrity": "sha512-czK+faN7kYrF48SgVQeXGkxUjDEas6BA4EzF4jJNh8UEtzpSvHW3RllZCJCCyrAqeFc+Y/LhgYUzuHFpevM3qA==", + "requires": { + "is-any-array": "^1.0.0", + "ml-array-max": "^1.2.3", + "ml-array-min": "^1.2.2" + } + }, + "ml-matrix": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.8.0.tgz", + "integrity": "sha512-c29k/gtyzLeNs0vLB2u4hHYcKr8PdyIs4oB0OsVhlgKiHbYyFkC2e98FcUPKhcnzn234jeZk42No+6d4bXBDNg==", + "requires": { + "ml-array-rescale": "^1.3.5" + } + }, + "mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, + "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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" + }, + "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.2", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591931869&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz", + "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=" + }, + "nanocolors": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" + }, + "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.2", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz", + "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-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.10.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz", + "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "node-ipc": { + "version": "9.1.4", + "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.4.tgz", + "integrity": "sha1-Ks+WJoGv2sJgKHbZj+ZDTVTZvTw=", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.7", + "js-queue": "2.0.2" + } + }, + "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.71", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.71.tgz", + "integrity": "sha1-yxM0sXmJaxyJ7P3UtyX7e738fbs=" + }, + "node-sass": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-6.0.1.tgz", + "integrity": "sha512-f+Rbqt92Ful9gX0cGtdYwjTrWAaGURgaK5rZCWOgCNyGWusFYHhbqCCBoFBeat+HKETOU02AyTxNhJV0YZf2jQ==", + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^7.0.3", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "lodash": "^4.17.15", + "meow": "^9.0.0", + "nan": "^2.13.2", + "node-gyp": "^7.1.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1616087070459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" + } + } + }, + "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=" + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-url%2Fdownload%2Fnormalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, + "normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npm.taobao.org/normalize.css/download/normalize.css-8.0.1.tgz", + "integrity": "sha1-m5iiCHOLnMJjTKrLxC0THJdIe/M=" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "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=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" + }, + "number-precision": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/number-precision/-/number-precision-1.5.1.tgz", + "integrity": "sha512-JdTfhUHd1aUL4svSaJXlv3CKNz92js2z0+HS/9AX8euw+akompBz/QEZ7e3y7eTuJxvRqXBZP6mapUlTtLoTsA==" + }, + "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=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "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", + "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?cache=0&sync_timestamp=1608924025400&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-hash%2Fdownload%2Fobject-hash-1.3.1.tgz", + "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=", + "dev": true + }, + "object-inspect": { + "version": "1.10.2", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.10.2.tgz?cache=0&sync_timestamp=1618720187707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.10.2.tgz", + "integrity": "sha1-tjhaPit8rgter8+Qzd+F0Sh2fzA=", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz", + "integrity": "sha1-ud7qpfx/GEag+uzc7sE45XePU6w=", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "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.2", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115212739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz", + "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.2.tgz?cache=0&sync_timestamp=1613862016164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha1-G9Y66s8NXS0vMbXjk7A6fGAaI/c=", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "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.3", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.3.tgz?cache=0&sync_timestamp=1614057880937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.values%2Fdownload%2Fobject.values-1.1.3.tgz", + "integrity": "sha1-6qix4XWJ8C9pjbCT98Yu4WmXQu4=", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2", + "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=", + "requires": { + "wrappy": "1" + } + }, + "onecolor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.1.0.tgz", + "integrity": "sha512-YZSypViXzu3ul5LMu/m6XjJ9ol8qAy9S2VjHl5E6UlhUH1KGKWabyEJifn0Jjpw23bYDzC2ucKMPGiH5kfwSGQ==" + }, + "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.nlark.com/open/download/open-6.4.0.tgz", + "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz?cache=0&sync_timestamp=1598732839408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fopener%2Fdownload%2Fopener-1.5.2.tgz", + "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-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&sync_timestamp=1585966174718&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", + "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?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-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-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-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz?cache=0&sync_timestamp=1617947695861&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-finally%2Fdownload%2Fp-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "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=1606288362378&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "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=", + "requires": { + "p-limit": "^2.2.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?cache=0&sync_timestamp=1617001932295&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-retry%2Fdownload%2Fp-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.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=" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1610208860443&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?cache=0&sync_timestamp=1606867508847&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparam-case%2Fdownload%2Fparam-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parchment": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/parchment/download/parchment-1.1.4.tgz", + "integrity": "sha1-rt7Xq5OP6SHUw0vDOc4RaLwv/eU=" + }, + "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.6", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz?cache=0&sync_timestamp=1597167385396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.6.tgz", + "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.2.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.2.0.tgz", + "integrity": "sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "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=1595850971402&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": "6.0.1", + "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz?cache=0&sync_timestamp=1596089848278&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5-htmlparser2-tree-adapter%2Fdownload%2Fparse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-6.0.1.tgz?cache=0&sync_timestamp=1595850971402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-6.0.1.tgz", + "integrity": "sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=", + "dev": true + } + } + }, + "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", + "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": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=" + }, + "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=" + }, + "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=1617971613935&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=" + }, + "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=1601400247487&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?cache=0&sync_timestamp=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-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.1.2", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.2.tgz?cache=0&sync_timestamp=1617976842723&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpbkdf2%2Fdownload%2Fpbkdf2-3.1.2.tgz", + "integrity": "sha1-3YIqoIh1gOUvGgOdw+2hCO+uMHU=", + "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=" + }, + "picomatch": { + "version": "2.2.3", + "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.3.tgz?cache=0&sync_timestamp=1618050023150&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpicomatch%2Fdownload%2Fpicomatch-2.2.3.tgz", + "integrity": "sha1-RlVH81nMwgbTxI5Goby4m/fuYZ0=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=" + }, + "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" + } + }, + "pixrem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-4.0.1.tgz", + "integrity": "sha1-LaSh3m7EQjxfw3lOkwuB1EkOxoY=", + "requires": { + "browserslist": "^2.0.0", + "postcss": "^6.0.0", + "reduce-css-calc": "^1.2.7" + }, + "dependencies": { + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pleeease-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-4.0.0.tgz", + "integrity": "sha1-ZjKy+wVkjSdY2GU4T7zteeHMrsc=", + "requires": { + "onecolor": "^3.0.4", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "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" + } + }, + "polyline-miter-util": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/polyline-miter-util/-/polyline-miter-util-1.0.1.tgz", + "integrity": "sha1-tpPyOJ6g3tNqa89ezS7OS2kX2Vc=", + "requires": { + "gl-vec2": "^1.0.0" + } + }, + "polyline-normals": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/polyline-normals/-/polyline-normals-2.0.2.tgz", + "integrity": "sha1-oXN+ddjA3MsaWR+csn8J7vS30TU=", + "requires": { + "polyline-miter-util": "^1.0.1" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz?cache=0&sync_timestamp=1596019866852&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.28.tgz", + "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz", + "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", + "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.35", + "resolved": "https://registry.nlark.com/postcss/download/postcss-7.0.35.tgz", + "integrity": "sha1-0r4AuZj38hHYonaXQHny6SuXDiQ=", + "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=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-apply": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.8.0.tgz", + "integrity": "sha1-FOVEu7XLbxweBIhXll15rgZrE0M=", + "requires": { + "babel-runtime": "^6.23.0", + "balanced-match": "^0.4.2", + "postcss": "^6.0.0" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-aspect-ratio-mini": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-aspect-ratio-mini/-/postcss-aspect-ratio-mini-1.1.0.tgz", + "integrity": "sha512-ddD7k55Rez1La9tmyzZOlS6bAXF9EWpyXQz3eXScJfvcVmPsx33rOwVpN2d5ZRVOjAmkWgyOMV8sZ46rnIyiDg==", + "requires": { + "number-precision": "^1.3.2", + "postcss": "^7.0.6" + } + }, + "postcss-attribute-case-insensitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-2.0.0.tgz", + "integrity": "sha1-lNxCLI+QmX8WvTOjZUu77AhJY7Q=", + "requires": { + "postcss": "^6.0.0", + "postcss-selector-parser": "^2.2.3" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.5.tgz?cache=0&sync_timestamp=1609689176591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.5.tgz", + "integrity": "sha1-+KbpnxLmGcLrwjz2xIb9wVhgkz4=", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-function": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-4.1.0.tgz", + "integrity": "sha512-2/fuv6mP5Lt03XbRpVfMdGC8lRP1sykme+H1bR4ARyOmSMB8LPSjcL6EAI1iX6dqUF+jNEvKIVVXhan1w/oFDQ==", + "requires": { + "css-color-function": "~1.3.3", + "postcss": "^6.0.23", + "postcss-message-helpers": "^2.0.0", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-gray": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-4.1.0.tgz", + "integrity": "sha512-L4iLKQLdqChz6ZOgGb6dRxkBNw78JFYcJmBz1orHpZoeLtuhDDGegRtX9gSyfoCIM7rWZ3VNOyiqqvk83BEN+w==", + "requires": { + "color": "^2.0.1", + "postcss": "^6.0.14", + "postcss-message-helpers": "^2.0.0", + "reduce-function-call": "^1.0.2" + }, + "dependencies": { + "color": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz", + "integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-hex-alpha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-3.0.0.tgz", + "integrity": "sha1-HlPmyKyyN5Vej9CLfs2xuLgwn5U=", + "requires": { + "color": "^1.0.3", + "postcss": "^6.0.1", + "postcss-message-helpers": "^2.0.0" + }, + "dependencies": { + "color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", + "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", + "requires": { + "color-convert": "^1.8.2", + "color-string": "^1.4.0" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-hsl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hsl/-/postcss-color-hsl-2.0.0.tgz", + "integrity": "sha1-EnA2ZvoxBDDj8wpFTawThjF9WEQ=", + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.3.0", + "units-css": "^0.4.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-hwb": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-3.0.0.tgz", + "integrity": "sha1-NAKxnvTYSXVAwftQcr6YY8qVVx4=", + "requires": { + "color": "^1.0.3", + "postcss": "^6.0.1", + "postcss-message-helpers": "^2.0.0", + "reduce-function-call": "^1.0.2" + }, + "dependencies": { + "color": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", + "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=", + "requires": { + "color-convert": "^1.8.2", + "color-string": "^1.4.0" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-rebeccapurple": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-3.1.0.tgz", + "integrity": "sha512-212hJUk9uSsbwO5ECqVjmh/iLsmiVL1xy9ce9TVf+X3cK/ZlUIlaMdoxje/YpsL9cmUH3I7io+/G2LyWx5rg1g==", + "requires": { + "postcss": "^6.0.22", + "postcss-values-parser": "^1.5.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-rgb": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rgb/-/postcss-color-rgb-2.0.0.tgz", + "integrity": "sha1-FFOcinExSUtILg3RzCZf9lFLUmM=", + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-color-rgba-fallback": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-3.0.0.tgz", + "integrity": "sha1-N9XJNToHoJJwkSqCYGu0Kg1wLAQ=", + "requires": { + "postcss": "^6.0.6", + "postcss-value-parser": "^3.3.0", + "rgb-hex": "^2.1.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz?cache=0&sync_timestamp=1618056467443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-colormin%2Fdownload%2Fpostcss-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", + "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", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-cssnext": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-3.1.1.tgz", + "integrity": "sha512-u9e0CYE7zudnr/LK+FL02cwli8cQEwwmzzN3JVeOEZiDs0q8IDfGdI6C9FCkHtIKEEjY3AATW3dqCCvqDK+Sfg==", + "requires": { + "autoprefixer": "^7.1.1", + "caniuse-api": "^2.0.0", + "chalk": "^2.0.1", + "pixrem": "^4.0.0", + "pleeease-filters": "^4.0.0", + "postcss": "^6.0.5", + "postcss-apply": "^0.8.0", + "postcss-attribute-case-insensitive": "^2.0.0", + "postcss-calc": "^6.0.0", + "postcss-color-function": "^4.0.0", + "postcss-color-gray": "^4.0.0", + "postcss-color-hex-alpha": "^3.0.0", + "postcss-color-hsl": "^2.0.0", + "postcss-color-hwb": "^3.0.0", + "postcss-color-rebeccapurple": "^3.0.0", + "postcss-color-rgb": "^2.0.0", + "postcss-color-rgba-fallback": "^3.0.0", + "postcss-custom-media": "^6.0.0", + "postcss-custom-properties": "^6.1.0", + "postcss-custom-selectors": "^4.0.1", + "postcss-font-family-system-ui": "^3.0.0", + "postcss-font-variant": "^3.0.0", + "postcss-image-set-polyfill": "^0.3.5", + "postcss-initial": "^2.0.0", + "postcss-media-minmax": "^3.0.0", + "postcss-nesting": "^4.0.1", + "postcss-pseudo-class-any-link": "^4.0.0", + "postcss-pseudoelements": "^5.0.0", + "postcss-replace-overflow-wrap": "^2.0.0", + "postcss-selector-matches": "^3.0.1", + "postcss-selector-not": "^3.0.1" + }, + "dependencies": { + "autoprefixer": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", + "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", + "requires": { + "browserslist": "^2.11.3", + "caniuse-lite": "^1.0.30000805", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.17", + "postcss-value-parser": "^3.2.3" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "requires": { + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" + } + }, + "caniuse-api": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-2.0.0.tgz", + "integrity": "sha1-sd21pZZrFvSNxJmERNS7xsfZ2DQ=", + "requires": { + "browserslist": "^2.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "nanocolors": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.12.tgz", + "integrity": "sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug==" + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-calc": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-6.0.2.tgz", + "integrity": "sha512-fiznXjEN5T42Qm7qqMCVJXS3roaj9r4xsSi+meaBVe7CJBl8t/QLOXu02Z2E6oWAMWIvCuF6JrvzFekmVEbOKA==", + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.2", + "postcss-selector-parser": "^2.2.2", + "reduce-css-calc": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.38.tgz", + "integrity": "sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ==", + "requires": { + "nanocolors": "^0.2.2", + "source-map": "^0.6.1" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "requires": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-custom-media": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-6.0.0.tgz", + "integrity": "sha1-vlMnhBEOyylQRPtTlaGABushpzc=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-custom-properties": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-6.3.1.tgz", + "integrity": "sha512-zoiwn4sCiUFbr4KcgcNZLFkR6gVQom647L+z1p/KBVHZ1OYwT87apnS42atJtx6XlX2yI7N5fjXbFixShQO2QQ==", + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^6.0.18" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-custom-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-4.0.1.tgz", + "integrity": "sha1-eBOC+UxS5yfvXKR3bqKt9JphE4I=", + "requires": { + "postcss": "^6.0.1", + "postcss-selector-matches": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1618056386715&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-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?cache=0&sync_timestamp=1618056466816&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-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?cache=0&sync_timestamp=1618056467122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-empty%2Fdownload%2Fpostcss-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?cache=0&sync_timestamp=1618056643116&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-discard-overridden%2Fdownload%2Fpostcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-font-family-system-ui": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-family-system-ui/-/postcss-font-family-system-ui-3.0.0.tgz", + "integrity": "sha512-58G/hTxMSSKlIRpcPUjlyo6hV2MEzvcVO2m4L/T7Bb2fJTG4DYYfQjQeRvuimKQh1V1sOzCIz99g+H2aFNtlQw==", + "requires": { + "postcss": "^6.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-font-variant": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-3.0.0.tgz", + "integrity": "sha1-CMzIj2BQuoLtjvLMdsDGprQfGD4=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-image-set-polyfill": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/postcss-image-set-polyfill/-/postcss-image-set-polyfill-0.3.5.tgz", + "integrity": "sha1-Dxk0E3AM8fgr05Bm7wFtZaShgYE=", + "requires": { + "postcss": "^6.0.1", + "postcss-media-query-parser": "^0.2.3" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-initial": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-2.0.0.tgz", + "integrity": "sha1-cnFfczbgu3k1HZnuZcSiU6hEG6Q=", + "requires": { + "lodash.template": "^4.2.4", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.2.tgz?cache=0&sync_timestamp=1612742943575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.2.tgz", + "integrity": "sha1-xepQTyxK7zPHNZo03jVzdyrXUCo=", + "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?cache=0&sync_timestamp=1615479594964&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-loader%2Fdownload%2Fpostcss-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", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-media-minmax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-3.0.0.tgz", + "integrity": "sha1-Z1JWA3pD70C8Twdgv9BtTcadSNI=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=" + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.nlark.com/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", + "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?cache=0&sync_timestamp=1618056461770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-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.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1618835465519&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-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-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=" + }, + "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?cache=0&sync_timestamp=1618056643390&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-font-values%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056643449&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-gradients%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056463199&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-params%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056642735&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-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.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1618835465519&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-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.3", + "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz?cache=0&sync_timestamp=1602587682123&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-local-by-default%2Fdownload%2Fpostcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.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", + "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", + "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-4.2.1.tgz", + "integrity": "sha512-IkyWXICwagCnlaviRexi7qOdwPw3+xVVjgFfGsxmztvRVaNxAlrypOIKqDE5mxY+BVxnId1rnUKBRQoNE2VDaA==", + "requires": { + "postcss": "^6.0.11" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz?cache=0&sync_timestamp=1618056459740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-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?cache=0&sync_timestamp=1618056643528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-display-values%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056467755&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-positions%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056463480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056460506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056463876&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-timing-functions%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056643136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-unicode%2Fdownload%2Fpostcss-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", + "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", + "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?cache=0&sync_timestamp=1618056643317&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-normalize-whitespace%2Fdownload%2Fpostcss-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", + "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?cache=0&sync_timestamp=1618056462761&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-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", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-pseudo-class-any-link": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-4.0.0.tgz", + "integrity": "sha1-kVKgYT00UHIFE+iJKFS65C0O5o4=", + "requires": { + "postcss": "^6.0.1", + "postcss-selector-parser": "^2.2.3" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-pseudoelements": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-5.0.0.tgz", + "integrity": "sha1-7vGU6NUkZFylIKlJ6V5RjoEkAss=", + "requires": { + "postcss": "^6.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-px-to-viewport": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-px-to-viewport/-/postcss-px-to-viewport-1.1.1.tgz", + "integrity": "sha512-2x9oGnBms+e0cYtBJOZdlwrFg/mLR4P1g2IFu7jYKvnqnH/HLhoKyareW2Q/x4sg0BgklHlP1qeWo2oCyPm8FQ==", + "requires": { + "object-assign": ">=4.0.1", + "postcss": ">=5.0.2" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1618056460172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-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?cache=0&sync_timestamp=1618056643510&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-reduce-transforms%2Fdownload%2Fpostcss-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", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-2.0.0.tgz", + "integrity": "sha1-eU22+qVPjbEAhUOSqTr0V2i04ls=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-selector-matches": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-3.0.1.tgz", + "integrity": "sha1-5WNAEeE5UIgYYbvdWMLQER/8lqs=", + "requires": { + "balanced-match": "^0.4.2", + "postcss": "^6.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-selector-not": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-3.0.1.tgz", + "integrity": "sha1-Lk2y8JZTNsAefOx9tsYN/3ZzNdk=", + "requires": { + "balanced-match": "^0.4.2", + "postcss": "^6.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "postcss-selector-parser": { + "version": "6.0.5", + "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-6.0.5.tgz?cache=0&sync_timestamp=1618835465519&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.5.tgz", + "integrity": "sha1-BC104Tfbg+bylHEglstBP1qmEsQ=", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.3.tgz?cache=0&sync_timestamp=1618056461238&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-svgo%2Fdownload%2Fpostcss-svgo-4.0.3.tgz", + "integrity": "sha1-NDos26yVBdQWJD1Jb3JPOIlMlB4=", + "dev": true, + "requires": { + "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", + "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?cache=0&sync_timestamp=1618056643173&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-unique-selectors%2Fdownload%2Fpostcss-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", + "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=" + }, + "postcss-values-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz", + "integrity": "sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ==", + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-viewport-units": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-viewport-units/-/postcss-viewport-units-0.1.6.tgz", + "integrity": "sha512-uddXE6gtmuPwMICbZGSA4HijOGrUkUNacvCktXPB9lsM/bSq8aBkWUxfuPGDFLhdJYZTtCANzeQ/65fAfq+6Tw==", + "requires": { + "postcss": "^5.2.8" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-write-svg": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-write-svg/-/postcss-write-svg-3.0.1.tgz", + "integrity": "sha1-duSV1A8jIf8JtWSH4DhFr3N/gBo=", + "requires": { + "postcss": "^5.2.6", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + } + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "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", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", + "dev": true, + "optional": true + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.2.tgz?cache=0&sync_timestamp=1609589422297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-error%2Fdownload%2Fpretty-error-2.1.2.tgz", + "integrity": "sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y=", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "probe.gl": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.3.1.tgz", + "integrity": "sha512-RI6gxvEyTEdRMzT1np8HvbBOFNYQ0HwE3kZvK790tg/ldwFy7Qvs7cllz4MDT84QG2IMDUu7EsTXQX3qtzdx3w==", + "requires": { + "@babel/runtime": "^7.0.0", + "@probe.gl/stats": "3.3.1" + } + }, + "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", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" + }, + "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", + "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=" + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz", + "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=", + "dev": true + } + } + }, + "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=" + }, + "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=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz?cache=0&sync_timestamp=1616068686629&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?cache=0&sync_timestamp=1613399913000&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystring%2Fdownload%2Fquerystring-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.2.0", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597686864502&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz", + "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + }, + "quill": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/quill/download/quill-1.3.7.tgz", + "integrity": "sha1-2lsvOixHDpMjQM2/NmjJ8h+Shug=", + "requires": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-2.0.3.tgz?cache=0&sync_timestamp=1598517714257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + } + } + }, + "quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npm.taobao.org/quill-delta/download/quill-delta-3.6.3.tgz?cache=0&sync_timestamp=1586923056955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquill-delta%2Fdownload%2Fquill-delta-3.6.3.tgz", + "integrity": "sha1-sZ/SuJQSMBxg4f8hPY2GDqwPEDI=", + "requires": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + } + }, + "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?cache=0&sync_timestamp=1616914967500&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-5.2.0.tgz", + "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, + "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=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-3.5.0.tgz", + "integrity": "sha1-m6dMAZsV02UnjS6Ru4xI17TULJ4=", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + } + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz", + "integrity": "sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo=", + "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", + "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz", + "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.5.tgz?cache=0&sync_timestamp=1593557731525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerator-transform%2Fdownload%2Fregenerator-transform-0.14.5.tgz", + "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "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.1", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725679574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz", + "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&sync_timestamp=1592843197777&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", + "dev": true + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.1.tgz?cache=0&sync_timestamp=1600413501417&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.1.tgz", + "integrity": "sha1-LepamgcjMpj78NuR+pq8TG4PitY=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.2.tgz", + "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=", + "dev": true + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.9.tgz?cache=0&sync_timestamp=1616545067196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.9.tgz", + "integrity": "sha1-tInu98mizkNydicBFCnPgzpxg+Y=", + "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 + } + } + }, + "regl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/regl/-/regl-1.7.0.tgz", + "integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==" + }, + "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.5", + "resolved": "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.5.tgz?cache=0&sync_timestamp=1609588564953&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frenderkid%2Fdownload%2Frenderkid-2.0.5.tgz", + "integrity": "sha1-SDsaxZxmAaswp6WWpZZcq8z90KU=", + "dev": true, + "requires": { + "css-select": "^2.0.2", + "dom-converter": "^0.2", + "htmlparser2": "^3.10.1", + "lodash": "^4.17.20", + "strip-ansi": "^3.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 + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.4.tgz?cache=0&sync_timestamp=1617838546743&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frepeat-element%2Fdownload%2Frepeat-element-1.1.4.tgz", + "integrity": "sha1-vmgVIIR6tYx1aKx1+/rSjtQtOek=", + "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=", + "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" + } + }, + "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=" + }, + "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=" + }, + "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 + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz", + "integrity": "sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=", + "requires": { + "is-core-module": "^2.2.0", + "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?cache=0&sync_timestamp=1577797763257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve-cwd%2Fdownload%2Fresolve-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?cache=0&sync_timestamp=1613003016472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fret%2Fdownload%2Fret-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", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz", + "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=" + }, + "rgb-hex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-2.1.0.tgz", + "integrity": "sha1-x3PF/iJoolV42SU5qCp6XOU77aY=" + }, + "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" + } + }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==", + "dev": true + }, + "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" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.nlark.com/rxjs/download/rxjs-6.6.7.tgz?cache=0&sync_timestamp=1619574467996&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frxjs%2Fdownload%2Frxjs-6.6.7.tgz", + "integrity": "sha1-kKwBisq/SRv2UEQjXVhjxNq4BMk=", + "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=" + }, + "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=" + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.5.tgz?cache=0&sync_timestamp=1588596752763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-graph%2Fdownload%2Fsass-graph-2.2.5.tgz", + "integrity": "sha1-qYHIdEa4MZ2W3OBnHkh4eb0kwug=", + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880249159&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682798745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "requires": { + "locate-path": "^3.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=" + }, + "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=", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.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=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "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=" + }, + "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=1618558821529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "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?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sass-loader": { + "version": "10.3.1", + "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-10.3.1.tgz", + "integrity": "sha512-y2aBdtYkbqorVavkC3fcJIUDGIegzDWPn3/LAFhsf3G+MzPKTJx37sROf5pXtUeggSVbNbmfj8TgRaSLMelXRA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "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.7.1", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz", + "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "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.8", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.8.tgz?cache=0&sync_timestamp=1600186088899&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.8.tgz", + "integrity": "sha1-DRcgi30Swz+OrIXEGDXyf8PYGjA=", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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=1613584754851&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-4.0.0.tgz", + "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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=" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.nlark.com/set-value/download/set-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", + "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", + "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", + "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=" + }, + "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=", + "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=" + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz?cache=0&sync_timestamp=1618384508676&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-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?cache=0&sync_timestamp=1618555008681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsnapdragon%2Fdownload%2Fsnapdragon-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&sync_timestamp=1607566580543&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?cache=0&sync_timestamp=1607433905701&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-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", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.21.tgz", + "integrity": "sha1-s0/7mOeWkwtgoM+hGQTWozmn1Bc=", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.5.1.tgz?cache=0&sync_timestamp=1616686612247&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.5.1.tgz", + "integrity": "sha1-JWkI9tWt+5Tau9vQLGY2LMoPnqY=", + "dev": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566580543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz", + "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&sync_timestamp=1618600535482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + } + } + }, + "sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "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=" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-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=1587719289626&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.1", + "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.1.tgz?cache=0&sync_timestamp=1612210508484&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-url%2Fdownload%2Fsource-map-url-0.4.1.tgz", + "integrity": "sha1-CvZmBadFpaL5HPG7+KevvCg97FY=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz?cache=0&sync_timestamp=1590189321962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-correct%2Fdownload%2Fspdx-correct-3.1.1.tgz", + "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=", + "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", + "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=" + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.7.tgz?cache=0&sync_timestamp=1606610972490&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.7.tgz", + "integrity": "sha1-6cGKQQ5e1+EkQqVJ+9ivp2cDjWU=" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz?cache=0&sync_timestamp=1585970558936&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=", + "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.2", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.2.tgz?cache=0&sync_timestamp=1617826842740&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.2.tgz", + "integrity": "sha1-FXk5E08gRk5zAd26PpD/qPdyisU=", + "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=" + }, + "stackframe": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz", + "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=", + "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=1609653993999&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz", + "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "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?cache=0&sync_timestamp=1618430770209&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-http%2Fdownload%2Fstream-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.2", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1618558821529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz", + "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha1-51rpDClCxjUEaGwYsoe0oLGkX4A=", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz?cache=0&sync_timestamp=1614127232940&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.4.tgz", + "integrity": "sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "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?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "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=" + } + } + }, + "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.1", + "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz?cache=0&sync_timestamp=1594567635822&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-json-comments%2Fdownload%2Fstrip-json-comments-3.1.1.tgz", + "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz?cache=0&sync_timestamp=1618056470636&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstylehacks%2Fdownload%2Fstylehacks-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.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1618835465519&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-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" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-3.0.2.tgz", + "integrity": "sha1-J6cGQgsFo44DjnyssVNXjUUFE8Y=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "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=1616929367791&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.nlark.com/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?cache=0&sync_timestamp=1614682798745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-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=1618558821529&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?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-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?cache=0&sync_timestamp=1607088859616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.nlark.com/terser/download/terser-4.8.0.tgz", + "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=", + "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.5", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=", + "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": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-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": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-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" + } + }, + "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=1587567576732&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" + } + }, + "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" + } + }, + "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 + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-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": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "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 + } + } + }, + "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.1", + "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz?cache=0&sync_timestamp=1592413466879&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthenify%2Fdownload%2Fthenify-3.3.1.tgz", + "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=", + "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", + "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + }, + "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?cache=0&sync_timestamp=1593480386934&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrough2%2Fdownload%2Fthrough2-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.12", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.12.tgz", + "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=", + "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=" + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz?cache=0&sync_timestamp=1592843137359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftmp%2Fdownload%2Ftmp-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", + "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=", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz", + "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=", + "requires": { + "glob": "^7.1.2" + } + }, + "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", + "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.14.1.tgz", + "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=", + "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=", + "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=1581365004105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/type-check/download/type-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?cache=0&sync_timestamp=1618335310789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz", + "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=" + }, + "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?cache=0&sync_timestamp=1616364009866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-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 + } + } + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz?cache=0&sync_timestamp=1616706302651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funbox-primitive%2Fdownload%2Funbox-primitive-1.0.1.tgz", + "integrity": "sha1-CF4hViXsMWJXTciFmr7nilmxRHE=", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "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?cache=0&sync_timestamp=1583948593703&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funicode-match-property-value-ecmascript%2Fdownload%2Funicode-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=1583945817604&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=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "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" + } + }, + "units-css": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/units-css/-/units-css-0.4.0.tgz", + "integrity": "sha1-1iKGU6UZg9fBb/KPi53Dsf/tOgc=", + "requires": { + "isnumeric": "^0.2.0", + "viewport-dimensions": "^0.2.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-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?cache=0&sync_timestamp=1616088950015&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funset-value%2Fdownload%2Funset-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&sync_timestamp=1606859943902&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.4.1", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237641463&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz", + "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=", + "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?cache=0&sync_timestamp=1602252594253&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-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.5.1", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz?cache=0&sync_timestamp=1613660079745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.5.1.tgz", + "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=", + "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", + "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=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz?cache=0&sync_timestamp=1610159975962&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.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 + }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + }, + "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=1607460081656&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz", + "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.3.0.tgz", + "integrity": "sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=", + "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=", + "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", + "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "viewport-dimensions": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz", + "integrity": "sha1-3nQHR9tTh/0XJfUXXpG6x2r982w=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "vue": { + "version": "2.6.12", + "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz", + "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" + }, + "vue-axios": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/vue-axios/download/vue-axios-3.2.4.tgz", + "integrity": "sha1-IzQVjbisKg9gOqQxwmJvv212ZyQ=" + }, + "vue-demi": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.7.5.tgz", + "integrity": "sha512-eFSQSvbQdY7C9ujOzvM6tn7XxwLjn0VQDXQsiYBLBwf28Na+2nTQR4BBBcomhmdP6mmHlBKAwarq6a0BPG87hQ==" + }, + "vue-eslint-parser": { + "version": "7.6.0", + "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.6.0.tgz", + "integrity": "sha1-AeoaKTL1gf8kQzZWXXEoAfj3JWE=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.0.0", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz?cache=0&sync_timestamp=1599933675196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-scope%2Fdownload%2Feslint-scope-5.1.1.tgz", + "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=", + "dev": true, + "requires": { + "esrecurse": "^4.3.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", + "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=", + "dev": true + }, + "vue-json-editor": { + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/vue-json-editor/-/vue-json-editor-1.4.3.tgz", + "integrity": "sha512-st9HdXBgCnyEmmfWrZQiKzp4KuYXzmYVUNDn5h6Fa18MrrGS1amnyUFyv7hQFsNBDW27B7BKkdGOqszYT1srAg==", + "requires": { + "vue": "^2.2.6" + } + }, + "vue-loader": { + "version": "15.9.6", + "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.9.6.tgz?cache=0&sync_timestamp=1616796537201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-15.9.6.tgz", + "integrity": "sha1-9Lua4gw6g3CvPs8JuBJtOP/ba4s=", + "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", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-quill-editor": { + "version": "3.0.6", + "resolved": "https://registry.npm.taobao.org/vue-quill-editor/download/vue-quill-editor-3.0.6.tgz", + "integrity": "sha1-H4VkYhHWijGoCnLLf0W7LxGbyPs=", + "requires": { + "object-assign": "^4.1.1", + "quill": "^1.3.4" + } + }, + "vue-router": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.5.1.tgz?cache=0&sync_timestamp=1617697726574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-router%2Fdownload%2Fvue-router-3.5.1.tgz", + "integrity": "sha1-7fPPSQeVLR4Fg+B5I3Igxf9utsk=", + "dev": true + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz?cache=0&sync_timestamp=1614758693102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-style-loader%2Fdownload%2Fvue-style-loader-4.1.3.tgz", + "integrity": "sha1-bVWGOlH6dXqyTonZNxRlByqnvDU=", + "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", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + } + } + }, + "vue-template-compiler": { + "version": "2.6.12", + "resolved": "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.12.tgz?cache=0&sync_timestamp=1597929391082&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-template-compiler%2Fdownload%2Fvue-template-compiler-2.6.12.tgz", + "integrity": "sha1-lH7XGWdEyKUoXr4SM/6WBDf8xX4=", + "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 + }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.6.2.tgz", + "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE=" + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.5.tgz", + "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz?cache=0&sync_timestamp=1617747494189&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fanymatch%2Fdownload%2Fanymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299293319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719440699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.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.46.0", + "resolved": "https://registry.nlark.com/webpack/download/webpack-4.46.0.tgz", + "integrity": "sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=", + "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.5.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.7.4", + "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", + "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.9.0", + "resolved": "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.9.0.tgz", + "integrity": "sha1-9vlNsQj7V05BWtMT3kGicH0z7zw=", + "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.19", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1619285351874&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz", + "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=", + "dev": true + } + } + }, + "webpack-chain": { + "version": "6.5.1", + "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.5.1.tgz?cache=0&sync_timestamp=1595813159674&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-6.5.1.tgz", + "integrity": "sha1-TycoTLu2N+PI+970Pu9YjU2GEgY=", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.3.tgz?cache=0&sync_timestamp=1610718844043&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.3.tgz", + "integrity": "sha1-Bjk3KxQyYuK4SrldO5GnWXBhwsU=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.11.2.tgz?cache=0&sync_timestamp=1617728097691&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.11.2.tgz", + "integrity": "sha1-aV687Xakkp8NXef9c/r+GF/jNwg=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "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 + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz?cache=0&sync_timestamp=1617747494189&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fanymatch%2Fdownload%2Fanymatch-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" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299293319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1610719440699&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" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1604880249159&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682798745&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597169956258&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.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" + } + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.nlark.com/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" + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "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-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-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" + } + }, + "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 + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-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" + } + }, + "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=1618558821529&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" + }, + "dependencies": { + "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 + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-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.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1618847145907&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553388833&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz", + "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz", + "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=", + "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?cache=0&sync_timestamp=1615477461878&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-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=1608705461067&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?cache=0&sync_timestamp=1603965313080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-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.4", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.4.tgz", + "integrity": "sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz", + "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npm.taobao.org/when/download/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "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-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "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=" + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "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": "7.0.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz", + "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz", + "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=", + "dev": true, + "requires": { + "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.nlark.com/wrappy/download/wrappy-1.0.2.tgz?cache=0&sync_timestamp=1619133505879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrappy%2Fdownload%2Fwrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "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", + "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.3", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.3.tgz", + "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=" + }, + "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 + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.nlark.com/yargs/download/yargs-16.2.0.tgz", + "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-7.0.4.tgz?cache=0&sync_timestamp=1604880249159&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-7.0.4.tgz", + "integrity": "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-5.0.8.tgz", + "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-20.2.7.tgz?cache=0&sync_timestamp=1615405185480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.7.tgz", + "integrity": "sha1-Yd+FwRPt+1p6TjbriqYO9CPLyQo=" + }, + "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?cache=0&sync_timestamp=1590421084109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-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&sync_timestamp=1606970975645&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?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stream%2Fdownload%2Fget-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 + } + } + }, + "zrender": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.1.tgz", + "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + } + } +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..cd12fb9 --- /dev/null +++ b/web/package.json @@ -0,0 +1,72 @@ +{ + "name": "web-home", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@antv/g6": "^4.2.7", + "@antv/x6": "^1.30.1", + "@antv/x6-vue-shape": "^1.3.1", + "@vue/composition-api": "^1.4.9", + "axios": "^0.21.1", + "core-js": "^3.6.5", + "cssnano": "^5.0.8", + "echarts": "^5.3.2", + "element-ui": "^2.15.10", + "js-base64": "^3.7.2", + "js-cookie": "^2.2.0", + "less-loader": "^5.0.0", + "lodash": "^4.17.21", + "node-sass": "^6.0", + "normalize.css": "^8.0.1", + "postcss-aspect-ratio-mini": "^1.1.0", + "postcss-cssnext": "^3.1.1", + "postcss-px-to-viewport": "^1.1.1", + "postcss-viewport-units": "^0.1.6", + "postcss-write-svg": "^3.0.1", + "sortablejs": "^1.14.0", + "vue": "^2.6.11", + "vue-axios": "^3.2.4", + "vue-json-editor": "^1.4.3", + "vue-quill-editor": "^3.0.6", + "vuex": "^3.1.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "babel-eslint": "^10.1.0", + "d3": "^7.4.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^6.2.2", + "sass-loader": "^10.0", + "stylus-loader": "^3.0.2", + "vue-router": "^3.5.1", + "vue-template-compiler": "^2.6.11" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": { + "no-unused-vars": "off" + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/web/postcss.config.js b/web/postcss.config.js new file mode 100644 index 0000000..aaf07fa --- /dev/null +++ b/web/postcss.config.js @@ -0,0 +1,14 @@ +module.exports = { + plugins: { + autoprefixer: {}, + "postcss-px-to-viewport": { + viewportWidth: 1920,//视窗的宽度,对应的是我们设计稿的宽度 + viewportHeight: 1080,//视窗的高度,对应的是我们设计稿的高度 + unitPrecision: 5,//制定‘px’转换为视窗单位的小数位数(很多时候无法整除) + viewportUnit: 'vw',//指定需要转换成的视窗单位,建议使用vw + selectorBlackList: ['ignore', 'tab-bar', 'tab-bar-item'],//指定不需要转换的类, + minPixelValue: 1,//小于或等于‘1px’不转换为视窗单位 + mediaQuery: false//允许在媒体查询中转换为‘px’ + } + } +} diff --git a/web/public/index.html b/web/public/index.html new file mode 100644 index 0000000..3e5a139 --- /dev/null +++ b/web/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/web/public/实例数据.zip b/web/public/实例数据.zip new file mode 100644 index 0000000000000000000000000000000000000000..5526b86f86675e2bb8f1027769b541a3e48b6cb3 GIT binary patch literal 1302626 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 ?k=%=QGz^PoHFKw;HP#TXS{%R)Gl= z9!3KwIDopR>l;erSb;S`mpyBY<_RyF&JtlPohQgxI^{M1G}Ctzf>NWg(oG17O;~K; zN1Gy$tfu~Pymr%E*#8Bahl?T0Gv{n%~Ig?rhIo_|wRK zDLik)Vig9!Ia~0wET*{>+VsGNV#p%%(vEYVmp%P*B*u>sjRTJhjRTIwt_Mu-ilfoW zUgFSr6F(i0rG^?HPYpG|1TTgfijZzVsI8|X`EEd{Mx-H0Hzlma>Of8ua7qzrk)foe z6zO1|$G=%d$9;C~*vZMslgIxu{p#yA->(HDJFA|KUuO11q_m#$=UUpd<@L(PZ27+O zu|L2AmLDML5R1vnRc)PHXwEufiZH-8jPQ4h#z1lyKLX=9@WD%GvaTiIEc}#90`~>g>4{IXsel ztEd(mb+G|?M#w5wp!8}iPlUa(ItS{E*npbabJ-(gYxL7>!Vtt-7^-`L8 zc5QrOa^k%YrzXZuPn|tEH8FMe_~iJ}18>yA(A&Rrz9RHayuVjQ-l=22%MaS^q&T*d z74mN~GIF5Xej^WQ0}i@P8*q*NHyb95=5zQmgCq=dK8G$P`10om;{w$nfVxD3 z;pTJJ3arAsK#=E4s(PVHvrZ7Orb_B6rJ|cn!JH|n zsj_=CUodA%k#?qJaa#(A-pw5p2WerZWX*Az&XgG73jNr6_>0nGZ(fO291{XK5NHD2 z@7<5qH7mtkO3(VP>Dz>1zwbhgi>f!-3TWLImgJA zFcCN@H3dS+DHH02+4 z&E*@NJLKE({fqUvBgfC2otQfQ!O7#@^&%@?c?h;ZcRd7KCVm{*9IOlv!6I+VYda6@ zW-lh5_ezRh)1{-}Q6{6nK^%O>aQll6tPo#d^^-FMbX3JM#~&~RjI~)hu%9?ToD{@18kfUdXE+G*|j|!Y5^%H_RIIQOP96WJVyGD(^C^4{%vA%a{Sf(u`g=j=$pW=M?oJQnQ*q3 z*0S&GrDR%hwkA-}?V3QD4p?at8?l(6D?$_K){pU;@Wg9pj=y_Cg|h$x2Zss*2V~a+ zrZuPJm~;fEY(o6c!Hs35iYP&15#HI z5;xThp}N}<6bLoLcfABJ4nR8`pH*NRq6NgYU4YZMGoN?QFu;6v?X8LTCh`f�Q5& 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
  • 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

    1+c}n2I1uL1Th+k16-to0sO+( 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

    mu91=WPv*S{ z6_>4)#+Xy3uru@tI>Ia$6^1VIpBM_yUZXX&3WV%8n(@n@he`euP83C72Z{FpT3QFo z^aL7X$(FeM;<)k+!4ga8b^Mk&iRKkTFZp-zIgc)0c}B{{sB7izDRN5ASru^U3cU2@ zTOYwn-LJ6`xkF3~#>ao*H6^r`t=f5WaxR(;TXGK6PSNKxLF*I6=kKc3Zg>B5o42D@ zGQM>%Cp(t`HnpswtnDBX@df=<dqdC?=7kaSgO1MWOUYpXOzo8xK{_Dvr$_uv#}vvrWQ>BiGFvh1PaT#Qh;MO9KNZ zU1&fBm_(ER1@1Hnw1C#^3MFPoRZ(b^iYt)x>CJsQFmc=RrHPOgI@H5#Uq?w{>(Rz^ z%Z81gY2$kObo6YU*>t7V@>S68)UK>(sk|-Vi;Bsh6nfbt2P0rsMutxM@W6hv5~)w9 z=N$$wLU;5I+&LN(&O|%b!9Q1E#?Vc|T(7;c>RIbm()wL$tg{-f0^FC`_`BEI&9Ms} z&LKFE`3>wT$GOk+s@zp3}VJ#mhHp>0xWy=(1Q8DxS!?tq! zU)#AFgf~r(qx=`{SW*G^`#3o`c|3nwbkewR5my@0N@o^nvQ$ya7$d7iDNdVANnNSD zt|mordD(wHx*K2F-=PbmL#zA?S3%|mr)xdohC2wgbD*a5ySrkLJfg7Rs9|<+Zh3XO z8=`WKkH+_{uya7A@54Z=E0T(Yf^kPQ_}kg%d_NvLn_V`sz#cKZE9wr;r!KhU)I2H} z#rEJc0d;pV?sjSLbg7gcdMn7=`5Vl4fle2^O*ULISq$yb>)hO@Cvd#rZvv>XhFYAX zr@cWQSWjsuLz6LsZ*hVAt)Hw8?0QqPT6VL&>bNpZj=`hI=MBe8GS7tz4U~e9l=WNf z)$h5NX?B=o=^&1Yot7R=XMXk3E$&BaPvrwVx+^Rk_{(v9FKhL~{9}8nZ&&Ww^K%1H zC1r^3u1E2Ae}}L{KKNczXyCXjL%6dAVmdnylTyt8r8kGyQ+skL`RDHW;A($n9BS{4 zPzn$)VR8OFV!j*YH}8H$9tAe_!xIzp>GTnXxoJOcSm;tb{InV+2QK8vU&5uGJl`_u z$@U>{bo^Lr8S7QES_M9#T&T+ zZ2rK})e&p;EEnnpkeg-5J%c?JLvd6d116yP!g(R|!_(;58g-QK=@I6V6jTD1;|6Xc zlUb_^=!l=Ow-f!`fY=ShD-gTS-o2ojsjT2e*ricE?)KfU3^837QB&<=TTYc)<@YUt<+hCp=UtP@n`JNp}ed5dFS#$gOlx}2y1G29| zORdDCTfxhbTNJ-2;-OxX@KX0Bc%C$1oH(?(NtYLxZOHfD}!KS(% z9SO6%QYG`QE~mrn)yC@;Av4+)eGR%bKd+avlU7%D+7lU3W*_%|HC_2v z(`hhBqDn0}YnYu~G;;@MP#uDqNvST!uGOZ8o6&{}RnUgKE@`5Ps+u?nYe0}i*q2e% z=F2K?@EchqN1v({IBV@-J@tRC(FQm}4zy+K?LWuUc`G6U3eCFn5_nV24wDMY_NK-k zO}E?lZ>!D+o4+1TmV85Hvq0LO-38IJ;YjVH&wHjB_gH+4pRL@R720j6o7H64Qcu`w zuy1yF-Jh!<2P(awW|)H0RB~vulim+AF558Hv zt0}aaER9%KWuBbgF%RzF9|><(*Huzc23q2UqkzoO#`Pm8LKMt_SQJfdYB$NkL;=Z}j|hljwdj3D>YuheF`^CEXZ z{_lP)4x)Cq$T=9msfGyt_4%!slJ65RJ=FoBGIKV-%+_GDbs_bvz?iRkKkw<|2|v`I zi^l7hmC#Rq88oVLzE!w3(!C!(t{>l@o0HQRgWc0XU%M5_bg|#OJntV{Utj$@3;P!_ zAC0Epc5cV+up+|@yvZP*G-pZ@c|(h#pRh|k|4I|2cR>2CR=+G=yxte9nO23yZjF8o zg=IzG^9ntXa0h{Q&7Px)ZF5TC9 zR3|RYQnXv;R6mqXk^xa0Bm=LnL;wWL^8Yi1H#AOp(in?4sKS{L?M@IOv4|twM-O+EFy!po?iyYPaDLG!KcRJavP-%HECgMug56 zL7E%@e1!!05ixs!7y)XObzX4K5bJ_3$T$!2RClC5+4h#5>WY!ARrr#5%8Hd}BfrwF zScy}`8Ez6VQnFMLT=++tyQ0(Z3Sud_1_+j;yqKmET(t0OndzniMiHv9d`Mj>0wq(j zYE9X&*&q`w4eJQVo~{Hps@PtO<1a;G!mc8xVsanNG4&AY_&W1%v_4Ey!-CT3b-8h8 zBBy+)OqxX0L_KN(*+{try^yhT>yFc3gEK}Zl(qYhe1ur}%#raSwGmrS6_s~EbSfK=h!sY z@L@w(OJ|CUiYrBk8R)H&;9;8dEL4NE1GZC2^66olu$C=&DefJa`Qmlo8ib97js?a# zqah5^$!t$eOHGHx;rpqa8y=1vF0^GS$VGJ(BDt>Hm*rX$4;)Q;tz3Z{Din;%TS)99 zDmoqpc}vS`f?Lh z++CEcJT|^Kl8j-vNv-lf^Xq5=*jo81wG?&TV5NPioH}Yyb+5#V@F5h1i0M(1^o;7| z=)-YF$c0lHs#(#n+~U`J#)mMhAC1UHch!Os_cjOnYbhA^ccv<;e$^8fwZp&D!9}f# z_E+;pWiL)2ci79FOO-jJ-Rs#$`t=aCD|le##m9_SNC52hfSjeF7FSlCDKHsGkvMRlvS~~8`J@-c6K9`{w}~o-{J#)VQUd@yy&cmZ}$RUzn^^ADE{K8#UByR+leCz zI6xSy4UJ}XHy@`TETThyx<6sc*^Q4nvh5bR_|Lm@J|!4eUnI+K#?9P zQhyev478fJ5mn3e?DV-#nHiit0n-I%P5lUT2dP&dE&(4Qw)hV`AorQ@qWyT#Ww^ig0!~WQLQv!Dwh=|^n z&s$+%LbwZXBgo74je>+~BQR&>;m7?E*4>MzXkx87saX}0yaz)JN6bi?-~mL3!iTT4 z!O2Q4b*GTes;nv>ZvVHXP$QqW_ihu!9*GVLrJHvVtWcvElsbx8D}gIiD^a8VyY~ED zQ^6r&_i+pEa)K8PRk~v*6;PwQUJR!r>QOovPK38AANZ3%ZYP;DAswy8ggx~5abtfI zPMAr{mzhhfbf_yrIZ3Pt+Spa=!Z)cpNUTuOjB6&7XjC>5Td|}X!wo#97*B_B^7kXz zC|_8>swSEvUs}kNuz#GA>rbB`>W5z*7u7Uu^$}fn-~cbz^tLO~=vLqG?DRZ4dR?n_ zx3KD_<+^J=9Nl;~6!9b~y!)R|xaacgV0=z*g1=y(oXdiWu>$6(E}G`!zI|K^x$Mkj2168=0fY*gkxn)$=Wzh zHO2pfNt{d#<(ugMMFQ>@24e{Tl;H?C6 zh+&ML`RQxO1cq+O-1t45VPt||XeuyTX&@-iYOVCW1RwZF$;Kt%QEF^hV#(~msse!z z?H>jo)$)Q^m5MW?s!$fys)AUe;YW@I-ZbJE2XE{@40ZQ3S~w4*6|j>Er82T0o14HpPil8>=!$>;sPB$6L^p;evYSE|##q4|}K zkrWZ5;oqghG4D(gl?Y2rLnPBF1%2QZ z^}}`Bdii3E$6v)i6}rii`HXKGWzxQ=Ye#1J>~9+6vc9Mh&uFNT!UjK1@nu(juKEcA z8h2{RIxnEJGpG^HLQl@SO^0I`^HPIhu3bXj`>;Ak{g71n(-E3JE{>$gMN z51u!09$D&L8KlM0CuEz`VoCogOp`g5cM|#P_puoyABO$!%FJ| z=NjnGE|}u6QzaStQ)oR`6O;K6R~`+^+L?`dV|iU8j=0)ru)u2aa{op-B2rW)k^} z{L-K>5YIB*uEsuLy*Yu*{llGopRoMXCy6d$;|kuY>VW6e4vmuNS+=Ov>vfDDt-VGi zA{X0!vp~@PkJ&o`p{@cBG2=vK&=h0qqA=MB?k84?xI6F#JjS*%V^5u8Z+pW}^s1*1 z%G%D0dH{`gzK)wesD6AP8D`>vc142$waPkuiXm2j;xMdH`9Wy?lDS{s2Y%hyy${Ww zr~o7#G~+nP6-w+rX~n{L%;>}ho!CLBTXqldNk>%$>@16aHZTvyR&S!hYANIpjNDoD zfT>|P9zZdIB2-J11bk|cZyYPn?S^Bs(Fah?3h7Z}(YD>1w#cR=*m0KeZx*ntu&_}K zR~xNcZ1IAc(}9XAddRQ^R>U=qx0m~ zJ(bF=yD93bfkF;eG6yJAc-2FKzMw1P%Ft9-rJyPm=q;YQit3hT@!-3Q>Nq1j4Sb%~ z0?XaVm?=vWm9iXRPIW{-jbxxIjS0DSU*Fm}ybhnfo|PN#D?7F9c5gT~rQs)$S-Rq7 z6@X)dj2))Zl#_sLSv*)SlF7iGeL0#L-!d)VF7;%$v8(y8x7}4}W>%>#pBjfHh+QZi z2cKVBv#zhrfPSry2bD6Kvb?#Lj#R(!FL8|f0E`M{fCh71Hn9`vcGEo8YIrQ z?)nikth`(tf!sFgg490&)@3dGFTaSVQSNwoc$}{) zWp*_dchwG0hTD}DMA>bu2c)}YJvA>SHS{Jnga3)-m-@Mdl~x&TNA9Mi<1^!>ioC8n zHUy~i5)wk-Xgx_e-{vu*c?j;~Du#>YV zv99C13lg6IX@4_CwSQ8Pp+h=_s2LoBlXdLb^{j*^SE|U^z&PG{E{96%=P@`nC_cFl zBxJZH#$TM@+^yUO37bQX%8mq~3&>(U<_sKm+D$pI)og8h)yq-ol<91xeU)7Lk|4>+}NsNEEDMmB?jcX%hGJD>8rG1d=mPjUpH4=*sl2K?+)PB!O1G&J7N06+so{H`8a%(Q zk5qjVPas_q$%2l32+^tS@VICbQ2!hbwJf&@f5%&FYbWA!bplgg1vlBI;Rss{h-Uz; z6|Lz6IVsbDGZx9?9X~pg`$sBrS+M{92?M~BEq8Cj52@~fZfk0fl;4Bn*(2Fk^m}2`VdLex2JoAzhlrp|kbsWZ1bSz1b&>7Vpk39ODab+020nEqnOffD^bD^5dNVcN z?RKJWbE;EPU8UTj*Np-&tOEjE8=S%+!EmD&u5N5cE7b?@+*N}O_H5DwTC!<~k?SDA z)_|>?I$%{NYb%OhrXR=Ku|5vV*vTj6chD)soPR-zm;U z8M^SzG_?BQIV~tOiB~1K+VBYBAHSLqIgmGhw&+J1d`_N`GEDdb;bs z4t`tkjO2WIC$tp`zJwB?a1u#|xRihA7xXvA>B&|rx6UZL^;FO3W|22L#rM7)#fnK@ z8bGXRuBzd58PS7e8wVBX)6Oqok!~2J>w(T^bty*$jn zcfKFH6^5`)`)PZy;?QdM%zb)1Z1OnhafH86Uc%jXPh6k_JfW7G?$)x?LBAfw=Hf;y z?!PXjSG(=X1!v@6k&*R$#u|%*&PESbyQXYrN+tXygLVDwF^? zB=ZOck^mrP7H>q91QNZ3dzM3?46~vE_1jueoP*qp>CDG$$%yI8Y}|jXT_yAABlc$g z_v3!>I&PGU_hE7Wd~$juMbl z+ywL#znP2vgLV~SLfdt-!?A@KJ&`$sA7;b=icR7Kksc(`mJKH@9LLuJ>e|8Sw>*_p zR%3K(9&3E6SpTtDzjXg1oT3p#r%YJ*;2eZPcQCN*D(1;>r7yf_VX#abK1k)R;eO6Q z*yLPXoO%EY>^hqX=hvitf1&ANe>6f@MLxQbVVz$K{xl1!9S3cqq6C8aN+N|%n*S-w z&ll(~7Q;;HJ`*3rQ@8zeIRrBrjwcPRVnM`9VvLnPB<9_e%dxK3tH|A2*X(3`-z>h^ z8GQe2wlt{M)D475DgmQ?o6p-Um7SmT=wSRYRHxZl-*9Kez`C9?#`#)BBGa+!=0uGy z7OrB;an+-XDra=x9DuSHum%-I4?;mqV>0@sry8LWhRgU@V(*vB!zb; zNMG}NHo!j^=q0|z0s5P{=OxX^QQQN&rFLeWWE(czW@m@hKSH@V*=Yjo)f2Hm>F={ zZS0Js3PoHqXUA!hGabY1N3C^U%%&7IjQUPTp6LC)&)P+dwOHR+3@{Q1T#$Ib=+-fn zCmfT6kG6L)V%<_fUhq<0fq2_2RqwTYay#1bV*hciH$qjqxp1e)HY0b_`08S0@Y;!# zi^nI5i%ALjnu|sPcv~ny0_g-qliot6YyzSIB=$!JjU7{er|%tuf+;}XC7wKSkKB*~ zRLnqi2Zf~sjtq@^*!WpzlU<|{=0q;a6vet~k<>vXddleBIX7lLvuIbyGjYi!xn{G- z6zdDpiHtNBovVtDPVKU`a(cDUO|25T6%PAyx1qWG8(dKE>DlA-c;HcB$X4sOOr03Y zIJ#}>tQ;^MYDFWi{Ynwq(@Plm?Z)=~R^lv2&d*xXYCaMgBqvX-Y7WaU&KPoAW?Z{! zs(^~qDpXSkryUDVlYQk*$AqP4J!SCyZQyKwb=n!Y`__Zo5AVS}+vmJZzF!$*sRe~Z zIX@ok%mH^AB`pFh9OeTCUStGAzY_{s#`0S1=hoXwAh8Smd7%$Bj~25}=F6!RlTT!H zocY^2$T6#5RI<}!@ckL3xEg!~6%#s7f?>|izL4e3LG%o56L(o-3ezy4^ z{shQ>NMurwLI5DP1cV${9#URHnq0t!;tW70zFL-a_n5ZD@;J zDh}Xs+CttOpV_yC*VEqP0Qkenw3@vp=w-wir;EPF%N7Xzh&;S*lvRSas+O<1w|gTh z^QNoRjRx=hT9&t=5qf)-Qk@xYtECK{y6LPAV6b3NK2#(upYZRW!;jXpJDxmL8Fybv zD)yS(s`#k|fXRFFf3xPSg2>o^|4{iG5nv)Wo~hYYXi3!woiz)#X9Th}R8l|ycmMFh zcdE`CaJ9&U$xzmH(d+ui+!~S2ZWc=Gs{ORnCUr80ZL|~wQ$C!+3F zO?|POumu=YNq~lOPPtX;RY7WLPghimms4&NB5Sx;54|`) zS4WWlQnWcXH~XQkYIa}+j&i6~{zD7`C(Gf8H=7VV5%ob@_-!&^Da~RDix^B;v2)k) z=6^NDMi87`ZXKRZOujA-#IBz%Y+Ux|Ul-CZMyT4yZg#!fO1?LPf{bb(DihDvKHKjc z(2pMFF-~!~2nH#j$xTbr75dWz!HO5wNmqgyGGRai10sybdj-xmS8tbS^au*#krS-TqQ(d%+nW2*i_*Vl?ZR4~m|9Do=Kl|8w6xY5bji@(rM z1I@0NXLq@=zP^t~5wkHJAf5tVUMev+7fS#_HwA(LEyKwm#x+n7`ww6M*g32KYY7^_ z{G!|z0OkQsU;rMhb*wi*vxDD%Ekv#!67|cSJ5E{5UKu`{=A$tRg$gfxP6PeW{mVas zE24IpluepG2Yr+i!E9vKf}# zLAf|^U;A_Bp2H+~=eHKD3!CNNRv{%b;Q#GN&{tWc{yEvwg@L6cNOmkZ##IX3uykAq z>07iIdwa}hkBLxmHi_f*Hk|2M`6w4drN;1?SvS+n=6s`6kpm3{;adrC1kP4z^(Dw& zWj2xb>0F1&i;v4FV3WJW?30^LF@J+?C-GaVM@XPPS@=g%3p&kTF`dz58eX^FGI2of zyFyN9I!9HrxH@}jq;@sHPo|*U>hBNkZ@8utyLXu?PF5@Ja#ql0qw#h~-V?0i6|ggj z<;N3hJ)00||252W;aJ#{Piyp1`qlc25+p6q|HClbQT!uJ6qz>s=Avs6k;@WtwA|WWOGh;SKWc-V$uO) zw%|m^WaxkqWZIy*U-$KKzt=lBkfgL0vg4cXJVoM~2KUO0y)yUqz&iH&(2Uq!UPX@E zdSp@F(4A9`F9xjBRG2a8yP^{!l+b>d)JX^YBw7%d%0M%PqrkuKCga2*&UMR$Xj6FZ17C_tgz6R)kiE{jA~=3Y27jRY|1Dxm}1w0sUqp zp&`DUi~RydOj6D5peoDuY!09})s!1d9Alphxo{%T`&c^8rn zt^uAKl-GD~0l}%oh$NskpBa^B75ISQe3v8lL>!tZj4z3^2paqds32+j(dePKMO?MmQ?o0^gl{y=-O1y7#r>sp^Zh=$3-V+=HeBoQ7reeitjjnw+X3 zG5UVtL4vSRjIV?j4ydGc7j&xT`$>mdj=1fpMWxtSV}oCzuMrdqMGlc%S;Cfo|FRea znS~xH55F{QSbfES!8v-{&cM+-w=7zHC`#}pC7KwC+~w0zLwc2 zuXLC$j&1Pb;PY$&))R#i{Nz>*Y--b|rZO0HTA+nyR1`{@BN%L(Js8-AJ=o~O?#}EI z-R|xia1@po1TST3p5}m{CVhIluycTd%^HJj(9IDe`AetG@>rqMxbx}T^y!dgO2Uos zF6XWiUMfW2Pa7rhjbVjG+C_vS$1Zri2RJ!^)|lukdsNibHSe()xMcmgYX&eO0aID4rI`t;zeg< zQOV9VqeNF5_s6+Y^K*B8;AInThQhYuFw_B*wbQuwr;nCmSxsKQ)6qKgX*hLx!^2a| zQGX}ru&<-zqEE%~B_!TvvOb=1^ji2(cQay8rv-`ZepR+Er_pu7KWAe+VN)=qiwxwoIF88ik`K=Z3d50SPP}gd!w~9yozDIl4zi1 zju=Dr<@6G5wbF?X_-o?ujVodF@`7VE#F6V*ep59`-lPPx;IIdi@L&a#P;!gq^sBiGhxg#5v_l?Wn)SH;uz0qUw&*81_Uizi^SHIY9 z;V&Hd#EbD+$M$;)EBtYJl->dy09nziw;nKlkjf(_gnW;{Us?NZ@BMWPji>WU=uhv)KDooe%sGFNOfO zoC#1_#{g0c^Z^M~XD(ww&+V-a`=9?G0Pa8$zgPcL-TOf$R(0_>v8s#L8LJ!@D#R)V zwQWTSRT!%RbVjTS5E-#5KorHQ09!Fu1(eWO6~Ij=%iys>7@K%Ppb%@(PYDpPU}WuB zm5+w?%9HBpSMBH0UGK0Sj}Zwwd0mmvb)h^Ga;R-9N~n0O3K8*G6(UMvRq*$##j4=1 zz+zPh$Bb13Y|MyN1S}_3g|J|(^6$M>30*pP;Xdj<1Dkxew2laW{k7TZR=1w`3R~6L-MUp)o=dhIF+q6L zUB6SES@r*)%sQDx1j`m>f_dpWAOPM40Z_aV0-zi(gfxUPJB0ieoFhUm6q+f*$dnu& zMy6OJfJ}HmuZNVBXV3-$2MoFx=2Vr)!_<_ zNpE=oY(Vfk9TsVJt(AK7@oYBAkV6b}+QkJcMT`sPs98~Lgafhg^ueBA6-!ImZI{li zhL$DwSyW{gvZ!VKr#_tTNp!YsT|S%VPp}wxmx6KeUIpWF91GYY#(WF-i*W7* zymV+D28L6d3<6d(I5YO|o3qcG_2uf> zfuYaf??+)km7UCimUOE6Xtul3(XwUPXqLCaLb!H}F;*DV3n~uAR)MYITY*h;Rak)d zkf$Q86cz;Mq`;O*BErlnl-*ugg*0g(+lpM2jl!^Iip8>6NwxLMTyx@0Cf(Kl9vwRW z$)%#(+%S|RpgL%|fGUnQA)rLGY*{v%E1-Z7cmV}K2?7eB@&ptRfG?ncAZP)Fv`peh zBmt$eAp#0v69g21HB@aIhE@3?e7He@;RUk za!c$`@qG`Clr2X_vIYVgbevQol=GG1Jg?%Rys!M^0?Q$${5mlEmE*b)xc7_e zXoWRmdcV^#DSoG8x&*%~XIh?%8YYzEjK0*HsFxfn`E}iWQc%W=xLItP!M*ce|8~l$ zX5uDZCL!GAFxVn<(ik2Wukk(vK8X+mGz8bw)K*k&U0D&Uo2{LH zAY6;a!z!MRr&Kz{flP%XQe`W0sLaVO4IMq-rQu z;G86kvFZrJQc9Wt*oZJF(B2@pd9VY?CfL~fgAO^&H8c?)f`XVe>9%5&lCqTZH`Elt;nG==C&a8IH-7VqXQ5OoA;iUzi-@(*+S9bHV6O_gGdr4Ck$qr{h|(u*NW}P1-)SzoOhV6e60F(*&J!(l+IGxq zWe_^2!I{YSTHo9ekCxM^oh(3FyDe(-+5J;JGctT>V0fTN2>OD?3MvAvlvh22DYpCo zvc(MrU_7kC1#)A%lE7sd2lv7XVnIEQ9oa<5#)WYL&MFpcU%-_cM{aE2+r7ObW^NqK zj%ur|+ME2}iRFj5efm@wovb!?t~TmR*}v^S#3!rG&2h2tL;L?FC#&h)YIEy5 zvHn$KV@#~x%KseMC#$WsmGt(v`BLc@6XMBY`_InFKAv~;*|SD{I(_z_u|C)QZaP1* zb~|0XzdMh!DP(tB9%fzv2RAakFf-rU-p-7zu`#zl=m{rr?aXcq-`>?XJl1xQc%}8g zI86I76GZla!62x64v+7AfV#)S>0z%ie!eU?+0laJOp+-?#@4PJaKcX>IGtUI)k^ zpBrL7E(1aFDg=O*sFC_;wkpxlvSrz5mP)}wxj7L4kL)Dlf#fWQjd zMO5P3r<61o+O3#6P#|-Eu7jLVrGL;H&!}*D!Yo; zpYM*{60a7jXNJywG4N#(*(_7p(F~@tS4$3NIy!?aTa`;@6u1B*xCvsq3dr;k+e!eD zp-tYC3B<>3kP1R}UZ#+wi#5ki=a*0(1&@JVKZZMfF(oe-MJj_euEQlV+!`Ctjs2s~FARf>I(YHYz=a~Xajdcv zd02H9mLAW&p;>U*!Uo`s^cWt*^Bj1FjKC(90G=kpxv^t8p-0G+5h3>KljKsJ!+RUy zR_Y*n0-mJ9slF9PAv_y}gH24!rw_i)l(6;9oo4&hEyL#rJ{@7ckqUssY83#f)G76` zOpT(0Ws5SwjH!5FfH21Fp$vn1eg(0p8OC&d%Z(^o%>eOU!g!Pji-CEd2qY#xx=I5| z#uw!Q$(D^-(+q^f*BbcEC4Ed10qqG z8;nWL+JJbY85^|a;hG5}=DYgYt(#BMsfl#rcBU=u0_y4f&rb6nm&NsbNV)en_uv-a z(1(z)b8(V@@+ue@+3n0@qBI;vM`pV)s91Z|+?dUk{CYjp?yL>6E@*8%6XQ#}KVB7& zuIH^%n@gw0Td(i8UOaDZe3dnSV`D>1J^(5|@R}3#%kTVor%l2;Y*cGjQ;)XCqtk8?en1v=Z1#QcdrNorqQp6YG>(JM7sST&j^}o^erxe$5&s`Y0*-s>8)gZF3H$t!XTtwHPB*$QH8 z`EB{xMseqCoxCl?^}4wABAvR{T7HPK>}))_`|7e7pGv= zoCDl;O$DO*?1!f!x0+$|xAHmiN6H zU?N+f(`750pmQ?@SQJXm03#E!1{j!`H^71z%N$_g(76M!sgfk_)KR$sDR}_L@w(}Q zn~?GcaGghD&R;)xFH`Fxq#>B{I-tOm-CK0j>ULo;Xo^5V%9bM|-ENT`w#H5ecI*JN@wgV} zR}e)5I+}0UUPSPDZEL!4w}o|f{$7yvvF3{hV!DpnBv0F*NtARZmT~K3G~5WWuTx10 zk6-PTFce+yhG0sipum($QFIh(Fu_C0mLnrs!-jG+y11wehAl2CWjR(9+XSJ|f%{Ti zR2C3hTvW#D)eB^V=F@t*GLv=Ip=zT2AE8Tw%7S-FgUHVwb@U+W?knWuha1{cx4Wkv z;|Cd<+tc!KBa3oeXTzU3JJm2dRaA*H^dTKZ z`fes*)ptim2QK`}*+FP6I+LsHPbRmdFG~SzYiH4AE1RIR3?Cc?zegU7ODO?@k$J^H zuox!Gf?yHR1wt^allW2B^BlZeW8(Oo2}#E$)eM2-gx%^PyoJMigHT2Uzp^?RPM(9L zQ`dIyJnGBVeJo2b9m&uZe#d1S#whQ6=9lneAZV0~nY>!g$ ztL5Xjeb5oRSyO(-xl6Zx{7KBriR<;uuG5vvIJ<63`aV53BhGxbTB!MKmS`7;hubbY z0?lYopFZVgZzKAW##8qnji>B0#eqztB~oQ8a;S`rEglY7(Y6XXdApLpjTO>aiIY2%N21BtxjJ}0DTn@sQo4yKYtUAfA~!_S^BsC)5iM5{!f1& zyK=%kiF#Yj?&3`P>gR)FHY2{k1uG4L3+6aQQEaHSbMf>#+%T?+)y+(a#kh&>7d1d- z$5DaG4pSY;^mZy%wj>M78b<5!d0A}?H+TpVUr(ze@(O8nbW;_yx;WUX2gb3H-q|xlWWQ&wUAJz6!RF(%z4{ zSMx#1PvtDRd#gQ(M%ubpk>Rl(F{L_hHxXh z;(H$4)uG^g2~GsJc5st~mKzbr@URB4oq)dUJh*i{xW7Z0ovka}Vh`4sJR*qQHTno^ z^oSsCcTPUSnmss(6*w;3@WDNskFUdgd>zAIVL=x z9Ypqk!64jx02Pdq9iRdbas?EhnK__h8OtM3QPEiiuKkiE=L)P-gm{(sinm(Tb`SFA6RmIA+*3wS)zjWmm z;*ugG)fWmGsqB9BvCMph4%Xx-FtD;fP@k6o12`c(6M-RJ51xAfPtvn&Qn~@d2Ug50 z7KHqS2%b;?iHY6Y=n|VlfFtBDH;^ol*|K%{Y-Y*;i{T}>tN}#D zCJwMujjV{AJAfjDR_OB52iOmZaTx>*DwBxz)IdVXBA`*a<&F*|kAMaVJEah`R00$w zb|YLi0X%niZ_31`WE7w<=93Efc8YQb<`|0+yxL)m;0;(!!Fgbk2YwK8+TbTuF*D!V z-fk{`-Po8zbS)XF?oKkYtP2&#@>2yOShgq=%u5mg0bDz(;K~>Q(8A{?WhnxH>4)^W z1xQ2tM|SU-_Wixx{U{}kkmkotH$aG%=Z7fk13>pJZqK)syI#*c4nEZmiy^E2d^`N~ zQ)y%WH}6s1PAM>fTNTsu`74^Y=F@vi&HB$Kln_8Ah#`Plribdo`I1Oy%hu(ydBO;b z;kqtL8DZ319AlI^!nnR~#Z-X=ws~lI?qQJ(tjK4nB(N`VqbeZO@;uyXWf-?7W$DUK zSx@&*&O$jIH8q>HeqKs@X6WL@kJXTYi11ik6cB=vm(QB46LR(KBF?Ts>Wb6+ALG+!Nc9#J7VTWv%ZX3L`B0Xdzgk( zc4YB!%shhzl`Y7CGI9z%yq!tF^9VgK&mLTO@&NexF>wk>kIsfh;gR{HBxKAV0ouob zrwn@9{^^=;^I*?ubXr>C{di(A{rjs+T$3>C>Te(n{x6)1S9mOFO+k=FVsB zS4jD1@1!N3T+ZwM>TCH%{N2C%`PUnplcM&twNlUjqx(saf0DoN^T91~zuxtGc&wr!@k(8TahU36CW!0-gF&#Bi%7acELLAP)+fuvf)FZk>~6IrVa^*J z%?`WyjuR8+zVY!&UgWMxhw$NICx&Ya9*><1N8 z=jcaR+Vpukw<>;ol22KEyTqRTD1|9Io&r;LYSB?l-=rXA%aM_c>|cvcY)t8;4u_i( z(b0U{a$?G?hz=a?6;(QJd!D?O-g=XXvbcG}ajj@C*N@wuPN33#U3Apj-ZiZKpJ%FZ z;={o&&J6zV(8nWhH>dNGNBiXOW0w!D7CVtYmdpS5*=IwYuQ~bGnzfg$?d{ggTK=8) z&kcOig}B+LS5WiH`peEik43ahEAjY~zs-p^>C}XrWyYE$9f?*)m>SLM8NC(Rn zWr7(h2@DX#70e2F7}X6>rI?W8mLo?yikaN@Rlrz6eOw-#D@Lb>2PyKu#|g@ZGi2DF{eR!cpfO;>(p>_bMNoCP)zfi}-9 z!H6zIVbr~a!YDiD;P;tkjDyJ*BET31Tmp^Uiu?b}om+1l$Cbywil2ftFrMkIzCSw7 zW;YL;EZ|)j`$$BBO++RGX#;QeiMmiEMNy(HT35=JZPB_|myyhv6e&?aK8iCvmv517 z_6$vmT~+6QP7Q4!FanYN`xmRa&pB0f>J)H6zn&DRW(X{TXgMlv1aZRfwt8e1d(r;I zVr;QPi-i_Aw3HubR;wTWICHyPwk@w34S#?9lmD4M`KPywfS~w!zH=>~UF~5-ExRcL6 zC@-UEzwB(?9R4VL+nuaClArkry4_}exf%*OXklVOa}-17T~eMs>^`3B-g!}-J^bTG zlOIk@)mg?dfKj(X25Y^HjUaS7Qhe3ZPVi7#G6F8sk|Vk!LC~^{VMGbdm?U$nb&m3o zdx);jU^@F!7diJ*B1)sAMf|P_L<{gw)XbvOZnd%KQZyi#L44z_%VR>V=M$4ht@=J;GZSyrp&*=s-cnD zWfl%FrG(HP^MDc}BFe~t{u&>PHmKZTv=MTn4Z4n(7%rS5L>quoHoS8q<^&s5oiqW1 z4JsH8HmKle9KlA-^Qv8e-R7sHEf=Oke4}~rO8Vz0mwEOTyUk=Z;t8%U+FLHRqj?77+ zL$`YT$R%u5i#25fet-Ovx5{n*I<{-7cGN{w;|OaXcMzqp*;Vh#*}~X_rjdlr7z|5D zV3jpJ>^3eUH{maw&=d**VIV@10oP1u(Ap!Egph*@_t6bw1g;Lj32_Apo`E-b(x^~0 zp||)B&9_St2R{5LjJq4p?MjO8v{kD+Gt+r}u6uoV+2e!1PJcW(^|Jy$!_LauRi z4FCtuTR^XR*#%wbz^N*U-&ELbnpCt(kpx@>oRnwHm|mQyAzn`)>R?qb0dTELBsg6UmNJ&*J33*+^%H!AV?#MQ3qM7TpApTXYG%>SY&n*>P{G zic0+^X3(i*@Q61Rn|S33L!LROYK)F`^KZN%_daCJ$?eZVj=3ebx{-lfzEm<~5Buvc z@-Ht{hr{*-$WCpeLk+E+bg1FNW@?%POmSQ(v1d48)Y_kmU$)`B=@Zi@Cyq_mDU64$ z9d8G0(>U88a{nk*sCwO%f^6mkDP>+0OaDUX<(VQZ7aXAnK_kkTZWGbjy#Yfq6+*CA5)B1zq9SxCARuH*JMat+MI?FONAD|S+278j*ik{0 zzLhVvdygLFPZnI=d2K=J2bhgC4X5T=xyNUMs~#1CW&WKYP~QHp;t+D|1T5p;R{}Lu zjU-h(KThfFs3DyCQaU^VS1~CK&q6g!-wr%RCKO2`$VQpl%46g}(f$m7PlIzrjMDuL z6(x|zCO{!aP5glN?r{wxH}|+2^LU+k3x^_3GPB3+Q5k%moJOk zHP97t0Q&d3$FcVl?8n!qY4no}KjJP@e!V%Ru;E?O9Vx zjBg#kET$VfE36E`gE9mUqI~J|z4&`PQ8&}ZI>E~$?J?P57tysF5nfzfxo2QFA&h?5 zAdGf+4*tH-L1M6~hZrz{Q#3%8M|XyL%&r@xdqG2c0%oYIM@EfUki}(yy9B*k(3!5YnUUm zTR0I4O$gvoEhg-?csti0)?b9e6)U%V73c;oUuu_Siw~KR&9lXr7xS;~!u7npLbq{D zp4QAUd3sA%|6qHkR+4P&c+{#FCDdrN+mN51#SEUE?MINwBQ&hF9ODdsit%8WEwGGC{h2fBhUG=VHG9}hRlr`ambH9=>3AF01=^S77rafuO1RrWiLs`XB9)D$^@fr0>!D|NRtT@@N6TA zisl0m-}(Lf5r--tp?7{2KhKxv2cLaCxN`d7nzut^>{3K)n_Y^?O|`x?NSy>%Qv6dy zZ}k^;^0l?zm2ZLUFBVQausob;2y32`yIBUb>Olciu<}5F7tw7BMB;X$!m1nC+UGYy zpR@X4M@J1`=KpO?k0Hlzf3>>n&!M@29Xj0ok6Eb&Bz)=E(*hqcq6a%Y9u{g;DI;pI z;KK;Jx4Fa_aQVh_G*qyCXjOH@r<-rY2;9<$vx|dU8^si~H~&NaczMss6s!*>Pn?*X z`1rk(6CeNiSMN_xoqGSH$v^+Mb5m5Yw2sVBIDo46D>+ zMsaI18L4#_lXq8M6rWbUe8~?*`zuCatUQwuHLRGVIOUdYV1HO$Sw(1gU?w+wWEVs~ zwMqQ9`WsKX*ROQ1KFyyj49pi>XI94mX80`{*yOs51iAMT;j5l@f|vO)x{RMRvjE#CB*T^81S=8H z+pQXD81oz&SwxnZ4gEQ36Wo}jqbui7T{FvYL5Pqi@Ir`=Kl+1MD~z&|E#~W(_h*sP0#O+O?*VIaVMebO@V}}H4Dba<!?+qFp{bEZKS z3H8@BT1+aU5{)Jq8Dow?Q%S%}n`qR*jk|@J2kx&XQQc21bX(A_-HKx!I4$94b3Mie z0n-VWYWy;)t$b~+`}{`t`L>H~ITKDh!aSU5AZwnJ2M-Kr)q?`4EL^a`6?T841qbFt zS{v8MB4$)zK}QWQ5yb-*KA00}q4D<7EYRVqVpO_&R)JLuzRFsR>+84LqX|1c9VJDE zj4;CXeni+A3Tt0S(Qu0|WABn#G=@hho^CohN?}~Ta^gT72{>7a9G8=EwCdfTlJ=lD~lKi{3vdQDHJ!@p{iga zG3hsT%_@Zh4F47`HsvZ`>^ zYF`&VQu_+jJ=NYZNK#!8A6)e)8yo{QfNiX_nbJLpyrz)q3capfbm1F3(u zy;Cbp4J`QJsz-(3B8+%PF(L^XJx-7ig2+UsMl>W=nS#dj8(~`0tL^o2UBM8DQ0Ymm zp)bnm#Y=Ihi_2e~f7so4R@RK>g2O1k`{0dko_pB6csjpui{BSnlE9^kY0U-ptZ2mk z+Uwrs$GwFc`DX`~kgDc(HXr|E=5+O~4{qG0hXTKO@AvQLvybx2n@&x$468NIGOW-< zzadU_urfIFXxjDH`PzEEvpBdhLtp;mz_dfffoTV*?kVXpH3qWkIX05(F>Tx=p?gXj zD@EqlHdx`wBF>cB##J%h=UQ2w7o$Faz>LtdYt{SK{o6)<{?@?=+tr6HVq3m*5nK4# z*J)FYvjYWoLZ9Dy<6idG@1~ATPE1YI@y9{dkExWb9Z@U7L4gwyzv^u_eA#j`<`gN>_=5_bvc^g;npOgY%2mc!v*wmnhAmQ3)x2g&uw>~FLa+Q4jyiHwk{RF7ml($`G*_m z?b+NG zT0TG5z529w@6*3;R0%en7c1TMTl9F@m4Nn*a3!F94M>>wj;=-2aLbiUH4^S*1d$i4 zrF@`JDo)RuK)qBL9|X*^ov@Pl`c1Uo=%Ei9_&?A@r>xb1s zX7}kzXY1xc^F0PbJSIJ@T^^I3J2P!;Ak|}!NtL}2l6bA|)pqaI=lSN@&h|{+UIEUp zN~qfRKt$D!w()TXb;;T6s(0mVf!n2PpmoVf)Uqx)u<%W9t)wnFNg-}X3zL&%*eeh; z{IIf8Fq*x>b;PME(Wuq}W8r};VyL)aao}VXxQ;l9>Zp!5Ny}VE99=sgBxH%)j1#;h zo$P2Fk1UbQfe3%<|70QG+31~}F9MVzqPcssFo^rEm48EEENJcU%F)`PwE!GU@x=mF zkGl{M#21K45;uKdN>3*%B>xP+Mh)e2YQ+N@p^EmR424D+$lsCx^LAiNGaugN$M6bX z5PYXeWXd4(-6u&t$V` zs{(%pZAA}n49U3nDiai{o10aAl|qZBqbigu00n(@o^uF`FvM9*cXGsjkM^#Fj``DN zd&~FN6kPiJs0s?Q?W{WuCuIf4Yl|Hf7j&h>_NsB(`ol+))2+_ybDgcV;=jOv3!wTD z7C=oys(o7SVcF=aXT@kg@F71-f`YD=#1vmVM(YkN9goChdvOwdSo>e&1P?iKo=BRF zE-_G?`vs_f$SB3n=VacIM9}NYNYH8pe6OG}&!v-;#&D6Q$wN3a_fBP;xcH-R3631S zLoxo*gP@hayp}I7>L<+Hc~&#Y@}&OHP6a@JQG~?s1Phz|0W8A2^2sOkSb~h z0d{`C4h_;q$lX?_;2WumB;g6AU$6^`2t;;hLU}Q&P3`)WeS2I&Q&2+%#o3&vNrc15 zCuYPX1clUBP((sNR`E!=v{Tl=$ye{^_fO~B3xD4zzNvhEE^n{&Zl3Es*y?OP?!RjH z&TQsSz8E~bSk@ifJs<$&{@WY#^M)*ZujNq0Nw_j@&*mspaVBL6RPv>ESsUUIyP)1% z$~V3m%xveczoS%j9WCQS)GXr&f|0oG__XFG{FY(c#YaT7G^O3Q7p21yQ_$K^X9^OF zYHS46DLT{PPu z^L%-J@Y&acE2j_6dEA+6hZdA($b2{=ufGK*ecIA&kmlS z&Sw|9UtBxr#$5R%X9`*uGv4op9m448J< z>YftrhjWls&#{qymd2xlSXs3@S>ErtypS(_HF)qS_R$?tn;^86s2i~MO8$j|m#7{C zzdrRC{fl$p_oc541gm<80aJc61x`fjLB8Jvax3+ma1^9L;hCNn0m+SqZYm?w;n!5| z_5aJizvHL=+t>%Br6Z|&dJ6Ob_7|TOZ%g;i%ktdxW_w7Te^G4^mv;kSxYN6_{o~Bn z#V_P*b3>1@vDUl4xPL3T_|2an`~F@0Y5!6hs5KhDlm;@)(UCNr8om5dn#o^xiCcw3 zEt@dgF86uIPIc7hkK&5&g>uZfisB%@W< zOd`5pM$kdfh%)Ya4OJwSF4|Cqz(Wwg*ecF$3c&X{dnri!J;qK7o!;;yageauVPuy@I1t0geSNAwYlea+%R_2%dkr)!&)zZQUyjM(@E^_vun$y6ebp znc6`YFtwwrf403-uS|9K0&>->LbAZe(*#rkBu&te5ir%J5yQfnvo>Fbcnf|v9nlXW z*5sZh5deEH#CPt}cU4*P!=={d+lBoo|GO~9#^+mC^4S;NA7(qRmh-#cjYs6inbqnS zf1J5pSjb{3RQyZ#`lWK;dUo-^KbGZEul3hn*ZgRHK5wsdwr7gIC|X+mXbg?@vm`=e zB{JDVqa-4^5qrS31%@2;_^o0Hy5GMlm+;B^But*xcQAQczoB_hK1JkEt6r2)M{c6C zz1G>h067Z+U1d?-zPi>~5Rd`3O>h1C;|A}L8G*gG)m<2!&el!Fp0`cG&%$7|;T0k-A}&;!-PO4T9km^o9! zWTXqPfE2j&3XnOq)?tMZomjvM5n}-s8S2=hPhc=Kv;?cqP;%`IoGZz*%#PSqILSJ5 ztH;Ye%jfRwZUeufm)(a+`q4#6+R;1oh%kK!=2gALW<;qV zi8w2m#^!}|_h$xW>F7=|_~J72U!6Ev;PP6%m$Uh;JJn9j;;eU( z{tSOq*@?B}MR<1rQ= zGtt79A0xF0poxeU++K|FkD1fFT{WA+Fhg+nmSIMmVaM+#I7aLfq;`HbJU+_0B-zSu zcxeCy81@!N*)S&J1r|1epYy;d%fGn6%NOy+=6#$j*EtYj#|_GF<#!(Tm+zO^MdWd1 z^0WiVCnz@b*XD51*Y1}i||w!k(7-StJt6B zF{An?b?4R`#gQf8zhlR?OI2A_T~&|vc-OPxn24RR9Xm6zFTI1pumZFJ*3S4%7!VR5 z35;xzCB#jbt3k+&bwP-T{V8@=wff0_VJbVjTN0}5b4#=92NSYX`JL>{u5(VFJb4l` z+=&1DAsDO^EX<2g0mV$bnfWtg4l8$;LsNkz*rEx8fbe@GKy15_yCaFNhWdl(P>Y zt)>(wA`5X--cfW2OR35avP?Q>R2^spOgQ-YGrZA*SUa!go9pAP?_cDTSIf7iSe(+D zX!c?IbooV}(xz{7qI{sVQK5hASnHcJ>fPwiJLevjUQT}gW#tn>+sQ|RqwTHs#P_Ls8$_0 zu(@zmCSse>m9x3(6D=UCdjVl-hUa>edLL+Psajc^U1$N6TSM`^jtKW|psD%vSFIMul-FvY;P{%_Cvwk&F5fKh=-;nSP|RDZ7tyvAKD% zn7r0p|E_$g^GO|+DBZSVZlg~O&ExgX<5OLw=t?mbw=Ng+Pr4ue-JjOELd`q?B^9>Pzd6M}7Mtp7rIoG!(x3OsW}036=ZiBhcFG zA!G$&h@`^=2w?fzM+xJ#N1#ox%oq9W`R3MBUEko;mnObm0(7{2WlqsE0UdDlVdC)7^ zesAdCMo)YujtvZ?QQy45H0!HZ*-ZHEv6yD`_)PZO2a*HI77Bt!x>X+j+_fMK7;hg4 z?iBSqe(Z?X_$*Mg^k)c7iKc?E;`^_P3sc3-E%R9W!L#=Gr32|qKs9i9+Ojb01Z%I9 zKheV%FrILkD@Zee)p%cc)&y3I#Ye^Bjcz=(|5W?YwS43I=K6AL?*4AHwzx3So?m{? z#87|Un)+${3ms?e=5Eo#t^3bv=s53wr>p$UTa{kd+s>5m8|#8ybHA}J2-Ll>k62Ir z&2@yG@E#`meh-spvNOF#$|e+1?Oz}X)%u+n*j(reh}dRyIo|}zPlBoD~OOQ0b>QI-Yxg! zO2AkN`cQLtKmeQsj}%Y~eL|p=(D6ujyjYzoR&U{R-m$8t^qqo8-xK;PzE~ryxb#Szxnty*|9P`1oMI?=0n8 z8~B4UG>lb~(=b-Wz5n@@?MeYyJxzm|5n{l&DF}9A7UR{eof0UIkYzN0!&K6CV(8;F zrJcg47-)x;6G*;|!%iy|1zvfWFJoz;n(ODAude4$rt+Dyj^1k~6?n~=RQ6k6CGRyQ zV2$dC*u03*&hzW7&F{^Dq@nkQj~{LvtHL@2TIY)kv`&?+rO>73V$Dd3u{eDba!Ij{b~GE zcUPrYoGSm#Z_WL@b@7koum9Bj_0^lbU+WBa7n$w4*k&-4Kb_dQ`%2%a`*hAlFdITr zH53AA)lv4gLM_Dyn-LX)Wy^hxfK+)YEq0BdDq7eYK@7v1&vHp|cqS z0cD4(5$wzhsCpL%?w$b%6u0IkPDbyvI_D}7!l%%eYQ&6cFc=XvU)AwO3fu2kFMCX| zL&v8#e%M=r^QZAI2$j2GaoytGmo6ME-p!48Z@%npAivbvoK=~za2^H4r`XX&w#0 zQ<<0092x*vdNVQmMi784zYzowK)n$JnyjE|ZHsU;z%PO7U)2?GoD7g3^a_V7)!HTs(JHoUs(p4P)PXZpP@yFAE381yH_d+C1`t)r2o*FFil1MavqVR;F*;8Y9J(3cQ zHCLbgsqN&(3*jUB)B@K+mVs+J6Q*7%!zcCk9Q@vw9tTVYR<>Uoq8*}I{!p4Z1e>5# z(fO8(?hS(ZrXcX>-fic8Pmc74>X5E)p$!@crb35xpQ! zn~=S{ko&h;Axq`0k3)5;+QfuJgcgyJ0I%K5-I8$d9*spYXYSm&9biFdv|eil7SR;f z51tHt%|{p~_8$NRW`D2}eFK<&K!#f&^EC_!sSi|9P$AM2=kl+f6S|v^DJ6z{`UjNF zXr7>EWX5WrEeT?RQ*CM~-ro@8=Gz*Uw$o41wnoA(DP7y+(?8meAG4{33!L3Y-!Ig~ zVnsVIW!E~>VH{TYBSkgk$!8ipG8G2kS>d=U6qfNLUMbEq*JExS8NwImgi}~5rENi5 z?;D}v&L46!8M2b9#J!D_pN{%>_p_ruOb+g7e!ar`RwhZpHLX#Fk~onSxG~SkUHey( zhT|kY>jpNPU^q!cSnY{ZRDB0!t_mZ@<_~@In=EuIxSOw-f^ks-lBSignT#-63`hN`fGKLimFq{D^d| zSC+BIG_4)*)rF!GRSr2K9KuoAB|NQH9kL`A5yCK0o^zAYsw{gQ zfgmkTBt~2o61RUZzr9lnyv;BhmGMHI)Id`MY|U_KR)s-ffxPs@AWXS~X+X#|pdxw< zsTQm%$(SWGpq{t7@riO+-ZMJ-oJn8RdDKs1(HKB$kVXJ)Ar>8lA#z93pcICU=I_pk zT>YW1`or+Moq&EO&-QdI`6*W@ftVX2bZr}HLbx4rjiI0~u(m2Y4JStb{LS^JYAGR# zZUnOsJ(P*>6Le|pIEI3+RD&U#=+SE!j^<@`2K8dyryr@~lg(_Zt1Bi+;IJL!%68O*6~NRE36p{}}-|0&tj0LU4aQ zkUg*%6eLJ~*P#jzM89~Cv3mp(2OLFJew54M8`1iw$NlGrTk6ggcP`nr5&v&1?CBs^ z;Goe^87biJ$Pm1Lowb5gpdkvD!T1NbN$kwX7dO9=>o~^idFWQ~d!6^!qW9b4>vW6H zjyE>pcK|aQz4feb0ypa17h*8e7|Hayzjq^%m^?RdEMQ{l5Cb)eW5Mg?)PcZ~`iNw5 zq&5yr86h{3*aMc-5$%jRcaLEt+|qAPgo5;XD*iH)vibI=^60flx9Vy;JYyo8uJL#p zD`NlUme(ld?hby`@0cFT5&spcTAI0bdv%KL^K)h8F<=!sV3K=5Z>*2l&?Mn)fv(z+ zzun|y+DKdsj~uY=tj1E7h9gsd7B*%oB-(43HoMOZSq5gT?06?Y^qm#i|AzUF#DSkF z=At>k+)$S&a6b_gy7nWoqRy-mI{nbn*Q1e*DldH{sTOID?8IP=TT+^S*)R7h=~SX* z91KTZCR-T6c_V73%wu)^@!jEkmBq!m#)a31Z=R1mvwHJamCt-zyNXQJB{CFe4TfBy z`j1d$YR_^16DXI%9ThAFak6fEu5Dc_-tNrm2@8gUY~)O9f=V!MQO)C&mRp7|_!YzhAJ2h$L13Q( zN5QHl+$3ksOu_eej;<8FZ0e)zlu)B(p+j2q&5XdHVdsQSs^|?5&XU2d}3IEmNI))k7%2aWZg-A^@GVDe^i~w$^dy1|ZK{L+OvB zr|TX&B+6tMAauXgGMsB=f`{f!e2w8luYVmtdAfD5`{aXfPg9rr zgx;2D-#@@*vYc;Ic+Mj=@ZdgNDHbDv!#5d&aJYbT(tX9d`=CIAsqa<@{XbqCSqqG39}2jVqY4FE$xkw6oq z1fV^gLIVG1|5p@HGKX}>!i|iE4K!Rz?ewYUnuqb*gD+8wK^Zl{-YmcihAX z=cgyG3av#{z$5#`JB7c4E<)@-cRJ#cnkgdQNP^m^_yAV!@Pt0Ss(0E;u85T~-$LG( z{}TVy3Tx2P#V(Fmym|tbe*^3FS1h#(^uyvx|3p1N7q~S^qYM--NDrRD&oy=cuW~J= zL$DsOsPGrfuEZ4MyGp7w$XxyayaW-b$O4gI<^igJh@>%rX}S6ys_%Y!91j@G@FUEQ z_v^zJwQ{ty?+&y}JYqWpjQ2vjE8osDM6B;O#c$aldzTNeU`^5>lJ@6l2f+Bp?g@i! zb9Kg<1}PmLgP~^O&S&e`*jAiCwEEz3Gd*e;6)1{257*1#$D3vT zkQTP^%obhz7h2^SpF6V&~ZzsaBEK2;GhnvW#Pre>@sN%xRL107gb!#QGB+aTdg%t(MZP00U4 z5^1I;XgwWnUZ1Q~NfX@FjzobEz>(*U4m-8+(lhR8P@9&u(e6t4)uIdY@X?b77xMyVy2_x_V?E;mIG^)+sIkET`yeu zhq%5XDU^Kq$|N;f_F8qt)I0Nr^N;GS>5_;k+>Am^Zmr2YL?nti<7U{MOX?lv;vH({ zMVX5B`V#2r9&XEs{P-gYxmY|6@2df})ym&AX!|7EMRt_SRYEgp18_y*TCJveGM}jQWmHS4!{+l&cXk)s*2}D=#Y*;*3G=6pbBU zA%k2n-otRg``#pALR^YUOPYa!lt`=EnsvU?;F0uz)tuY=tIf_>@wxx#X35VSE~Op3 z{}bkj@`wmEpGf?dSL$o+s9W(1`vH6PQ(>li(B?|`WB*z4?d+qj{iB^ImZG0X3R??> zQ?q6IMtTMN35Z!BPw|_{|vnEQkUXCEbG_xECHf((dS@MU?;CR4d zWjEIaKyLUz!G<>0K}PdB5o6_6*Fg+;ra?YcXPcngxQg?AB9Ex`Fx4yvAUDbY+C48) zL-d4JXxgFrctP#bFCWTcx3!8F#t!;Rqx(G<@qk$=OB5W58idtz3D+YKp)9HrM|VR^qs^s1X*ymp{x^Rf=7WSQu7qKsXKLn zzp*-FOG9Ixzma09d3y4Gib6l%^?JZKw`!J%umu#KQHq2E{t(;q=r~EMn#=Y1-R1sU z+btxt7{CPR3}saprAkIPB$yqn3k0J4PCQCoV0sZ^#i{b)eXMO}$#E{;K6N3J9zXeu zEa@bY$e!y^tggZ!3rmJ^3_M~VPCz>wP&S@&lHo>M#KCihnM9vHKCDYuo`(GisRUsc zs}R4dbZJ(^hClR)T4%v;ZDrZ=cN7zT@q6+;>YczE^<3Ny_-YgvmnF_v+Q*t6tVsAR zg3U@EnYiUc?j~FXL2Tn+WR`s=wK5`N&f^)zBLM3Y^sY%yUF*b3wU*HLz;XI86J;ew z;m(I}c}>2#7=>`nN&KeL?(s+A#iLA!W+^gsWuo5_yGXjUataVY$wyo+#O1$w90po1 zCl7=GxV!&D&&*)C4|4Pdm*7B@AG-C5V@tL-x*_$ zR)kt|l4@1ZAmm=We+U$nehXddbfqe-zyS@^L%HxsmgQrQ(5L*^kMS)stCPEZK`x6Zx=9b zD~KQ8RLG&cCoR2G_M&i}$ExHo%bU~EnYruBUtC^HHtD+wp68KY)|@j_-E7(x`YYR| z2M;`+*xwv54=tB~Q5Gl{x{%5Y`;VSAmEpM*+~Vq^HT?0+!js+ExFMJ|fZ=Wh^F+S} zWnEk5%+zg;DFmc~UuDoP4aHy$ihz)_Q3_U>gFOoK#gE9TKY#O>^3$|Ln#tvN5$PwG zx7Z(4NGDkFMtGNbZswm$mktYWp@;8tRIA4w6VuX@+nHMAqtR7E5pV#f!1D*_0?)s1 z|9|Ii0-akr%LK%`PK*($Hn4sVZT`(Az9R|fYAEIBkHrfGVzF8g_3BxRZl6V4R2ScZ zeZqNvjq58u43I4GyKy%kQB~2we`ThIo{?1pQe(2*Es%|PnA{Be&_9%jxCI13P_e=- zUc(}Opr#23v!YvQv;=!F1+O!W>+N?QAE=~6Q_EMUbTk_U9P&S>8%-{Xk z03f4xF~q}nF&fT-<&X|4%Mn;*gD{Xzv4cT^XLiNL1a_ydv~>%c>bZ+O@F@G>3Sq^ z<$Ldo8*+z42oyDE&irIYh2;RKlYwzHy$wwruEKS zPi~PAzeDrt99zsVYsO!HNPn@&k2j?MBJ*w~%S5^fTVg$|M5eLr1=$~Xo+XVcvMrmL zTY=bYY2y*yWvOOlSAup&e_u`?Z2Wn@9PRo@%?1yX;`0uZ;@VOsg{u=S*p`(a7tBd3 zBu*IAE~rlL$~GX?rz-QSoa}muy8QJ7#(y|>V{WIUy;M(|HyO;E!WTLopzB=Um+whK#pb!d`V>r2h<&Qj&xz=2Z8Lv2-%1@XCN%2RC>jfrOkZoxSx zo`qWlDi@s6V&~6=xe7vx+hM%DKdK_UOV?Jka=heAZlxj*ec`G3HKJoqP_e7CL@**U zm#|%*5$%6v4<-TUP~S$T9%=t%PQoWN+nlx=g0sf5Cr#@SzAb)Dj8>O1Gk%SrGJYul z66!o){hWBk$$#jA&1f==?1GZ~VyI_q)vc*CWhpxoEeik|(r_oNnW<@gHu-#SX{pDaWctyz9BF_^G zF~RQuF~O|@D2$9AA<>zhl?WgwbHWHr6LzR6bms5o8z%4w?VzA|- zlQ6%|w^D_n&G<|G*@Ew4h=T5r)lE3dUljjS*OEaHCLZbXXqPu$6g2Y9Akz&YE>m!^ z5RDOeWJsM{iDN&DePshy>y2!E>-RyM(xC2W@8ZD8d$hojmyT5MAF2$V`@tdcq7NeNf1_3^8Rt6$5kqeF{)`v# z!P&oCk3-DTxkt@(lC8jGCJwHRu}Tt7ILFpMrMnIRd}iX2sle}|iGg~n2GrXqrvK@! zF-j)nB~_dj?w)9z&;$yHG~!!J4Kl{@0jiZX++pUvf|r~w2yi#|gB-2D zD|*mw3x1W{{06UDu?7CPnah(Y|I5kFlF3-qVf+XDmwNln%K=xLPVZ;VYiHgQ^rHNE zL8X_{{#$^i;1&`0r-R+0XsunX^>$T22$DC=hkdQURdo=gN65C?oOvSM(nA5PRgDZP z-_#nR=z<(-y;jh@M=?xlgMY$}JgRn_wBUf_F6-PcCLh1?7rBp3&P^YW@~?YIrZ#qF zM{^e&m#YcyeZ0!ZGA{=cm8*R%t&L}d^pz^t%ZppiPvsGwi9MP=#@WE#L`UVxv&s(f zk(Q1qAVWS7`~PGg(aJ%XK0)`QM~j^ zN2`9?o8I~SJ-Ippc=}pKa&n@&c%fVt)qaltKlwAtpSutCC2BhM#ekxsIC268G5dfg z&Ef_^M%#=HD%ac|st?*44AxTADcZAS{R3>lE%967)TlrcHzm4CfA0cBPgvAoGh2jq zO2OJBS-rMwyJ2+`@Iw`5)kSjCdTr5BmHqv^F>$aC&~9pK_B2IM^54V!q~geMEh!(z z{S_0?M#Lh3ctq)I7S0O^O1~`Q2hkCl0b$@|s&UfqCR+g^ga131QXQ;@Hu8!ErL4Tg z-8Mt{B|!cnZ1&tj6SuV39Z*o0q9{UDbk3VKYAY|~lp<2b;faG|A=DtOJqOnpi-H34 z*LpTapqx0CXxQPUM<*@hjMZzS4~o73qu85jDvC_+;$rkl6MdKguhsielI&XRvo6<6DQi zI_OovcDW~hU-7XsS_uTc>aU-#-7hrn7(H9|jsBg&a3C?dfM&rnDbN{+4;pnWoN9?GBWwLML>p4NjT$G$=wFc zHQ}4!{qB|Jug_y8YS)Lyd%i?G6wy04bkVyqMH8m|2&O@&&SB=4WTVifE+QlSx#)ve z|85W3%b)AYEt&RX-Q>b;M?Y};Hhiw%;_?IFV>Uw;kFmq+#h1JJ_})7{^;>-o%6CHy zcdhOJrr+AqSKs@zb$(t->J-^5MB2--Zc+EJIza}dUB)q$b%Slr&9X?15e&+DyY5zhi)Sd9IzIjYO{C;o9xq_^-%DE!x3MhS%-L2Aije&(*Tw5~d8bAdU>R;IeUE4}eCl zN(e{ExgfX`m5@(33~Ap1qr|$-;8J?v%3mr~Tu6bRx7-xNWeF}R!@m*?Y!ZTRL$qfm z>an4btBVKwP9NTqLlAX!+BjS6T6G6YN8T4=S&63Ko`yI(`TJ0-X)P`82l-01o>-0K2+f(d^sFTt#V@y8%i}pud#8l5 z&(2h@+f3{5BjTUIM})<|i)zpP@1lx!pQ(+J^#WK?e?fG(;Enx)@_DMkbaCi2v6Jqf z!XI}4I;;)EI>X)Z#lmAnl%o4G!U`VMi7wK}bWh=nl|^luIg#IU;{NjQPwKsABn4)8 zj_ckA-c;bSlE&zE)rM@K$B+wp?F$!aCH_289#&`-UQb)NFAw_RM}&MpsRsU&{``Oc zr1zRp3wIR+%()hkBpN9bX|(7WDz+-j4#YqOh8>h;_OFm&2~7!TL1|tkrWrkEb=Ctv zw_1fZUPnhmo2TWoIJR*+b)!`kTr~un8f0}u38E6aRTbIPyf(q3gP#(*aJHX&NW7mr zbX8fx>@?0l2x-S0s+xwociMr_6y5j}f{hdR0z4?Lm&mSpLxnFm6>|&58i5HwAFNM< zepeW5F0r20TR!jeF8HdZ)w$4+RvO4$@nFRMs+N@;+*xd6ow^Q54-uqd@^#J#iBG1~PoA1p0X&>UgAQ(wi6!QKrN3wBBnWH3_ zTQmN+4pB1;H8^5qn}MgF&;JGMtLJ^nu3om%IhO6LDJ8lwjEWZZC1n81GYYojL#t(5 z1fq8Z)mF!&o{g-n3Mape19$O=1NY%k<(ZT7Z;KCkL6&x|usXOiV*U$|ji}Cov=J%z z?_e$%q8+R7&-NRt83E`Zoa5NO+!o880^5ZPKPV}~c?KcIX(@p64KpY*cYKS&z=6S(heDY1YV9y7nMDs8k!PB7Yd7)+`3Gl+Rt zVYf0|DfMtKpjNqdX1J%pP#ONNOcsd8HW>fmF%k}x&C>?uK?Adah`uJ^4vOZg#X=Ei zzji+Zbnr(%GC3MUru3W8RMBt+f0&|m)^2yRkK65t2)%^zm3-05V2lyC$Fev~8QS>b zy=IlMZaMvdcrCbOwWTaRJ^mXLjT`RY9?%8*;H}>RcJ4?5)QIi%MsyQ&DlZMV-Jr4X2;&7H@sd^q^vL(2~UP!%zlJLR705Z#X7%}f$EMdP|=W<&gb$BKb34F{GUpmGs0BzrU$rRRvB(1dEXUaicQE0z(jL1eY8dH*v~D| zfshj%TZeM-IV)}H#Vj-h@7@%dxilmN@3`k&*G~!~+loatMPy-KU<%NtUuR`WpSauf+pZ{DcW?6 z!mzwbAguz7$unp~*nDfLjX{<$i12Gzduu_%F+(&@k~&!OBMrw;ntXZT@(ArU7SC40 zD9YC!?O@_vDeDJTXLSeb^EE*4m+8C`8`T8pyZ_-<3-h3_n=2opG8xP|(iGPfoD|m_ zAdRjJ|3{-cG)NtApdHHnYg8O#u)R-J30z?7g|sJ0F;~@*iFl~6{&O?fW?AQ|5(*(~ zwTaJXV>^B1#ot0qkNJ||m_z3I7D0}IONGX9v#pWNJZ3-+vu!5m(fyBaDYZdVzC#Rm z6krxlaI$MO&)F8@RFA?&TWqwK>bGdu-Oyvo$OcXi%`W6=ciM-(ah$Pr*-DHVkUO1M z?Jf+|`SJEsob7CB=s3J9E>_3ycMk#$J)s~_YJuj}^`CjAAig4slQugq0d|fk99p9c z+qBY_o6z1dL4{VCkN{ZFd%Z$pXM&b-o%hA zJ=f+`O7duI;jt}l?tguZFrA8KNphV1@}3LiWC3~lEedWI;Ou6V?BRtDn2GxhbsUYE z4+8#HP;CP-&hO-r(0;vHiY`BMt2?X1lmkeEapAS>1!ud`d)nBD8?q&}!gS-5lK6dBZS*;CiPL{tx7bh?poX0y@ zR4G0EFBtEp-Tf{NUHEhZkQSRFyiwCo>S{72f2MLn4+J_n`ZZ%us^;%Qv|A@^ zderDH8`$;LFa+0TR2|1YZ1zP_a)&qt;Yxty_2{!wxVJERpO)avyR3vlb6Lax5 zW5f$nHU&rv9&ELxBOjurj`HT>r&1?I+!WVqoD`oL8YvCg5P|<9Nl@dU#+UZ?BlDF` zc~_fK?GrrcO>+%PusdlQbk^oX@>A0%s+^?DcGd*_h{r>yJYmeO0lP^QqoxObKX2W> zMm@hqodH-eWy&)yqQ889@uct(b~X~r+U7vb;W7MQv^hGLy!~P>7l#;6;V~Rb@hU#0 zwqTh|xBO5PWyL55t9zM6R$^1CI#3X$0;YzWRRVo$&J11sYTDHh>{ho_)Ro0hCfGVPp|Y@z=i9U8s#`fac(6#S7X0Mgu7A6D+l!bMr&Z1-cy6JbR1le6Xj78D8t~@*r<3Y{S-U8zpTNgqzk)UPH7#{0X0u8^jPEh z2Xg-d>0D_TliZ#dll;1X!HT6JMxCo0nXNToa--g*swFSd4~Rf9wu0U4X=Q|l)=4;! z5VxRCEwpMcqkk{{fK5EEQ*La8-HBf$aeh_YKvgVaWZPKywu;xFWMyspi=dl22eHIJ z*t43CZQvNQz6sPY-l_=e7UZRo7<&0{B+b?3$rB{?G~f7 zWiND7>z7d8Na~JgT|P_%n)TvTruuxJU};C{ zMqf*~?t|`WW#qa}(N{w)L%Gv_cXewM@RfXEyM}ZJexAPUy)HI}Oov|)RnmX3{Mp@J zlF#sQw46<-lWR5X29a+y%$FjtTP=G+BHl3L4OD=>`yv4bYh%l$ zaJ^Fgc^RlDQS)Cv2`7}l&--ojSU96wW~2DFOHv*sD}icbqQTd+Sj~o}9fm_d+Qr@$ zF!SAhdiW`)9pTidW$RI8As17d1?M#4XPa3S1B(uUlTot?KJA{aw$-!rbUc_i9_@_W zZy0J2gO zf9c7yxP6=8*9XQZC4ezX-J$=*D3eJWmc|+74^3diDT4#_r42bCfFXNfj%0f)qnC-- zxkiKZ@e$nPt4hKbShc{*|Zj#Ri(3*1qFn+!={1mSM)4Z3uYaAWqis^_@mNKD>bY>c+R57TKDA*Hy+a}p zEypbnH#C(e|HoMjTwqrfQ5v}M%mRSy$#MeG>!~EsZaqG9<1&o^X@(Wr!H)94o=Z|M z-lEtW&7;NLNvxZcy2o}1{o4e>40BYb;M!9Aq(SRjJ1_>aHxTg|?|wRV)i=M!i9ub@ zR-tD5OI_Ek{45c_08);=jZghA@r$ML7&G)hD?0E91W@U&PJm7=jqHEN5Jm(NLO2*? zGN3ehJHu`YZnhI$z>8ADTF>LV7TL(0F`4+=%q*tL$7|!m-pV|{p{m)giQ_5itpk?O z8#uN00;cWz>Z_^jUVs9$J0tg=^4MZMKw036m%UzSZFcB9WPV2eZBh6)WXAX}K5}lp z40LE1U;;)ED2o3jU^xFJU~cK5duWn{=@Q35an2oJtn4{^mRbnTq|7L(F=w&s*{=@H zZN(Sr0WM@+9O9*lI1U_FIe=tl zE<|W&UUT2M2IU|ltx3y}Q&DhYCYlzWzzH#$n z)?a+#oo;ZSp3PO>bS}9fCpMPRlg>+Ajoe6F<-CmJU4}rn6S4ZAiX!6jA+M+Qg&Hg9 z#6sgTTMT|pZ?v+C+Z(&TmtW*l<`peEpI3R@dl(uLM6QO~4~RY2E|)_>f)6;XBECrm z&+5SRf}oMuGogW5lfxRI{6Rteq?retdGFE6n3y@wOC);PXk2u0jFsHE*8Oas{yMlc zRxqPNi>8;l^R-UE6Mc@IpmK>3Y4$xb7|kR={?;lSzc^&{XJ&V#AOnfR__q^_mGs4F zs$un#M`PmF6~War53^89d+2Dshfb)OQ){rlkk5F*8E`WsBq+bX94}N@sa>RNUCEQ{ zo-g`6`AS~E2Ta$M8d-;Bvq|l}pHF-)xr3WO=z%`g) zaS*cuoJ=6c?ujtfG5Uuq%!VK-9K=un<|;9jRUt;qN)-ruTnK^B22qTD3(RsEe zg0xV?XLeMrlfNS977p+{CTE$Ggj`D+nqt}h2DiSSvhLTL;FgebK9*NGX2aoXS{jN)CM4x%qU=%PCqMJE5@e`9Q@8!qQv}z&`m-C} zsQtI3F{I)pA>4ZiKVvn8oaR>Kzi93TlF`+EHkZ!pJrc?`A0hnE0L>`)POEgxS%YW3 zS#J?R>9a~w*Lb4|*gdz#c_I8!LOSQ0^?fdqS6y9(%7?DVhL=ydW*gENT{)S|4dW$1 zZ_|}5Cf~P+|sZMC#>HUs@@U^tYULgLvSCrn_Ri6ML!of>~As{sb}=lYSYzO zjJ`0i(BTLoO0{C9F+vGOipB`QB-%buykB}?&j?DvN4xaGZqC5fREX`*wXemqLI-C0 z{}Ljzo_)$9@Q$4ly+Fan%B@*jAZ`9?p@p~GEh%F$qaXsTGWMcpFC8{dZi!{xk-vZY)u1;81^A%Y@M&qp#=A1w$?kwT`(q{51H zxDv#=^5&Hs$dXafxW~ZA{4n^8zD&2C3DQ)~J4P#y!o;7boyvc4vJ^}Gy!FAy4vvUT z(m(n%>WSP0s7O&U6BO70M^Z5`p`@mLVeAo(`f#c1lMt|fQESUG7#BzS?-tONpj6pW zl9A|;Fo%!UyM}uFDZV11pw^;=Ag9*1GG%^iZNlFEZnb|}`4CXbemW<#-2~b?-(cE% zB3Y@S->y~yr7qfF8qzvy^wx#8Ht~*4Ih|!W)AWF1F|=ho8_BDtE>jZuKP6%Whp8)N z_O&y~mm)y_>C@ZOW6wK8xsaU&Vb#hCbiB#%yrk_9%0$!=wUT5x&Meut9oj_pnnO z9sX4s7iIN@PE2d>H)L}N7L{pEL!F>Pui6ak{2_KSJW`2%a@`)71MMyKSvkNITas<0+A>0N3-nI9(K@8FdB zvi5UL=-{yB!|3OJTVhTG=yYy6X`ZeZ0Hb)2(eNo{p{aHdheaJzi5kt&iY*#I+nD zWZho8@$(@Cnn~fK<+*T?7TICiW~Glkjh3z_FB2<*;$K!TeBui!D^tr?pV~j>^E7qV zJXT(Bij57~y_gryYpOq%C`a{f=5$2{`tkxd(up884Bz=Rj+P#lfkQG%S9^GLQRu0*lM{I z-yD_o4#wPLwBTrVITm_-Z~?5zXIXuq4bWDX!TDK}()REyBe(-n$ID)U67A5}QG$l< zvf$6d@1mWJF64W_SV4q@>QU>bRSD}4-V$e75I~0#&5jRZ7@yd9@LJ(q@hN~s)nFS# zSzhk4yZOFnh4r7yUX4;qYcHR?v^djz*Kbn0yJ3QtxFa7+fDSGHEq9=bOA7zKhRSCN zV$dN8g0k+xy7VSv8*8{M@;bi1)VDYhVJs+ex7mNc+-)}PB6}d2wz1_*mU=fAR3aEC zt1JLxFptrJ4EkKg<(*iA3#$CUxQ(VaO|zv1f9eCyJNje*_|9=J_|f_D9ALx#e)^U3 zsiXmG>~#2wG41b}s6S3+^L=Gcnz-%fia-%WM2A38vlNfh#YHOm3IiArELtE6794#w?@L@dN*2TUGqzM2osW-jsWZEQf zwSN-LM$;?r4<~Y$+*{LS_$?-N<^FaZc>3sBf8RH{D1jYtU5*>;J?}36tKDs1^Df8B z)0IA6S>pfj z2E<4IeB=X~u!Ve+z#CM;60JyBi~+HLUR~C*7F0eKFmuI1tUd7jUPgYyV9|iuFWbj@ z9Q@f~X!)LIvFel)T$r;|M3hQX7$MOrr5J196HQydXnxiz$cmhRB+q;|XHKiv@ysU( z?dMz;Y(8OVIbOQ zz!?^XKxdVbQV^P0JD~c6h$mmYZ=hul?a`LR@?_yW13a8@wK`sIx}P8Xpa4V9Z0=RY(uu6&&US^9SlWAV@v-O+&W!Se1Zo0>)!__0_+6%zv z_6f1L$&^e8T4&ZrCHW{5Dq^Y6S|b2H!2c^Es^#~0)84|U9Fm)O%k8_)_F&ZcMY!U4LA6hgM8XUwK*?}4HY{s1!pcG2g2D`a}AIE zD0&@#*$-3`yi6OlMWQM;-K5JfO#7KX?Qur^9iRIXj?|d}UN2Mz_F8Fw)Da7xN zFYP~OvQo~|#uZN^Ixl)3tqv{l&7o>Zrl{ z9krArP7~io$4r;91t0k}v2JK-D@T7{veSMjW7@FxJE5t&P+anNL9$GIE(Pr;l<9$g zUR~fPKB2EBQ#Iy~DG(ZwRcV_ys-a_;WQmNm9o+hvox5ygBRE@xxix9f|E6^GZ%1IPOdRAh! z!=epC{_#SEU}+~8mMj%FG<22@ukq{-^ljIb(TEfy)tO`c36poF5)itdi*oT9zkLw( z3kSTwfZRVhyE-pQ(oQ@10?c0fmW%bwOtE}_m{^>gFG6k>Dg$M~$I#581cZyAS>N9s z{ayuZ;` z*_rdLMe$mI%!LY`kF=KuE=7jEIHFu5y(!zKN&L9@~ z<_wvdITdQlD~~9t`ZUD&@Tgaw`AiQ>?V+2+)uuo?{#C;{I}2fR<3cWLYx>K?Fq{iI z{B3ohYkM7;@FZ1KCpJzV%Zllu-P|*Wmn5O*QNeI7|rxitM2k37g`e^>e(=6XW@ z2W*9jP%d9V4_(wDW-3uki43x?M4YF3h$te0A40>G<=g^Tboba&%K3AX0K-f7!dPSn z$noQ^q@9hq#G1_IueqHK2|lLp$M5p<=`Yi>iOwj6Ap1<>@K(Evs zKdvzL2JmsLY}j{sj1l12b{L|iSCC=%qc@h4>3Ai5+|p$D%`2}Oma58Wy&sS344mI) zJDn`V^`0D05N~cIv%k38c6V~>yHEcQRsR?yY1g#j!fo3&rl)P&)3$Bfwr$(CZQGo- z-97Ez_1y0l@$LO1E9yr@#dXC(o_VZXnNLs#2f-7hRdD^xQ_>EC6|;Bc{}GDCe(Qr( zQm};dJ5Y#s)&WPfP`$FNdoiHrKWu(yuv+uy=zm(~-@;KMOO8Jc99aF-cjpK(FrI`j zb$ST_X_mfq%1rmth>=Z@TP>HmD>u(NQ-x6u$q*)TGa+L-cD(a=#jH?Hzy@i*1Ixym zTzXUnmAIX4>-I58KjdZ!HVq8q6s>U>FQR2gQSJjS0tgy3S-|0y+H6fxT*3A{JGQqw zib&F`>cYNV+8u7Bkyi-j)?1`=8!+L)*G&GFqkJ_cO?x}r_A!TY?Q!@yin#B> z_Gf&-z?wNz1DqfzDuHraKF}mVYQOp7C^s0Ol;`~}*!@YY-sx5M&@#(`oZo=^WCeYC z>YRs@IB`9&4^Wi|=sRkT!DObdgqzs2@a5$5r(9OnOpaB~oc0Q$M#ZOIE8CN>mqpRz zo>%H+8X#xtjaKwxwm=qp^cSQ_wd*SzWfP}} zZJ8+YWTH0vw-@cITlb!h8!(h*_cxz!m*E=8EqSPy<1aVD_=#co>*YWIQm zbi+|6=&24edwJ+z6L3(phs?L7L@Iku%2RqB-beWU@@dAwNKc8HXTrmRQ@4^$e~;IU zQJbidtT_mdEoYpqNO3<2x8JlLjv#$xDREPYkU53KUL>TscO}|yU z2=<58+L*srZ$Qb+<2BRV+un8PiBF*f-{LDSfgo%4vkdi?#M}+t>KRxnp|jYxc~T5t zE9YEjV9Tz@I1FMWOK}F23p%|Xm_3Yp-pF0o^vCUKhi_lb!CV2x)d!#z*!;ze3Tax+ zqPoU?=@3^x+fTK_uD`IDp+CnQt|Us*Y;IM_)>leM#BkNa-n#B41?(fnmgUbCUP;KV z5pSI>*LUE=STnL{s!(t2l2-^_a~vQfN$^>J2E5lXRn4FJM{()d5& zphLL6tz%;=m&8Ln{$k0ui#XUEo(KdwyuwRa>4*>c@xdIMhx%4L$o zDm=|AmvhOQ@?~T;m)-Bm^#9jk#a`)H5&|jGMJTFf_WH}e3bJSQhoSx>P>M{dAoIDn zYTkp9*u#%Ie^Tm|Ar7-U$8e~C_j{Mv3ErOI)h~bZvH5F&x!`l0=4ktrOn;ICuG$&l zP8=x>zDGq{eb&HsjOOtI)id$Wl}eeOg8TeBdN4iVmmzF4JKk{KnPfWy*^_NR8A;)C z;Uf@z+5RJv6C)n5u|+DuHmpSkwQ9aa_N%S{q2l5zm%ybAYy{3hv3H%3%!pY7x2<+h z*6;IJ->l}$%>-J^MFZ48j32%=5E5&F%e{D@|pE|AB@`t?5% z@vk!5Ph2U(B=~Kx@IpuQ%}1d@xO)jB@I^fz9hf?@thdLfD~2@u+TBlc^Z!(|Xi zh7@xkQLLOvgQj5dBjIYb)|F?0Hy?b-^Op6>haq;GPrp^=xVO zN)UXZ=}!-Gh;lQn^<*h96T{dOV|r>I1@m&mv@C9CTYP)G>>ph{DBk%iRxO^f!)Wlj zT5@^Z)e{xiU%WW$CHV662cadxn)%)Flpu?fqBPRX?D(J3671vIPAMsnQ`2CSO#Q-4rHdzX;p(XmLuh!U*S4ZBK(WgGAS4WZmGw{}* zm*80q{64zxm$2a9x(LaY8o=G}KvK9JO6!b~yY4>{=@mf%$09`NZtHY;9$b z;0jo-`>($0)49lvP2c>B)fYucbBk+P6SGF9F^BE4y=F+Gqrq9ONE|u^ColBl!V!M2 z2d`@r>vIz;HeRxF{VZI3z)A<72pOWcScgdgw1($%MCQH_ zXYJHPNJxdJ@SJwMN|iKrn5g}!%GzPu-#djiP-;3mSkM$CoWEl4qoS?UPd4>bbB&%H z*DLSK;b^)oh8a^VbS~zzcFsxbWnfiikZ!Y6lA8cei8hib%?NAJYRLckO}X)hOK;NM zU04(*8A?io)sL7=*(ne4Hv&8~@lI;J%jM)ohW*d(p*j1i0FuJ2WnlxINppCJn87$U zgW)}ak$Kq7nDO!5(aCU=^GlfVdo5U&wofWuZCM;W`K>Q+qQw@CU=ICNfncBuBFPD8 zugG-Uu}b?P2e<00QRg}2#Je?x)=bZH(1adz7Vw6IQ(R-hi7XABxdG1@#3e?GKY0-+ zSdVNw62!nGlvWZWM_z{()HVFacSet^VxdNh5`QWPQ8YlyX(Jz4TtsN*?lN$64w`K z1{9ReKpQX=w_qTnU@(}=NHj)0lg`SnyjK{ljg3S=>06I)$|e(TLsOnal|DaJ(-lri zIg?y%Iy-G^o9;@@m$sFcmzOp$LY`Y1yZb;TxKctP z2x)G87qyLA9#f+KRqAHq@KCcSK||%7!|hjvK&1_0lf~8_A5%c3epn1Z)Bq_5s}>OwRgSHif2i8n1)sA)%%hFM>hfLcjs7 za2Qr(I^Cja_#j#jGmbR8+WF+p3p_7BgIJC-dcJ~0iBj}5mIj|*m?8-e+T2w`Mm6$U zCFO59!TiNs)OkV>dN<@@AOvmovs4g<>qRwGOocrlKyG)2l+?&`V1btU?iKFgMo(pVOE8p7VsxO9WNpf6ZQ z8%3LsPKMP^)m4Y|zqNZv!PVG&Rt^40h`~iyAL?<4_0&4gE$BT%F~|v`kT)dzcs75> z6Zs^kH{Q@DF$k21#~t1)D$QFcw7^sRPIj8-!^*I@s+of0s@vaL&R0Dbe!CT3e|DS< zq6CgCuLXZDZE6C@b)FkRxx9=>bx2U*`{Cw0I2(DRVr^<=oNZ-=snEE1Kz>I81)YV^ zWQnTjdl%#n84+r3ibMKsdwNA7x;%sE90rljBYD8w+B6m8ChDg;2f>2uQW9;IIH5_# z|7kHi5OTWqK29jv?BlSv7NNUZ57(|Sy7cR*F={HV(sdOu<7Vp&zEc`*S{RV81UX0P zd@N9kdb^E!Ry&TQ0e)5$ud`MKw)FbEG_)Q0L-ORk`p>&l=%|G8bc)X&5#%M`**(xh zo~ymdzUN(Pyk_CA_dmGqA_K3d(Y-l6JT$(zrk#xJc%=?@Ez%z7&3VVumlnetK{uV_ zUq@ZUU*&2XX{FY8m+_99+)3n=du;=^q^0bI+`dPpj&C~+>N>wlbzM$Ev#jP;{?!W0 z#k1kVV9myiIbfyI=c>3CG(6 zygE0}%!_G>Z^1zhWQYdsMIJXp9~9ZZF>C4Q>RI;WTJUcwEIvJgwF_L64ue|~Ld=9L zBk5p@I5kvK+SFrsn1S$0429;89fBFs;0U0LfG`}`_7^zYrp?s4O2`XD1}foH^J$(i zxkk>ja75&d^7@_?g)J_;dJX8s=R+a-G>L#O0$hpFkU91 zYbtbf`KGawl~8yt6twk4!M^{7`GF#|C!|?bzUM|_U{scbi?cBlmIRhiqcFN5!HyA& z)3BCeRJpxHnIQ#?UIGTeA-7-3i7|x5p?+A!L=v$3X&7~A0jeYMgIKZ9bhHl?J3Nmz z-afB}F2>e+ZUFC)OaO-mbLtbEtIHPV48{OANtBlAVl+vUFr?ORSuKBy9XJz$7GhV4iJApA8OMwJM zsKG5F1mTP-eibqtm3|ra>y=}>&A%MEe5m!9DRXD2bx16_j=Jzy7;!R0sf#LsR2JIQ zvnXS4Z#V_Ai`&EdGfwFd!!z4a;Zbv9_`RqY8904-fHnd=3@xi7^zvjDhSU(G6GSad zJ2Q909 zygcvipTWVtqCeq9;v2+?_rQM*B>u${aXo@v{!(c60-=}TY{HYL99-gi6+SXNb)bur zxZ&v{wy{~8B>14jw7|x}Y_%1sU9Era+g&ZySX80s&eyu)DgASV-FlxsS!3wi`CMpJ zPz=|T*TWKr#THeIIb z_~po)@wq6H|9fL18B*Vh5CPKqOG)2YeGK9Srg9CR>dpvEf&$W%3rpiwAm2YB38GOA z#4s#ZLW3Bz7{!A`n$rOE1uBFQk4peVV_!cssq**@u=1~MJR4)fhHTXIvUjytbWCju z)a6%#ynpQ>WQ6M~iRhM&>5vXNt$uQauqN0oT7023=7kum>X3BxEs zDo`K=KETFFZd(Z9@_ax;jtwdP%Y5UjXz1tV>yK-Q3u~K5!dZLM$+d@Z&VzooCn^DPj*|&kC_B{I%LUwpu1zEGkT(cqN z7;<=%ckT0a=w);K;agF&Bu3pAzRDTluDu7%`RALwIRRh1Y9=zS)=gJ89{vZEfw3vT zGEW@WJa0_GtHEb_TD&T^Mf9=nVg9uPk=)2)9!*11%9td~MlnGb14dO@8n^TPi!aze zJ@j;VkjybVzUo2PzKcKT4L`-IAxC-OZ}?h5s$NrX~jC5Ecs}4J;=10KS)m1`=DM z63#Pi`hyxRAhgE#W2-ZrS$lS4j!xA;xNlx&dLfM0>wIvL+~CQd*Bz^UIH(;wAl&Ek zhN1zy!5o4OzN~-g4dbHkcZLN?>)3j?vaZeP`@Vc zw)FIkpRAV^vukSDk*SUzy&Jaa5~Hu@?ZDNrA5Yr>!S*}m9U9K9`>GCP+dpKA1&`~_ zZ=VU>U3(z(S@6mquUi7oh{fNAm-{OqHJ+;&Gjb90uNu1o7ZeNmE@Lqlq^dYdL{UrT z5+?^NhF-iKv!TcksClsT7>tw<6bGc<3w$wf5Pd9XKa8MCIA2Es=N53M5$5~58F`;` zX~QpO0%U+*T8T6>&kcs2jjUehWftNdR?R)_s?&3=ggn%`eoETuHnwn>s7*BsWjP@R z`*%`?i0`9_K9VaU*cnT4P20CL2!8Sj1*0im4^1#{EWhcHUKT0xSB0(UnxAL2t1l#R zt3{EKV0b4IZqd*TqmSaD`nMm2Wj*LYxVGImh_r{J`Vk#Hi3HC#dHnySC)Jaj*DS(= zb^e6(&oM!|2p$PqlQKKj9DUizt>0!|#s$r&_+_uEujrauRl5JTIr(`-A=4gUO}J)x zNRk$5{UW7%2Akr;9uRCc%Nf+&8F(#IG7|~Lp(!F#l%9Y??f*?fTGKWOQ;}B|t44Qg zgKo6;yJ}Ti%dT&o!`Ze76!%b5!pcV*_Wl~BhTKkr#zt|X1&=w5Tm-9!(&!oV8khj= ze^SS0U^9RX$XX|XR`L_n1lr4K?@2KsvOw*V#HwDUR$CK@+0!}<h z^HBKB43PCc`&w-qTd&;FVEW0)kfoyTZYQh>cYKzBp_zY_N}*0zx?XR3b;uKd>5!Q| ze>Dp>l%2r#-Nr71u&yb5>_5Y%^`gWA2?Ie{#9iZIP@A56M!@cQaRtZ&xk#@y{~ARA z%#^AZrmdx7PU#gd@6wSnXi{#dz)(c*3@w}o; zu*KnSj0f&gxY6sg$5kWaSAN+X_jE z>R|%c=8gfIf0uMDu<`5xTDztmgBS#G<|jxBoLGxy3YC0Me$PaYfGSoj5MZWC2u8(= zM;sQf5Z>(`Ahhce+L%~|R9;8^`)UOSUcpWZt!}2k zBD^QWr8J+lYZh(2b$uD6^3u6T)t<_af*H>zu5#QYMm4?>U=^6d16_Vu zrn;{z(cOK<<@kr+p_>205x|gFAf$l1|{?O}dAx;>>Y=MOGK zLhVXJPRN4#JKdFm|JoBQ0W}6B){aTh-|Fb3RkTAY*LYJ{9`P`0%;?dU-nE8-D7s+s@aQ;8c2MuuQNbd! z0wlmn^ajUilJ>Ty8DNO_*-SRe4`e$v#VGmbYMDY{9O5X*o8CoV>Lo8>$;`q4r=oFm z;YK&fkCN{rO-fkV66-_P`kieWpvr3%b)qF%=#PZF^9Lov0(5;z&=?{RKt9LEA5mi~ ziV<=!8>7jQ=NQtK#Yun^=|xOE?0T}*KhKW52y?yv4M!LnR`#^7Z>OVq(8Xy`i&0{= z7>6(Bgj}L?Zt6|Q5umWSkeBplht;{;((YeXatJNJk1SGP4A6D?MX<(eL^Qmq@RLNmq>*%@ln3!8Zs_|X{&DQQp zr6G~nz6y}j1#csbuYr5kxhwR)PYb9*8U4DKyG_Jf_Y@s-m6=|42S@YGpO$)FtBHzQ zw8W>b-KHLMjeHve$TWlJD7R%vkO%jHP9?ictE`9afuU;Cj|i>ybVj2S+Zx97PFSe6?$xJb6}gvy=I|<>Z*Ugq;zH?SW*V zfqC5D(_*lJ)gO#{N9NX(zwFcn$u@Tk@?nepG~ts?19HM)$_K&g{A&E43q*ICAqeW$ zb1P%q=Z%dtjfyb2-C;1Olx)DDYBtD<<{cmAmZlwU^M!^M%bq1FI9TE+1(Va!Hm)Ui zz%mmuwkM~RATe^DyT)+C+%m$w_cj;m#=gPC@)!umm)jm*72A$`H(mx^Y8v;P?KmMH zm&-|$+fU2Q7cP{h)!x;DCbgNVx}2X4xN;mfN_{#MDU*Rnn=cVI)oFA=lb9HLC>B>Z zYN#j}>teD224hT59Z>WwO8VmNvJMr#lHDjbs4`sqTmjaGq-%lqv(B~VwiY4)Tpkb1 zDOHVW!7A1K&3Zb-piTF*nlS^M8Rtc%wOW-_ylezoe||PB`ZgcBcGIM9-Z$!R#;);M zj2)_otM*t*wXVxbDMRJQDYKaVik|>Q$8pb?)A$rRS^8pp?!dyi)F!ag>(bzJ*Zul{ zS@Y~v=uIzw$8@AsZenay>zNXAjLx;B+P`kp5L1B_Y!<2gkPO zK?x!R{TRf0{q^FlI^RDp1OheNeyY*w#uiwOOZ>GwF46F0nbHY%t|{vlqmXlxj)VUm$*I>-=!HnHp_x1mSVe3gr>fDq$@8(aesRy&<4;B<|hDK z?f;Tk7>{o}FfG*P8-(VCGT*5A+&l<0Rr>=<^SgFbnS6%rN#L( z^881P7Kkr-OrAcNJ9o93!Napj(eLk~YYo{(^<8;s_1R11QiH)mv(eDeM)VAyWSEhX zxJr+?@Nt$mv({@r9Ssbi7sC5Pb)s}RRc~kG_-)wEAl@;cvSvf(hj`*5_0KM6DCNQw8Xo(}3^UATrC~eE4 z+pC^!bGuCv*T5>rT_~OF`pJT+DMl>)n;ym>4nE1ueJj@48cP8xsnT;HbW+b&%KsEu z8E*y-O@kDqHzg~e0yC8Hl$o=jCLnyn0V;%$-9HBpOh1Q|jjUHvI5ouFUU+B}@X;SS zPOR$VlO=2fcmO^u?CybPII-;WJEoeEVfJgny7{#zKvTX~1FSD1{8z87z&s>rKx01B zdmA-G_|IbCE5viqKLsW_J~+yHmP=QK&Ew8`LM&mtNxdcgI5xZ`|NbhhE(~iYhdWV-(qAYvl^EVZD6%!1K5ps?reB~ijzwGrToV^8!aG&|A%^< za79LLkUT}Gz-I44`g;ahEUq)UDC$6A$i2j$-p(XB%af#}l3LOL{X-IsX$_voD$$u{2hH98-Ct9%B!aOstMn=P&@el3nDD;=ip-DQi6zwP0#IKX2SZS@V9D$Gi_*>j7J z)%w~sZ3DkzZ$r!E2(iPpU3?X7bbtG~U41>ALQ;nE(f)kiz1|G zQ=Ipi@PPXqt2Aycr!%A!s?cg4IAK+V+vh<+4>(niaNtA4fu-qbW;q=5$TSi!q{Zyv zdk;#+_+bVV>4&0*_4LkJ2dZpTa|;5l;M$V6j|tI83ZTs24ycdoaz>G78@_xNUR*?S zE3f)*?p-#=sIj$D_tVEx>^CiSDP~!4pC9x45pi?buLnnzrEd^~lBxs%!}Y0irb5Nl z_E3hxU5uZ;z7r6j( z&cK$i9MhF}U=aB%Z0uRdxZ=jMx+&pg*S>*Eg5v%+H~iI?T2vHJtkge*WmGPy+S~z0l;$11m?Sl5ywnyW{bxA{=pwR%f2f+58Dd|OLZMOu zOT{6Z1@x9OFmG&P!(%pB<^P$|e%wvhQaIN4C8-3vuAMK$LdL9}tFQmw{d+&V?9|e+ znEPGu>gDyN;AM5bhTh`InAhcy|4*Vk(RC&s#c~Z!PETg)F7$Qr%Rx1U(ahejD|v2) z1TumItC5QlPD7_>4c3SlqKaqOAG(kT{#jTbBnl#l$i^xYwRpOQl0`Hs(3u`Q^pGGX zCoFP};4L#Owli=Q07ELS-NHb@9q5V(o6)d zqqZod%ynmqv5%vITP1>2E`;yI9qPB}V|8;{^o9E0A~d?B zi;+ISn5PwR;;BOirY>ilI|Hi@@n&Ik1$Rky3uaMScJ6ZIH9wz*^mI1MeV zPylPXEHS_cWE`S7vxQr_b9h?V$!35Z_>IV@FB;5y;Z#T?8J&P7rP!znQf*PdnTs02 zSLRXuxURb#dYWc6i47{4ReWSLx12=3aOh#7dkr&NN+uxg^p^~XT1yE3dH}a`qYzJQXp?@Grx;bdT4Ax+^s1INXy0sg+dDC zBHSHCUi>c^unV3B;7c+ku!}Meba_dA5SyS8gbm;oH(Q#&A+GsawlzA*44XzKRp)(S zY5(PHtrajLzzMHngc4Ji{_`}LAJy;9j{yuOi#MK+GdrodQT?PaT)O^8$<|s;wCxg} zy|b1Q5v43g(H4us^0};0!-5Sy<*VH(;pJL*t6#ZcM@K{%`AUZMQJYZuaj%wUAwn z3>cSjYPYeCnFI07(o&KovbNHVwPl99b}#eDX6sIcX!|?R$XX1HquIB4$D@GSP*V)t zdMuXu^wZPY@^;hfHfA5Fo zm53W7?PHvXJ42Ouhi!irc!GTyXKNu12G|JVTU$ei%<-)(>@U?1TfofmaqVWOJ_g_P z-&_Ye2R)Ag#1SMs()<6c6>#fmLK0P|fU$die)zT_g31p!kIHtQ9Oh z$KK6uBGZT!cT*!hrxAOM`wgWY6+FWu8o1r^CgLsCaC}OGpy{RWIPL(I{^!hD&PHiz zuX0A}ZQIlLwClhM`laqSA9hRos&8j42K(};CRMyt+5>kVUZl@)T^T_dWoJ({cR~%# z+VR`08fNQS--aDT&n6Zvb6egm-s?>I*RMC+bqdmRJN+%OX7DJBO{Q=7KmArbKNJ5T zmcJ-Pn|SiPRBaL72lmYfbG{7EqVK%nmFV7jp*oJb=7Esd%0r$?r>!0-pZ6PZd^Edp zUaS^ja;oL1opD<{%ZYr-wKm0$eQ?>pI#~5ftW!agc99&{K|&Xi>$Pn6=Ok*7aRm&c zmMt(uy|&Uns4{(oLOa7c!>WtI8M%)^-=61|;(b6|6^%Rbl)snvY~aC6UbLUxk|B+a zcbbT}|MjUQt+lO*S2>8aw3eveTy?h>-^^Z#U(6obwdwiV?20e?HfSHgygiQ;*}>u8 zPREvSe1zPSpquw~7nt5w#Nb*Qx3}x>rGM4mxkd_)CbTKx;RcB7Ixbm1UZYh~0sFMC z0K6ox>!m#QE+GLYOcItQ^u%e8yZu#Yns6D={wa zC`u0}l*H0^^_Bd2ANO&>4=Yp|4Nlln^7eUA!vLxJ0SRZ4D zCgS0V42KjTo9X&)B9j#idhM@zqvA@S40WI@@R+8en+P8E3pU0l*2Yq%QNIy^@_<8H z+6|#KcHue5>Bb;N{VCgN0MpzSu5s|kj{3{Cvt1++kNad(+Vw_I*&XARi7!xft!7U; z{aoc3=~k7}wfGWX0)zf7=5Hv_!#FozppQ~L46BVVl@#8)dN3`ksJVqrVUYU)IN3db zlO4{z42g04&l?!kb(ADz>`nTgNjt^A39(Sv2k46^3Q<-+E-XI0T%g-@uOcx=a?Fx? zYM|uH*ul?4E!6x%U~FY4I9?-&=raQe@|^<<{mk{M!}OiQ`rjy1j1RNU!<}W9G4@)0 z^IE~6atKaJ=CDfedphk*2cL%4`JJltJvQn09nJ_dTWop*)nqNGD5;-}h`UjK2y*2Y zz2ED$;^%MFVPsw9P~#U$)jp(z zcmyYA{L09UI;PZ2y=~>u?~H9#_vKU^jc27rKVMo4eEDfICr;k!N9JAv z7kUwmxNcsK?~aK=%Mf%VApZMfd8tzP3x5xO_ez@o<$GZE2{DfF_N7cX=V%!xeVTAx zH%EC+e5xa7Y|h*J<*CAnlJ9-mS*#8&>LQsq6^-`mO9(t^fErQDAGUdBJN#Dcgb7kV zz$YH5GO7M(Zd;_IbxRvQV6u9#_6Dm2@}D?~Yh{Cc-L7nqgwWjKjSK&%xv5x$P$pdY zL>+gZ_POTIRTDiQKfCkA6=vR=kN#>yeQ<_>1@zJ`eF_6|_d`8+yU1X4jB}YzSw9-0 zlka=yMR8Od(u4bmC5ki!X>3 zlOe?xD{4U^oN`pk=wn`>bH0;*2`&LI2Tk&o<40R833Wn#-wPH?MJ@xJ6 z21*Khi$XXL(cS2B^)c`v*e=>0{#T5~Y8go&jsjeb?nLE`cxy4|d_ha2&a2Z8i3+4%L z-`Dls>Ps&z|mwrPuZ4%}<=i%BOA{di%ib z@_NYZBG<&l`8~OOUTsPFeW8!m#q4CxnnW?N1R~6(b~+326Gu^}R<*e_ z)Ye*A!G~fGIlMh_45s+}SDTpB@)SzZwCK_xt!;pZ-izLHNJ~4((!riyr_e6x=Kig&;zS*_ohH?eI42o623k)%${xL z0+=sRPmR9<+jXqqD5^AID5%>ah?HHZdLNq6y9NFtGy7r*cu)n(Y6&D^kxg^7edBTjPtC+tVI03FfchJ zREQK62aXM`0N7!Sz`WSLJ^;d~2sRVM6qtutUbt!Tyq2O4Ejp)cZjxt0Gt^Klgx{C+ zcMW*wR>>lff!c0L6ZxQlHK~*q!QvAOIHV*s*dnr#Z9-IWH%56y$ZN~RE1>!M$y|aE ziE(6&j{ZWi$s#revtuHep?N&E?hNn!!9iXKTKTiMXl7k0rqoPEo&-L-)5=|w zP!^F2lN)-zWN2??=&vqj3?}EstcD1r6&@o;H(e*U5NxiU!D*2*5Xn4jl+AKU-Z#Y_ ztSL;h+`N~!z* zf`rQ;WvKID$*eM9i>s2_m2m1a)+duls>#%|_7ix=Wc+;t;nc9v8STAQl?K2F2(Pjw z7EA*ZgyYq%4`Qdo)^xKR?jJl6;~6wN*{7lv*+xCPa1#XQLeT9e;j=V@j|XOf7$A-Dz?Z4Cu^N3Or! zKKbKop=q;o#v3yp$OKi-m4c-I7O7yi-26rw#NO-*wK08bb988QG4QXi_Nu!(b1!H1 zb{osR&HFR~Cpp0-gy-^?dl{-+w)XLyV0GJ53U^W8? ztT8#QmLlkmIcNyhl>&(IsTx!dH{2C6r4(Cpu)NZFE|q(b`*dOw(WyELinX5HwMGKi zcw2r`;+@3`27M+$6Ea8KMtH(lz9p9_{R4gz=27fMoY~k_aIKMQA(|v~I(Gto6Q0*N z2#Aj>n$ZvH&aS$3+;{YiftZ2SsURB|MA@kh8ju^ zr&37TKn8p||tBBV4fNDNY_OppPCVu!?T~O7^2@c>vVRf`Wl?<`35-o^Q6G zfaurlrf6^WWxpIvHyC`0m(+&n-Wuvw`5I ziEeHRv^Ho7qB~jiBvbu_M;5xI3Dv@E3Dukrsuqo7$Ev%@4sT@{IDdPFYJ7G@q9CTqY_1C;i$Cc-28IIo)48;?A-98_{AqD&o z0!7-rmCwB<{x6gbT>k_u6%;KzCJ{$o%&$Mr>bnA94+{6u(gIQUQHYcpMx!E&{L~fv&r>R~1M5g)D*$>y2cQ>uGe-5K zS=-umd-l+PB@L^a6SCU>Q?fVf`3cYrggK>Xg0w(^nGnH8b}ZyGLM+AS=2YDr%4%VJ zEQ0y&GOg^TD~r>!Yg&+E#7BfANt<^%Ochsi&9k`{_9zV=_@Frzr*8+-v(w$}!u}Mj z%SZwwR>uIQ_Z9pf)AJS9i+WB3+o)BWi`44x_N4vo61Z%}a^5n(&R;(wK`n&)sLAF$ zn1S#Vwj(p=iNMFkw2ov> zs=8NzCHx0~B%Uh)NWwN|AT!zWvjZN$b)0=tc-@#+mYU>Rdz z%|zsIoY1%zLsPDT*)|7W(o~VQyjBgGy{2#K|1|W;}{}-~b z{ZFK#I!7u<%*|;AcpR(f9tBTBZ+D8*q*c5#T4hw0G6_A7*HCF^mY5%{F7B&W zRYa1B8C}oL&_25tXPTwY?Qqn$L~C=3TtRRmH*DYtYq7?(V9+p>eR;n%`&6;;+!31b z5#Ut{YX&B;js+~Js5qrL7at)tVrzKB#vDP0L)4#^$fuhRf=e*hMPP9G4#Hr=YfJpi z%H?pHa(Y8q<=ld}bN?5-f~BjwIW6lZM>{OHY#RvK5JDxcM!7tw?%M}-Xf>!IP8P9D zlr91@U!WCC3zV+r5jFOh2$u)L+)=zrh%e+)%XdDTmJS>mBafny!w^wDE8Iq7vzp0R zBm3WPjlz&=SDe07p{mhVhVqXK-^*OI)0WiALn!E~Itolkm?56>tGA@@E)gSapu{vC zA!yL%11H-KUcPcRQf5y~eVr6!=qo1P9@1I)qnXM+r@TPN9`kNaVfp(u)8(UZODJFJ zbbHEs31-H|BCFS^ZO?T3{GPA4zY{*g#KYo(u67Z~GJB>fCx89h^8=h7%xB2WBKY{$ z-dJ5BW~nlBW-YUWhO_vjYL$1}P6hUuB+8^3OHpK<1s*5Gm`h1fWnC5j&Fxf`dW3~O zTbY#`da*WsLyO{t zWjkBMQ&&HEBCE{qZ)wo=?a3@AI=|9j5!7W&pj zudSIQ%;L|xb;KV<7{QbPS9iHi!e2;-Wwl0J-kI2-!w&HT(6tCgP zeGDkc89h;@FDI&a?6NbW?0$TzvYNU*`Kt6MQ%x85<1ZJ=9}CV2@B|X)G#3tiaEXdL z^g)j3?9>?+BzyEtG8#Obfd27QwxbUF(b@>n)$RaW?(8}eMrUYzz{91&uAdKVn&&xS zYpCy-k!kircC+oV!QaCF`Rx-89C^^|csr);4_ZWP5AzSp_iV}{VF|-r&YuPN{gNF(h?tM!DNRC2Wl8o7eNyNoPH)=^TQkQoOVX@r;QswT6uE=tt)$3Mc^tDe=& zt;~F+`0c6)+$2i6Cw{(QZUq6WA~kN%jKPREb4t_C`*tU4EuWQ)>Bs595uTfHvf23Wee-=qrtfQ$DOz2&AxO|m6+91-EJ4eXdtkG+*zUutP4U5Y5pr%MrRBRR7ckf)mvLSkwtWS`^z@XdliFzk%jJ&?4Ih z%h~Q>ySdzM+~?o(cX_a6V(c}xQ5k(H(>Vyc(%NVBqoH+iBI1dZ&2VR?XQiQ7etx>3 z-DhvPb7Kn)vFaxc#cG)m;`GLZ%TIedN4?d3VMh2pTkHH6a?PyzfCnAtn(ujqZ6J(1|G2X_ckUVF zU{+n>&%ob(Hh2~<A9^>FFJms^yOj&TYZ^5f7@>E z@(TtIzWIVx=2+#OJSR$AwpGiXZw<0J?YzM{e)=PrhNa=jgq|n6)8jD0aDhdMg7RRc zEvh_*AqAWAq=U(NA5|d3zyrNNg*ZS>To84}pIi~r?AFB7TKTzs{E*$gA&h;0T%-H) zdHeVtBDOo+<8MHAfBTpHbDN<@on~z2H_)9sTRW0*Ab_$xRqnz4CLE_s+{OZDFKMa+o5HCyQj9I%xh!OW<) z@=F4B4Gt7!tvgb%a2H6SvWJ;lz`^|hGueP-BevNi$zFbPv-)1UaZBf|kTS7aX3m{V ze?WejtuJ4^jGYNV3eB(ZZ`ucQoz2ISRr1or!>%mEDwNCEOeyH!AO>2}Y^{nKCcvq* z4=b$py4{%R)*i?TYB%14r(2$}tsgs2K6JNQ-L3WEL4>Y-l3N+2dvYt|$Wti_1?|GR z6*F{4)&4ydh3MYeVY@4A_w_Unw!{&33y2dX9I%xQ?|`joZ4<*jF0odSweCp4DlS0@ zMX0C*g-$SgZ;|YD4Dbn5@QF9Ok5gILXsV?@i;5n-x0e*Yz4lQYbfG!ss9h$ z5(=DDZ?%#=-x_{184Z3l|Jdiw_T$k!|KoH1mnZ(5pe7Gh5`3tFQ%FkKbhSu@0MS9F zGzqJ`;znFfP5jn0thOK;2Xz{W!i&20h;C) zH#`-nY+@=<)0nw8+DAGxtgJ~JEIoY)0PdB_m^jAFLxnDY;$cQnjJR^aCq_R;bW(_k z5swi~3UiE9(JiYlXCHnLgWgXY0$7_Jdl2-2fKjB~d?cfqi7D{-BE`oS<~sK<9^Z&# zYp+l~yj$Dt>^}@ufj5gn3veJ^92)0JunlEeH37;GJ zDW72HQ5uMaQz&lHgIj+L*o)zg0K*Mqibp_INl5VwsJaQ!P6CBbBOg2OjNu0X+|pvW zr~yv(g3i3PRC({dW2n-|+CY`|Re7uZ@>3hMtXVs>MdS?QCow7?K7@%`hzbLy#Dte1 zdf<%~qxvP8@!o2EDzJ{=9svY&yG9ixIY@!&l}IrxOrqcih?5dIO{`!&UO79w;K(34 zp(`z;6S|#=R21QytyGTAIME<)uz)WQCU`tJoZ$K3aAorv5%!+Yg@mkmHxd?}5vPOM zrhy`3{3H$>6vBjb?iNPH%1PpWk5@!=pitKRVG((s7P1Ur<4 zRr)O^2(d8%PKw6{5g|4><#inU4|ftuFXB$ZjW5Y74>VqICqxb!#3^}8+pI1|kY#V& zI#e(rl}$@WDw|SqqkS+y2g@3@0aHg90q8O+XBPk%7Zb#gA^_->F`2d?z=H3Egh50Q zI`Sx^hX8bn9y0_$2YEF7{6y7;F+&hPNCw+SycFw&Vf^7i*!a^TATM4S?rk;We6_dS zio3J7S{}jJYI#aan|GJJnI%$XEt08J18d^Oh>nzzRZPz8Qq&t(6U{@MVr66%!YC#f zR5LdYDAv@(4e*on#>cYupnLb)+3%tK8VI|ewRJLh9*t(TMX}L-b8~R*heK9f`CH}b z)ZZ%W1(CqMzTCO@f|sLx{5soP6&acbmpm(E54ZTe-Nm=PM>n%-mF@3|eViMQhF3gy zTG%Ke7-SJ*|G3zx9q@t<#^5U4^fz1^YBxG&1MWu0-mq)S0qqhwR->gQ{^yZ?Kch|= zk#~tqRJJpjsBBT?t(F-k$y`~Rc3i5@2EmiC=qGUB4PusyfAZ5*wk<>Tc$VD94 zVPs*Fy_#Tt0Dq}XEU!=sDetqH>qV4T+4$QdbZ~A$^54I4uD{rweUr^!Ww%xdxX#Nv z+1k6&_aBd{eyPmcdiW=9Rjx@*elMp`_`iF{w@?2mGWy-$Wh$UQsrb^~NjP9DeTD-z z*@dXJp*;Wx3Wlh^bLTOuj8};0$2MPx^Gz!Ceo~V9jjT4;|JTAwwt6H#&QqGKhO(U< zYAD+q0jsxiiw2D(94g6Hajis+JBV^|2{RQ#6~Qd{CTjSI-MT~x9@Ug7Q4Lv+7VHq^ z2m_QvrELCAR(;T&sqinSvio(ha^uJKf|xd$c_a55eLm%d{0ZT4%~am2X9y>Vcw}T@QofpCn1IK`qAkxfQ9WY5H#0XO4d|M(bS*hY?XUf#~;ugYi)WzpzJrCp;VmDWvhW4)zPh1xhe zSk|Zw*dMOR$67l8yId;zm=z=dVljrBJC9t zo@R6gkX$d(ZY;9>&CaX2Y^~ONcw2_#?wrs>)Rg{dB5F3S3tS**$7>>*rjhd2VqR}1 z`)R+sBVL>7ufG1Tzx?N4znPZ#`nyZJ-R)+c!erR$r@@}BZhJGN-pVZsIDWBLkhShg zf!c#Z%7l5nFm-r?{0+qv5$fRBn0%B-G%e*7QiRrNLyDvxK6*hmLxhWDkn}VbGu?^k zFqW~KBe1QG*z(`Kv);XZqf>i0MqwK-dq3Xo-rA7~!cgAZimJ5BR#c@$R^MB1skEWC z*orM{*OE;&zCe1ph*;PNW5z|qzHS&YA?103u?f>_z`70LZ?R%7-!$=Mm?^%JS1419bM?l3&j`tv+a`5ZXEQQFT`PxXXoMM zwdH&@+~JVspLu$wPhP?c^!bz@kCr_;R~%k4TG*I9+#3DK?p4LVTl;c;KEMv&KwfaP zEk8Hc>Dsj0;&GGQzk}h=E5SKGpd7bwBVrgFX&-KOYrCwvGRBtCKDJ$nJY_=?d4_=x zb&a0YgSu=Y6*R!%KBzWw%h&-7M`5%H<`v?QK9Zn$jaIi#nt+Ti){#<&&Htu&%j=NjW(C18<3KU|tgc?|=^BIiI`7i(b=hFYJ zi2p`GkZr%^jmx_az198B*1AZ!_}lk!R2u)@3$w?Me!J$YfAl{O`kDvlaJ(VJCIlV_ zuojUAEQ*7^jbVK-5{>iJWXVcW#n>oiiO7rJfhin#M<$!uNr5a6* zJpSLALmV@K!zf!6htW0Isq5{>>JczmLj;(Gzfus>ponx<3Q&SsI;F<=h0rHuxK$HN zMa*&AYLHh*%0%CZ`>~KAcU2k1Av6bj!Ekh1oD9Jqz?-XM8_>)n)oO`wm_x55CFI52 zrH`qYX0}Z#p2uY(lZs)PmRhA;LPZG*3MxL3_TZ1-eEZ%1{P#ECfA=3}Ewa6NwICZT zt_7KFgjJddKWWD|b^aRf^L!Dj)Y!rztGtKjOhl8Et%W8jTW9Q+dMj53>Lt-USz9z- z)OVA--^gxOaAUDLY7iEE#3-x|g<5r|C5hzqlr*<`sNc^4U-f-fc_)(FvicG?vE2Ah zdxcU`%6@t$zAcDwq<_JfSvI7;)z>p(v%3}~GV?Yz#euo~UJyHZiyoKM;kzdl5sO#r z?vR0p?F<_p4#XnlrFwSI;_qAUVMQ9m?zQ#y;qlnYAxmTDSVw6J9qZ5xCAbh!r{-9V z=Hf10nF>oGJUYQ)lr4(GC>!kT^_Ff82a`2KfRP=V8tEm)k_UHZ8c;Dsj8dvOj zp&COPlZ0y4C?X}ykg2I6!QPYRAn8YIi#7qLY2GwOpQDSU8TxPtE1P@_)NO9?@OgPaEYCRl&1NI08>LBft z7z+%sYheNG@*t%YI!U;R9U=NeCRS&$jvf8Wf1^AZ8o(V81*UXB6qw!tox96&hJ}KZ zHAhC;IUo%fIq71;B}G3)dLRuAIbUMJQD;p|T~Cg9=pKOSE%1;wUBg1>!_gQ|e_AfjaAVh%G?HOg()5=7{B15w zJC-SHkIu9+?m9BXy6boZ^RB~D?7NO zy`W*fAp7t`?)3BfjciVYDAS#ncf^**y&vI|2Nq0aqgybQt*g1Y-pZAR`bZ11tW{gG z#WAx`1rL$c2FUagXDdLFQ6Va)gdsX`MZ=vl5ZP|+e1u)dtJ$L>jdA@mjml>^(SS>yO2XsM(Wjx5n09b+?;hw^#Fr zUuUjC*TVm1jWiF+^cUZL{oSAc{jXo=nJw2;v^xM%)eb>-yRA#GVawXJXWO_1um;L8 zK&gI=Nd*GOMg>J(nA`(YAuL;*HxBxiU~Qh~~-KqVdRPPfJY@nVz(u6m_tZ zjuaFEQnywMMV$$y1r<_~snkNlf?uLcKx&~8KI4@BmwRW{37XakYFX{(Zgxyuo2~`N z{lp;E-m@EBk;J0rj?7yq9c*|G2D_2v^@P5!NocsUI`B+F1~+FC66+p4;VQ}|A%nBi zHwq#}iWY?0|EwjAXG9UZoGSeRl(iYQ@sfA=A3u^`ewL)%lF5Hx_;uzQCD}>4QR^=4 z^kx@Cg6z%5S#^K34LGmbEuHT~)RYc-B5E`zjx5SKN3ZNXPDGQI3gsWZyfhU}v+bL_ zADr!87l~Jp3mqs(W!uw{$_7^7Yq|Q14wf})2_^?{Fudm>j;8`5%f$#D)WMhmanb@v zkA9o6NU$>&Fo_VcUmW^ic<5uS!Q^1*;qe_FA_~@$w)M% z5zD>Ja%UWgDQl0;B<}?_ll>xMN3anWV{Da?=0|0MkuqX~(#SsfSo35qvj?|KMwpjI zq8B2vBC(?x9@?PHlMx>x@*x>vy_p$!w?OpMf7;J>u4VV@rvkNkkyQHR@#qtGMrsmr z8Y?ylIU6$vFAp>tpNuFi9RKR8KZu1X+1d_!c~dya`f{gs(0jepo4Gx<3_wau2(El2 zT)>qN0EA*0w!4s!HSbKqVl5I{D)BJ~W?=Dth#9v<7d|XRaY%5aSfOE{D`sl^1Qq3C zrLwg*Y-@hZA*z>5?C*&K((XR%-8+{Q)x8~=fR@s%OhC(-l~I=s>SHFLXmBtxk?y!J zJ821U^M%NNkiWW2f}JAOtxiTN8&`dAy_G8rbsTiCtWis_a1T=+#Ye#SepD(VhJ0Yq z0FfyWS`CG;M9CQl!zYm+$sQG|GX;ZtDZEDoBhrqpftEHb4R;2jlVm_8g80;0OjMr` ztdI_uFND|;E8vS$D5aQGP9P|5nZ-_xJzZyw>)GBa_b-ny}jPb z*M~+1c5qq4_Hc_{BwQmxEbxI-6V!=rU~EuGNs~ihg#fV(2wv>4P$r$43s*=BA!&gS zSRuwQ7DChyF2fk2TGHVdHE!z(LSVRb6}Qa;ZUQj-E}>LZEW+kjco!(UKP$m!JFgDi zk7FIBKXR;N@1V2=g2o_@)o5c87cX)f|0hI~qcG|gMPZZ;cJ_M9u>~AV)(`OC{nP<-JM4CiRbTTz z*@tzRJD`2^B3s@TpWL1A9p2&pKn)UT>Lj8ZYKv?$V=SVn;s_mlXkc=?32JCUON$2S z3h)bP)L6{vu4;-1qIPQ^kE(x~^86BiYQ+D&@r8y;*Pm}#FFUgHmmL}U%UDZ)*{P|& z?9|q4XmJ^{AVvdBUs7U=#64KG`H>IyX&#_pT7I3?_^(6Br2-nAPu*}L_2<9_D{ zu^>bY=-pn-)}EjohDKsAL>^=NjJo$3F-xvu9UP8vG-j~X*cJ&LqFxpYwgBNxAs7Eh61nq>}_{$ ziQQby7B{oypW!Lx6sGFR6{Mp>a`f4p>gO%i;r;5=Rk_gj2)3DmB)p!ULhCwK(l4WXU(&hoodoH)qXi|;N2in0G80%v zN=;rx9_}_JTy%H0zI#o!;`ZhS-p{;Nt?!Osu&bP5#q03W7Sdi;xb!$ z)?8XKcjzxU(&OBsCoUhCBfIe(9t#BYu!z{TpZhjs$e$t?MUq}gh7JC7lc9_cr<)8) zcyX6P(~;HbCWiI~37fneFV3+S!-M`ue?3#k2L-V>u)ZBH?#B0?CMjgYR#q$rY-MdR zfLOjg;y^*>x+?|G&zI%V6Fos?<`Ju1alp@oK`~KaWR?GYa(@ZbDDsgWo4(9OCKDyD zPTNa}mCu+Wyt#sRl5;b^;4JrkY6+T_@JcD?oUBmPN!cU*kPtM!)53bd>7dw9wFWzl!9RIWVW`a%69shG^IG(!OA;kBev-`7beYN`&{>ZW7 z%(6Hv{V26utNYu=;~BBdVWirqEwhb<?qXOZVc*!^PO!KOcWMJtzF0f4=;z^I_}u zTedzGzij_--ixX4Pl&%6ne6b}Z}SV>`fPpoPUqoHA;s%A*{xyuK(7bYEy5w`=jSNWanX4|!eSTGB>3?VW#K-(D7t{pio)&4nd7DaWi}uErDaFm6eDv2!gx{S4YZHdgX~0cCQQX+ z`!mg}Puaw3ytZOKN~7VFB}c<4%Q5*m%QI_eP?>`k&~iTXq4=vuMnQmvU_G>$FQIW* z4-N59Y>-kh9P3Ht{tlaZ#9r+1|4E+y)nmP=0uPQ%>eMoO`BJP09qfn^z_05fERR&# z^irog-rsX)GxI#8(&DLNb*B0HnHb4T-W+H=xxxSO(I;n0UP!PGM|`E1IN~eK#Smn< z8s$humV!%_ARmN~9}zSvl@K*3f=V$TppHdQiDf z)Np-gg#W6>>`NKbLjoCu899ycG2biU#bRKz^t^c-7R z5vv>z*Y(R3M_-&A45`*H`L9p~EP#_VeI;Cb`lMLZ6ak3$V*xjEEOmL~wSyh_fY zk}MV1N)bAOBI)Ke@r5iZ?Fnr&fDrVX+O^ub&C+rCC;;?L??^pB+UfXTIfFM`>h^b!?qY zlN{5IhhsI`cv^m35ySV!(_waX4_Y9$fhtSe2C6LDw5Kh{#5QP|v({)hVwr*?58kX} ziYDyPF-4bYbE(F;jYlivOrgxKn!?*QgO9mQ1$eM6putwM>)Ta!Q`}Zm-@cQHN7)N# z{K{Uyk$3ea#55kclA*1^MP*v?>TqCT(s0V6OMcFBJ&p#IIcNb5@)an?=!xYLJc+7@ z7V|zFSoBol@|+%A!h?w{U2%@ZuRF2<#zT9uYv{OHInmIxH76R@4N#p5Q~PwNq;XKi zCiubgB_BGC0puvl5#%V#s^X+_W@CC10){mBfy6-tqCGK-~Y;yt-N6o4{6+40t{vvJ!d9aw77SWt9A!?a2m2s?0?TD!i3UkBsnM zs~%d+7g3+qL&+2OCTI_LZ9O)m%zx;y?ajgjx32F`G^bV@*B02e80;SHVsc>w_GqOi z*rP4%K_PDHG`i4Pwv8v2#d)>( ztC;O^{K#uIzbf8iS-#p@7-b6&yE>OHjKy9+V>tE#7DkjRZW=3G$2i7^disu z;PAg^J!q4kHCb82)?{VbY7v&(x2*Xxx83kPFJCHROREUp5ApR?DEauoEfBvJz zSaNh6T@czVMWQ&gL1=KwW|91yW#gbhWe!?E;fA6|R>~!`x#*$AdGp8{_$b=#HE}#{ZATm_emDmp4$M7ysIGiLxckAz z8n(+ib)V{?rxK1_vVkfs&jzYAzO<+NRUrGbLCc)AM#ENU3XUT96%bQ&i7?nRL=%_& zjZ=u#j9^#)j;w3OD1j%}!mh)c&x_i-`Ye*D%So54si8_@i4f zN4}YwC~Rl1TS?lKY3IU__t^3iwmQrv7T!O+tnuC?G(2{LS5^o&cx4qZ~Oc>bXDB*bM#q7ydops z?&Lpe`APlYZR_zUn;KyYuVgAKLaO!K^UjSzIdLz5;Pl=9lXGyxM(0gx-o~5PSNh*J zeDB<6ssmVEx%nxkL23D?m8Q<-@+GxSI8K*Z%NKd?0&ir9)&d?b18U zQfnGn%o9LOfNof_vceXtJPmz1@xng;m@UsV7DV(DTPyB86|YWm1U(KIHM> zy$!;BmY;T}N3!t|mm*3xaVg@;Q^~MawLb zb~|dZgl&%cOr`8^)KdGtG#x$Z(;Eftqm%;pJv#&V;Y)n1y3Zya@UDB~)*_pkj%VMp z-9>rnAQmXcr)A6HJ{Z4RsPA7F^F?D)!E3-B8W#%w8DHaQf~0W_*uy=e}vC6T-GJojmzztk6E{o3Nj=(@f5N z*1t(CGdFW6rgu1pVh&wTnJUxZmxUy4-1y;FX96Eur$s^PLIy#~0_=Ula*T-LWKNNA z@W?O?<`>}eZqsmud=#PqCyiGj*mN3?4}0316%~s+YkTz35sSmP-Q9E zK$S(MeAHogn}C)%Ylo(HtkbAstvW#M&WK#h`>5|3aZ48c<}@zFSk1CHis+kWkNYWI zJrqaH+NFrHnY$FRYxe0WF|}=%Qsm7<6{nktDo!^ORcPzpl?*l$RWjI2RB^tUD4kgG z3#dJ7nMKl8B279Aq(w?Cmtgn$-%nYT)KYEs5~Y*ddx!?whpIr4L<^Uv#N=3YKb~8W z=eo2{U18I6Vs@wd92j=(O5@pNW1Q#F6#v7<1k&DNCF?@@#i}%lOJ`I+7a1QjoMBeL7Qo1;?`dV7}w0M`LT-)@TD&wn!T& zu~jBY0x^t?wqNZ1V(Yy7D@cq?yLB zETuIut~v3Xja2)z8n+&c6@rH&;=a>zNLbXd1uH9uEm&CrbcAXxF%hQm&K56o+6f+B zMn~XY&MU%Oo)7`T%L53WxYCYDg!rO6f+wxNBLd{5c&Hvl<*>af53ixf_S3D_WsO<* zoJ%Q<^SP9A=!M-+5JI4PL0aI8H|85pZhZ0ic|s+?V47maV9J6_ddf18QIIm{$VfO~ z>3}>)1^7Ts11;stXkgMIDQ~gqemW&OXrWOAAGa=woF?vxs}TA>EjDa zyv9lu_X5|q$Jxj;aY!Ikcm$Zbzz8s9AtgO!c|$P;DRYjDL=T14@x)=`aCct^B^<`5 zMTW4G>X4KxyJ6p#{9w25wv5nLm;=IzS|$q zC10#4u0>oph$rSmrI$NdMI|43DIYv}$zu1tir86v)tScqO}2Hn@$-w5J00z<%K=;I zWDeM5V^eFJ1|SCtwC;TK`YMlXgHeGzvZElCrAS9A3s3#5WjCJ=mN{w(hP(V`ST9!y z;f}u1BU@=M#?asy$FqqW?<4Rlo`5xlP!;EQAC>>k~&>|UALxTi`N*4E#8Tl z^d-VH7`PG9#DmuDxAB7=wzt&>J~#NunZY0a>x_Q}T??~dDht$tsVqg+lhv9^*EA+r zkY%n~k+Jo96Ji*_2Z@_ti+T98QWGpO4w#^Qe4fb&OBo`WfW4?(qOGELswZ2%6W_iT zkBtqqetRzFkjLJ%h8`UCI~_ZQLovOTI23c^G3g01jT>1=>Sne!e@WUc%s*~iTZn&M zCv*_#NM*s(k;>v#Kii{#?s2ArWsX{cgM1J|QN#>e4)FW*jKIZw2+xF>k*V9h%#w|V z6EiR=pqQb_i`r&*9#caFCg;NH+iQ(GSK^KNc>h7`(Y5%_tLD-af0WHk zu#q?Qyb!IEBG1+Xzo!Bv$MAPVd8cEPav{qlT$ z{~ix0joDSWSe@Y2Me78wEM5bM!?$#-L}UrL62S*?7(WdALyacXfC@!C`hW^$T0jC- zN*3?;80M5u2wR{AIg)`od!n_!sQqYIEf+ zyR{Op-(PJY|(4@|3kg@u21WFOe#9(S}+E_dOaQ zy_|>Nd1$~TY$P$D5?(qo$pgwR4+C!J;0D5ktVyz?puK}6glA>Vs<1rwQ{KTZ;&F9W z%)uT;*v{w8$r&Dx*`sI8x7Xv1O*Z{9UfdO*ckOQMzN$aom}gtB2!U8OsgrYX?Lpaz zbuov==2lGOdTzz+Em5By(?FPor2U|K@WMA?MDBpmxXLPE$yJti+S3jP)-<}zWotS% zKWj=2Ee^rZpo@8rK6KWwJ5!CzUK0*vwr_{LqN&$aO3*&pa zf)B68ff}WJ3EpH0N)Y#lpg#m3VSoxgWx5a4AkX`uRVxbN_n~Ej>J{qhac1O&87OKT zG6O}ozL}Ch)9{#?u5P%oJ}bs9b8q@2&V6>KSQzlU#^gM^x(8Jh8>q4_*g%!Vt$egv zQz@IqM;o-vSvxcw4vnZ@&hy|=iV?Y#hes+#T*6|LSx!*mj}h7CqJ1NQ_U;eTd3K!| zE3fF{t|MkjmS)AO(y{%xHWG(odV_H&=E!(bQ)C)qvXHc2zZqyw&NL3@T0?gRFBD7U z8Bj|BWupsWZ+7>8>-mNK#=+{s`wXfVD~sGz|L)+phxSi>3tZO}&1L4zf%VYfnL zszQ#Su#y)QOEQ`k;Uhp`vBU$b$U7lvCz?C5>}>TjJkkBnGJKN+n|20HDHWRjf#MLV zPcQxbr*F=DI#9%}QzOxo^@K!ImU`l2md9d|m@@b1Oe|n)aefJ&Qq?lOJbbgOmRTXh zEG?9<=%r=0qmUTe1^5w*Ye@?dVOboPhqOc#q-=yJNZI~+pQzRnMNFF>ijz4-!ol-6 zX)xc1?@&&|dHCU|X}E~c$kKR(_Lcf;qp*TDsWcw>r+EMUEWEluWK#XW>Y< zrV5oPQalM2aks@lBgFl$i25I@;TI0icW>=oV_UD-v)|b0M&s!)Ha&H6W&1BuxOIDj zO)SY7hW9@D%O~$=>d6_an{IbdsK5XJ%GJ$MOWp>NMHforR<|o+JH(phQokL-0NpR#!uTYfRa{*47lXAAOp4+ z1>(A?KZa(#DD>&ODaOQQBaMw3TOY0OJr!?E9@mY!5q7LEvmVdG z?vpSU=!yViuHqt)Knwyk5;nRtO~ibZna=9g6JKGfR4uuoD=W|cX^E8fNkN?YwgAleT3t6bP!GIR3Eo@&YWu>~>0hE9@4LUaZo1yX15eLf@=fJc* zg9Fnxb=Fh;AwA?eImoo;*hnlkG|}8Ld^M&C$w*u^B02YgnV^geRui&&`&V*fF?__G zrmLs7F^zqBX2=OWKdUFnu+Ud9kEMMBGaj;h0U5-!*0@CUfN29R8HeI)-uXY-lVQ`ZN~Q zn=5~xT!IF?7EEokS}?UOne(uv?X(~pY^Xkg%C5<*u;!GC57Th0v@bh&TEn(*$1T+$ zUr6N+djY(|g39(vRn$3>i_KU?C$eh{2TUz?7zDhr>iDrSP5zCrk(LwE+W=u9YpY-= z57j|S%b6VY&7G|CTuzN1MVE45lD=tClD6&o9;r7oWvE6R=B2g8<6-j#xhTH^o9A4f ziyu#x%X5ZZ-mG{&6<;CF<+0|wbBXMA;9M$y={N1dX^xEP-cz=Tu*DnfhArO4nCP{s z=3hpHw{m;@#E|Fxmc0}K^Rx}gbcQ`%sA1r`xa%+wS>c9( zd9d*Uvg>KbQ*+m&YuoW?v$b`r$0P{7-fdX}g%lOsG6fkV&DNtsh zK&oBb+*7bDn@<6!Ut*`{6R-!{^*H%6YWY@l<6<;5HL~|)tv$W{>x{<5@8342{`J_= zv4gxg8H-eupw?U!C1_>KfI?ASR8g`r8xY1%9UI~we`AZ+cMcJ}wkyy${m~!f;bcV8 z77!GH;~HEdS+Rh3kK-}{o|?(|EoI!B;W8q3lo5K^{0w_y3|H$WkYbL{kPm*C4qlv9 zD^}cK^NJN0w}^z|QXSos~E3g=g*Qn|)Hh`{MLhr-wfI=Bv|R|M%x-ILl$2(i)c#z;X%zugMktzynW!|DcAY&(iV{vf~S=j8nqCf zV`8XycoGvs#plgIF_Z#)5YJGla8AZx=rAU%7%JV%A0d0mklDNOMy=09FS_>|eB_qP zPR##!xYd}6W~bvmn0^rll}_@7TDX~>&!Emv#@`I92dnYWK>fH9tzS_;o@LyU5EnYy ztiMy}c=&kgyEFgy?bzwBzy9)z*uQ*xFqSOD2MnwPS{E^}5=eRwsL<3nWMJjs&ESoV zS1ODi#-eF^3yY?0`OL@q13hS%z+$Gg$7cqR^Ecucd1po@pwV zPlr2r{78p0Qy1t0jC?gZoOOI69p5!a_eG!@7etfz8@~VFa$;)uGU~n1ePB)Oc37XB*;Jtyc<6e1)H=O z?5Bibg>8urm3m^yq70Lqmf23pX$hOHtb&nek>wR_rVIW!dhFAovCt76+8UtxmbZXv zn>hP9k&&(qI;~j?G&bfn^BDWk%uvQwG&7WWOM)598n>FUv2l00`TkY*^=^ICqbG-) zuoC9FsI-%bW3?}^9aj4a=R9nG#+V&EtzlbutrTLp*F>%}>^MI9RukD3{Ju$QsX601 zBKz=rY*!Dl;9<4gJ?#@tkRVFz-Fvd1+c0%2y1Up-bm+`3v>G$&;nU8WOVP$=dS&u( z`_V#@{yJG_OoSah{a@dH@xOmLbMo|eUwrfR=`YX7S|1s_)(XksZLLvuDX7Cl84<(C zFq(gL@c#BfKl$U3TUB>w(J>(pr)@?aPTOqR&()imf>h_hgQhiT0ma6CW}Y9wUcwCZ z@NGDRlJdrWW-w!E#|*7-Jee8Go((ml_l?fJ3*#PT)95OivaNKeG!0$#lDFB zE|**{`eL)a^Ez3L{dLBw0IMLVWUv#0N^+J%Qz+^vQ(Vt5;G`@;u?{J)<6145agH3w zds=d#%qw(_%y7y@1-wIq3?2>wc&d^Lcgv_}pprwUf(|grHDb3AmJb(L0LvG!T7^Fl z+3c}K1=tl48MB!Yk&&}HS;e8c7FjWaU&)_TmC!PGXi1ykFqx+g_u z#<}FQR;|eJo=FPS4=bqWpkTd{kGc&CHsIy6l4=*9?jThJ#}kqIS^a8kLsVno9}{Qe zacVUCGXDQ02wL2MoDxN=yU`GGNTlDexD)-f&{>*OGplbKQ@{VynQ!-}ZAbt7-Cw>t z^R_YlwlVkKrpNe`gWZksTeg1naCc+;h5i1)$(@U}blMxtX*nLUBP2WvZ% zEm+$@OoaY;9rE|K__U@)@bF<|2;8Z{lZyzxTngdLN`%ij7$4!YCm5kN2*U0ivK8i0 zV5)I_@4{UC|H*&1=Kl7oed~FWZZ*B#6F?MUF^Us5Sd`*~1uYJ#kW@ERw7kjn%-7Y< zqduiiPo5e*#Te=EaQaTc!fBg2`?-2EQ;_OXc+j*4Eue7hXhwz=*lC!d9=_?`3}qgk zV+IF76^$9qP?wW)X~sHX7@~e9Jz6*JeC;Q{w6-p)#zb7S_4lOQEvVI*>k zK(+f)GQ9k!Q~&eLw||O58ln6r15V$VES$FKvY)feB%M=qC0)0MJGSj~Y&#v>wsvfz zJGO17W81dv?AUhFu};4KTs$>u)J2VrxhCF)>ANSifZOP2^rB#Bv?4^;x-$=0_};xa;QR?*%&I#aD@Nf!TSQ~^o0?tG z4B-mKqz5+k>c6a~lhVPR_g|Fv&q@!AMM3Hd&yMRO1JOucdpzf=Y@MpAhS0AK&w9*F zEve<}Cjm==w>X)HU+Y}GEbtb2-Aw1at){O+$%BomcW0*NhjM>kx26mpIi`nEw5H6X z`fPI72u;A2+`>Cc&ZlG@%VnB{O4zNV5v382(#rsxehasy7ElJ-dHLLqD9KYX5%Wg^ zNvAk+GCi>*xFIVlq9P}@Q#5c(f^alA@DAo~yOQTqNZtp}4UgyNZ|BECnzq+A%{5y9 zwk~-6^)r?~wtDe{|&mY16z6`ZYJ z9Gx7((Rjw(`)>aZeRy9_qq)93IK0LNCdwgJyPbdX_FYVN#hy+w4E9J(3CI;EDtCc1 zzvREEHvTcUH)j4QzMqK7=$Yom`{U8A)3`o$(6|@46yz(L6+O`N*k*3^a@u{EBRAhk zw1|X>3tKxB$QZF~hty5w#F3-pR(?(7{8jQu-V#zFe#mZ z??p;zp$L*GYhN4?Vu;{+2wtuMtGF$ft1X*?JBqPoQdWl9npi|BKy6gNDCpX+9fpVl z4ZK<||J0MWa%3L^ui{*5@lk}kpIc68uU+@(O0#o~Ad-QE_3Xgf7nI`jP9St#_O9Ft z3&kC4{~9*4wr;QwW-J60N&<1VabMK%=>LA zR-a8&&iuVEDz+7cJGbWLFEk#{zYsy*N#Bmq_Kw?OYMVZ!{HiV~!6m!W zwb0AIuoNY&^`t>2j6inT-+>5nzLKh*HO;6Z3^s^R+C+B+J=zmK7? zG#5a>NS~)06_k?3xkxTds(cxz!CA^2gTu{UZm4t-+m6isY3wyPaLC3ERbo4RalBPE zYi@BzhLo|K3xS@a%0ZgFTaTB2H5B!5BTCReb9`CL5=i?8wHs%Ae4g1D$FT%wjqeY# z6PuaUb>X#xi@n@tNBOb_QZ9q z-s5!zx5XhX*V{KTnl9$9-}lE?U)NVIIh;ro4`lF0LLS_Xurepsg^4sa$g#uf6bX%{VqB*xjSC-co*5@u7HL6^5_^b@{Oz8q5 zsV#Ve(gK=^X1TsoD_PZRisHoPkX%GA1DJa~s4ZZ0om_e3doMLIjX*7e8?Luqm{&@GBP@7M&z zRP*(5L~G4$>QCv`WKup42IT*Wt$PeeO+SNb8)EevRzEp`v=(L4Towi%7G!J00bZQ6 zvCz$Xklo1mh3b{IyRHlaD}nB;94N;$Im(xuNDJ&OUlau1jyN6ga&IhER2Y77qrB^}6|X?@}~&-&$VZ@HzKVN>Oq%zsw{ z5>}p&L}m8>E}$;4f}eL9#cg|UoREW0`y`Z5O7+J=7v5liWcN`h@5rNSQ2fIwg09>h zP%yfb@PPqX78jR+Q8A12lY(^NANf(W8Ip=@n6IXpjv)}b>#wK|-ievW^&m(ZBvtM> z;k5@E%qs!2n-O5VI6>D*7e+V*ewWITN`hog%;hcvN&XDAKy4%??%N%cTugB$^msH= z3E~odJeYyU3puw}DCtEG{>)O_?Th1!0wfO3Dmgd?e9yG_>Dv8%I0iEtjGoa=c!V1W zRMy4A$*A-?E1!^fV(}tphB;z*EiwAQuqf37<{x-QM88KPaJ&MJ7&@nC6!u%xr}S|w z1-kLSj4u}JY9~h>Qv0kk4Ipc5-Ec?l)CF+j8zI2O0F;3;gYqMx=A8~WJ>bW}&OS0Y zzhzqCt!t3?SAvA1f1hu^X*(he`fjmm(oc`0Q`^=Gib+T6P#PPS#gspT)`HdmG4)U#v`=b@%S_q zI2#GQ&^C13*m@u5@;Zqbg@5_vW12bIK(9fP zqcvW-JeQ=*;ie}pLk^cE{j^UVE8Vl4PS5h&cVLks^jVar2u&QyLNLn8PUX10MdK?_ zt!M!u#@T}P8+7O0>QjkEpJWB*o`ga)y=%(xopQQFKTHo{)hXeBRI2muwG)zhq32oa zNCj2fa>bsWIvVM+xG!#3|EvLpy;CODe8C)RX6n%(f zOzFVG)>A9rAAkP_Qg`_h%2zNq^l1O`bhvvBT$&!od)Sw5^bz~`lY+vE-@OwGab9;4 zylN)I+)##zp4hw*8q2)lgpvR`Q^j3)xh)_3{4;=9YJHMPYCXg|R+A75>VAH0@3!_M zqpegLBS&fCuunteFg1qLGiAagizs8lxUF5+=r^J@_&xiZH{I&;Z|A0a2W5H#V28K< zrVsHGs7@V1O(Vwo5%~(V%4NM@Kp%WdCRT%Njy6#7{J6mSoYeD)Pz>qsn_Y4|5f#Wv zb0xU$dLz2@cT~YHmr9M3wElL8j?x%NET5$T=L1iW{Q~(1%RA`|szHg?QC5WpMv>UL z;MUw)+lg=MXkB9PGqm?|RU-2g3G#c`10m)!TU_H?uFK#U%Gmb4AsA#Iwfa-Zctk4BQW zUWCL?0-dx)O{+#ym_jL)FAHfG2W2;TMgo0Yk>h&Kk(bsB@=qn?TUg8X-%vJ7kq5D_ z#~_@je`T`&V*pcHtRo)8`NA>07B%7jebkn5WptylkCw+>RG_SNOth@qwlSW;a1?LX zF2NIpN!vl_O)(}~QUlohpoy$qdc{HwCR_TDCn@<(bE4W%XB}vw5-KX>eK~K)(;W|0Z7kf8(t>tlUVob|xS8hdj(4zG`3O+bqWJZvHDs9J(WMmGBA9tq z#(Ym}pbKcGv#dq}XOouo7De{8At~DNUjpJI6tgd^Cy{>}?Z)NLbA! zjA)!g2!;x|Erb-t+b`OHFr5bZru=vG#TRBa&5Ds$cw^}Z6~kL1murbKOg0^IGc(xv zhU|scI5SDWQ3bKuf(h`VKOVULkSC!K#q73SYq92LKG#^4@u1q3UM22IPG_d=X+z;P zn*xIkeiKmxbGm!Xl@T{NNQsu>DAEHn7U3_e_^6u-a}l(35SSXvk*POm;E4Zm?d0Divd2y|M`O{LKULXcad|<4E*ZJDF z{OH{3Sm{?B@a@x()0A7gv!P{fN}14yGM#(P3ptf)&CW?V?cr9c&aBPC@Ko_(Amb7= zK*Q4A44s$X=j>T>Na%Rooy)dlXSY!<`z6hmY~owm7!B>OtBl8Pz2PS!T^NX!WMxU8 za2IDV-i~QY=AtaaDU;XaZbiY}vat%H)VDty?#P*>PfhGRe?n~S!`Bv~u9)M|Ga zhaRpIWkSy*+Bu+Q82?-s;FqqKDsCAWK+c3dzWs+Vyl<%^{jE;Nr^s4qM{=mz)WCt9 zfIAek`)82p6nq9KYsz=C`%mO(k=1sz;YC$3SR(NNpWUdISUJ$W0*g%G8Jm-$KHhRP zP|J%_FpL>hqE)S;qNKk^Qm<@IGkL?`27&|DZzWAzao4aL2WJsGQk}x0=pZj-9p02t zH@%n8{B#`N^bd}3&mIpBYdf9*lUG#wCY}HQCg7UErS!hVGo%6)QdU~fdae+hPFB|r zrPNMZdUz-IUkOJAZ|qtu=AQlH_;^ojh^d8_(RU?VO`yJB$c?oAm&O)K!5WA;tqGd% zzgZvI&T18}6f1t{)Q>{LyZI9d$9WIbva-}n{fUBNaX`-XcS`&R1%08nR8jE18hS}| z{kx`Q8J%+Ew%mhO|D^=R{G%XKAhhOavdmKbLjohoXgxNj2dGT9;ypy(cJ{0rR8qgS z{Zs^Iiazy6?Q*qWva+T7I`s{4?<-Pl$u;J$oaQEWqzE~GC?OP;9URkqiTw<_>f~1cgxG*=DhA}f%Rr`5Zk&sox5VqL+d>&EGiou zB*K}Xn>S(CA?b)U62*cbwkk3(7I>M`sED$yES551<6QD%b#S6oH2O;-*&yd5NtFYL z5mBNc)M66Elf+BfngqaU!R9JzX+@qW>`HnXVw<=G_F%aCm8YwXOVY0+fstK&%A`Vj zr=&vLiEfFrDOsFyFn@PT+uJ{yRB@4a6As966V8rce<#)j(jpqdG8BeZ6rA02CLFlh z2JPON`nf^LFYRuTR8_FH_#mVX#Et?HuGxuf?la8Gl;s-ebJAb)k5cnjPnWNP$~o6! z87mG;3Ml2H7ioL}7kTK5vm7gLCNJsux`Sb3dKizGMIEfu>=IO zULybGguGNZU=5-f6+PS(0?YV+wOt)v0Gom@S~!O*#*)?VkDqF$u$IYQiRHl}Tq{9;xXhm3VA4w(ct#GM^GHEb!ZySje1%yA z84smOxMW#uy`cGqWRc6c+M_d!y!4htJ=aB%D|sc##S4o-BrWedEf<1ulf+DrH6}if8DvYETz_=HmpySuFxG8?(NmXCx&1}N8xB4-3x*iw2z_BJ! z#@lj46+;*6iy?3&E-9wh-d;|q)!7Ww+y!gxhF@n-I3juxVtfHTj8@m6P>Y?12hBt* z2(UxNa#jN4(3tZ80vY!d9}dH7YSqTo7u281ezl;x4a!dbDBl)HPW>ADm7dK0*)})C zGZx~ms1gWDMgL-cymU%r(jp?lSfpJ`puJydasf2Lnd|Xoekd#B;O)9MYs0SGY?^Xn zzuD7d#yDrh;}O`TbG~=R>JSjv_K?y+_PfTHlVjDV0?hU1P2~HN{@zg8`<+)@{IDHV z&tzO9|K<{mkQQ=)po5oiI|ob4VpgPTqbdHm6#~!gIm|)zwMnT1VG=&WtI8IDn_+{m ztnW^stnWdvH@%3+t>s1FRR79z0C<654%C)rM*&}Y+Doz`OM?Z#E6Q5KqyTQ%bRC1F zZav`0CH568%UniRwab2AZgH8vI`FJ3=uyro0q(z1iRNFhiN@$}CnK=1ih?Pu3NP1k zea#+S>W%XuS-V>=u9Q+^XUp9tR6{Vi>%xzDSZMgbu(N4stDPkX)@3T! zdUNC=c}|3#@zH!2dp874V~q%nOvDb{Rh|XI@UTnGwKX&IQ$zEsdFT%BTkY<;f7gkw zcfY5>Wov~XWNR_&w(o(#;mJjrJ1lfdc@X21|I3BXSxg@?uI_X3gby zT(FcNEO>#@v-nl}ykjOPuw3*tx9S$Wh6P{X*XnvSHaV7n0y zqhd27+l0=I!3R|jTVFZ}P%4W$;3GJCxtl;-W~H%MM{oE;5x3q@e0t~ny`AtSDmj9| zJXKyyb5~74U(DR+%SE_W_|e-VS9D zus2vJNRGF(&_O5-Y)KVoT{2rO3;!aRmkxDIl6_khxOnG=>Y}JD*Nm#7wsTfE&e8g? zck$?8?$@gc(Uzrgg_&eVEZr`>N>m;J!ffm}!_T`80#h0mfwrugszXj6i*4QCH>Zdx zx01ORGj6R+BxC2~sEu4>Y0JO~4<0ld77#QW=995HYYSy?lsLJnh|xxifS=2OX}HQv zz%X1jMbif{>fy#CvZ1tP{37g%UZIrXyT!k7=E%J;mfcT>7(EO>mJivi&hWJjUnh`2fXSF^J^QHj8FFt$;bBkFJ+S7ZhhBk@R~pMF5fdVcYi%|hwxQc zF!4PB+PF$PcJto-cK>lV+!EZ7n9XY*A>idi6}G0Kue6>%)x^e_3D;Z> zK^z4q++Jpi;Bhh3=!pw`5%p>I(_g;?5($)dH#>%cYVm{@8=Qw%7lkcCOoU2{?IH#D zjs|MDpwg_4)RdhsaqZ&=DI)h=BY08OiuGn2<;%rgnCP2T!*8RyALdQO+nOYDe4?tg zP+_G2nSmJ&oj48->~LVQTd<9GH}nYnDd)$2?}05eS<3wwBYp+}VjTGl%N=2VF6SXD ztxgT*-LbU}BLfn5;4AjZTwSaO0RcVH59z=M4^#HYiI%@xld+rQbNRCZ2v7QYv>i>_^f3P9guLm8V%$nOW zV?<uz_sh;uJ8VBDu{&Qf9mbH}{9B!p%F&g1a*h*=kKhrDPv87E zo&=C;AXlE7PUpsj>8d;=Opwh=6&-6`s8s?F*IWY+$6@twKYpxW z;h-`A>)?cn6U*RSdZ2|s_}4>7_5tvVZ@0?bvPne$Y46s`TmcY1`vkT%hgL6sy=T_l z4fN@>!JM<_#BAX>YGG{C!+w`LfjW#ml1Y`m_H=EV97b#K$~Pwc#kh#!>`Xk|WY5Ee zSnzX{+2oa=P+f}RqB3FRAq^X^X~l#>fx|ACzl&o$ zfiYIi{G>Pcu(u#W+N}?XCxhZjAGCB*64YUC=c3@Nu{Hg6BHZB~690n`Iz^Z>Q-q=D zm@@)5_le3X%o~~kjsr+Vqh$pD&oXJN3+iPI@A9wu-O^iO69*P_GaVK*2kA}jKT-zW z$}%aKl$1H)AAvkCia!Fzr7%cqvt*e;Y1`ltRED(hl>@;Lb%t}i9GjtGhjfd6Kj`}$ z$??mBwj%Yw)90IAr_0GSgwYTo(^W*U zxW@2JYD6ChZzD`_%9?k;$v_m~yJd4u3<>mX0zb()YL4z#-aL4>nW=p|p0B4Ajv|Lt z7^gZu50N_mXu>aLb84vJ-#;n-na%b^3QiRbczSp7d8HSkY`vGc-roF}kA1QvaJ z#^0A705&nf41HwF;uNmN!3hg{IQ80y2XjGvU-etz*VTSl{QHL zy3=$WQkvF9^1Hg{xmll4AB>(B_pkP5y3owW9h*N=vqPP=y9>%qZz7K3A+N5rZfMzB#%N>smpfLH^b)NuiS@SEr@%7?svH%^ zFgE_hxAnRxDTF)%?Snl0CMXAAuOV(SJ(8WBxA z%E<~ojZa9T32^k(vyN7{DCkGyWo>%Cl(AZp0rYSz{I#rD{V&sea{D_tzUEunx%>1@{9PJa}bt?5)y2ShHeao7?I&!!&X2)pjn`;xNZeSyjbFSyb^Ngp5 z_d%cBFrMuzbC{ITy}u2C_wH+4WJ)NSo?#b8car$tSCWm3#p1@d>nSVivZ4Sr!&%9)ZE_PC~%g2sA!okF-?fi1cm#W%y^b z{+xLs2Rc*V(RcJo3CvmadP|b!Xrdum;H0)0tUXd8zzjs_B%Ulai=?TUxzU49v+XH8 z8=Ze8>|7fsoHl})O4Z3mbSuh44i;|C0#0>&S4;12O(bZ4&w~kjA_^WAQKFEgXbfM0zUb-I;;j#R3~;mYvtByXFGw( z1Mr~czC75tQwbHmwtTrz58)M3^SH=n=oZSUy<|Px)~|rwwY92m%|BZD2J9d|b)NA>y>O zHqfC};GoN*SKyxPvO(W$YG$0YkfRqLh^7-Cn6fry(=mn%KqNB)QQ4OUg}J5h!R<;5 zEjoZ_lp`td-ASWBzQ5}}h%f@jO91ygl1_Ag;`77h-jr3r^+E)k4+T%Z40$~ua&Oqi zR^L^(FIaapLYcRI=GA@m3h=N=j+|j4xmH$NH2~}LMK1J{gnYV9-)tXFqS?niWdk-LS`=IPQIlFBO=sqI%@2pY1;BBpwgO%D5NH z=Q?DuAOCjx1m4g66>#551Wvbap3j{LjzlHql-#PllMwJYopyjuq$9X~2l;@mh3L{> z4Xh766HNv&x~H2wOWp4aj1tueui>af7ueEXwUhuV;}uD=Ky_v2s@&rKNvNNvLYPWZ z*)+SJQqt^RhF3jR z5`E%g_N`DaqZP>2o37K2RY{;@t*umg$t7Um7~#1b`#|Z7KXEA0HETC2e$i`&Z|cm> zw-`e`=b_Z_xEMuBgU~uK!Cnv;MPMQ z+cMQl#syz^3XT~?v3ZxcTD@zHx;k?eIhz*z{*?ZG2tFW$4$SqXsug+?6wIiq6YKK` z4G1W6rH5EEiHAl~d2J?^`L>6!w!tu`3it2H>tCYMn7? z{z=pT$)9#AOyKPu7hr|T*N>OJ$Yu7sIHV0HH@_HpPA-43fEfjwCIrSy=c0^52g<(u z<)v)VZdos}W698gLgHvf-1?sQ!>{^5hRRHzOC_veJIfwG29O|c47(oschBI0qmsY%@uFKAP<_qbE4@(BsEW_+m!$;nO^OsSvkhKn+WaCWc~Txaqc0V;L$%+@@srJI9$n)3(O z1m?x%ITz~Ser5gq*dx{aZfQb9MBCSa24*$1A|Y<=2jqBQlZ7q!R=4r>+GSPrgV$ru zwOHP2%gI*ftQJpM``4(7e@9R;ERaZ&Yqz_wJjIg0yJ``xKM5TKs4OJhvl>-#=*fO( ziP?-z>2PDseE(L1BX;2aDd;k4jgK3O$2}{wF?y;qwj(6&=SWI}$lAok5&ZIQtgkVb z_@g5<2fSEDQ_~|)jLJk?REr9_lS{r;DVP|&*i}d}?_FFUSqc*&(+GMRY4sk1806UTl{^_-RdR3kQN4`vT-!+SuR-ShfQ}v$xWQnE5prL>$Wg z+5H3b+EZ(A8$}S>VKTcP>07Hj)e>)VS)d+1jM9tJWha;rR9{fSU!m#v!DH1~=KI#~ zWNuf)`sFwG{#`ZAdy#FF?lkn5@e?B>3wHlNwOwe7}@Su&0mI53udTm`=$$fLp;L?^4aT-Y16b{e_AzqhW|%se0WmMhxAt5Tg` zR)@R}&3@mz@caHYa!_(Pb(nJg_>1e==xTIPG>>*ktKq3o{g3E^KXXQbAyc508LT2d`NcHPOeC7duQVU2i)|A{O9NX-hIT>S~)oNng4EUwN>P~Njid~7a0rQ0Y?P$8{|gIlFm3#E*iE^Xa_nWVS)Ob;#Lz^eWib?a;3Mm)D=K-JW;X<7(L| z{}V|h{GynDK_b{XG>x_$N~Txv1YIk79?Gr0TOM1_XMus8XhgUUwHg+^y9|E0lE357 z$z-Q0q)Zl9BuhaJv%7PMr5$46RoFEj6&9iEsetY)WW_xy@~RETtCD5x3mUws3g{nB ztyJFIJP!i$2qWp$Ly=jhH0w!KStntK>e*OrAu)r=EnXi^?4RIi2dh2^u{HUGO;oeFXMh%XHc19># zCAq6&@u2?U`-6d9`hg|>>5Cy;p5T^@6lqzRNe(SY{Tm&}|H_slD{0#Y@R$3BzV2Jk zft&B+VF|RbiWZCF(?%_hz<527+oQ?4UIMGXR!@!HZB-L&UQ!ndq?0Mz;yJ-0^5$Vn zRK|65DfT{?ORq$>Bv!&gGVZ;s{z zOz^N``yU?U@3J)eqoaly4~gn)n;OfE08+kLdi+yrAat<_5V#|m%vUgt71LBhcN`n@ zxe)qRut@oUjDm3iMM48yyJ@&fZwa%t(iklchQnvg^>qP-VmLZJpyR9`MIja6nZ2Oq ztv}E@%LEhBsX3N1?Bi!|M#392(KjuXInfr$VPDdi+aa$+^17c|G4PVJl4F6f;r^y5 zULq*ml4WKQGd9)TC)Et5{Q3~YpcY7+~TP2gT z7yU=ZT_xKg)eCP+@-Pxnl`+1PnB-gn}RsStgkv~#JsW)pORn-qbXJA(0?e|>*H z^i4{Co){f(Y<@r$KVp1+>=^J?Z^xAYr490l|xu9Q!ntUr^jT~x)Amnm1f%WN_hMFvf3 zS;NKv9Xcp$=NL5Gi_M4zt#)O?P+F1*Ok~~HMbzw#vu7bFsus}|Z82r2XTDsjr+;Ru zrE2O;x#pc4n;mT!ua>!Z%J261qKVR!h0AWcohte8zu_fH1-0c zs|TTU@L^Crx)UNSA>=UnmO=H&;LjF;y)SAfPf5(G%HkV<(b_=hlD&F1r_P4leU>#R zZC<$RsX$dXOjR-Wxl+$pyW@Y81YVNu>GHgpkC7AS&le*IJkJZLIg1viYbyBFV6ThF(p;FZQX5X} zciw>^F`I1L9pB6x687wG?d=;*{loilogTKRNUdm_CyUnWqIj1Mtm1~P z*`fWVX7>sj0k|g@`_wZqhQW=Cv-W#<^S3tK1e(k?AJH>(R4U-}H={cR?cWa$Y*?{G z&A(lJV#xS>3jSrGvGpTp1`ld!rKDfz_d{S>2fTf z{y*^i$2oG7m4k?iMAFqcv#K~2lcy!tj z9GdmeVQY&5I(-N2DWKlkp;W{fR}$1=-|JXm5kfxD$bm|J8CpX~V~&0lO7bYtn?4=v zYFl=lZ=qWf9T8uq0oPljkFNo za?y(;E$%6e*F6 zZ((6f=gPL17||UPhIDlqn)Ia@nss&Ic9~ADKs>hM>hExOJA2`ek;BNKO#+bi@^VCymFB2+K3PVNaN2Q%M==UL2360C9K`g~&s;1)_ z0V3L(#-$D+p71!^)}jZaBeN(~KxCKaym%Gyt5`EC?wIzR<-IY_f27H#=z41Uf5y#x zrqmg*K<-3;?>c_oh6$ zkq!i4h=hn?ee7N*8)G2YIcb9AL>Qq=A|#07dISD2>qZoTKowKMqCgf$HgoJZ2t+?= z%z9Z0`l|tXmuc{&7wlY28}}1(k4wJQ7vOzqQbvZ^QlbZMdXZ{J?`!WZAz$1CHE|5UGII3v9&6 z2zn|Ofz}--GP$Q3b$c%THbYK(2#BgBoRMe)QwZ^L(p8r(JlXmQ=gZZS!hjUPzWQXr z-Mz|ZZBrEvBwHu-D7!zd`FW&$N`g5-{rTKFOSKluK22bM*mYYY*BOX$xi75#={4uA z>@|V+F4vF~yMYq_v@p;}r~`VKTXyi>ck=m^AZ>JY+1mY^q8w4kwiqllN-^x~Pd4l$ zsd{c*4OpyuWC+Z}Pw7A9bE9jOzp5u4%le%VXCYrh5T4Q*9h3xIPt$eVJXiI+PCj9V zYci`Dgj(-GHLwEj`ie5Vl%|1Id8L%VX~CE21Ds0t0qWF!s=0?|1~Ri!_S;lGFm2+V zRbwR@yldhW^$7po#2Nm3?nkF1-S-Vtlfwz>r^UXrtgX)%AEH3O1cw*-tnZ<9D}%50Z-)+OQ{w1bG$yONFm4}wcsh&G`F<$Xv({TQkP9hKe273`nj zv8nJh&^_PHGFA7<&g^n&3%VT_({);bTr{W)Fp$|rm+znIZ)f;rs206_`73?}a9+q_ z+>#DtveOk(;N4h@VnPGu!~%<&O(sESIG7&&17a(P){@cxF#OV%44z3(xzH`Qi8?;Y1N;mYnkJ?{L0fA$cK?D ze0qzJL0s2TOsuq1#_)XhuQwjPklfA2Z=orLVMWpE8R{!z|HMPO^NQbrb50+EBDp&Q zRP)ga7BE(z)NkmY5krljN1*KhkOHUX*1T~!F?Vz4iC9@xqpg!bpLCK|-WuDA2sbSG z+?QS1lb&|b`;#0P3~K7S?%yzG04WymcqGFL4h4tB^j=z-S{8J) zF-iFT&=GTu&w)kaAns})k!GSebQujR=o4m)Y`OR3RdqASnXhVFEKHA;_W+vAKWklG zv)ylutP3A*)@L&XB_2^C>ku0-I$8bMwF#NIXkpQ0)rW_Px#LwidurUO`Ds6Ex`gn|%V+yoH1YzAY|Ytp z6t!!cYw``945R{moT7)3L|(tU!Tm7DjU?+0M`eR>t0X>B#pRHlg`Q9Qb&_k@l$tuB zqmW8;QMqaJ#gxqFA>0M>kb7rtt#TM~nYo^w98EajY^K-l;l{eKw9w2+>N4O>VXIh*wqkl`SG^%f0X!H4*k&j`glFzynxZV^J;r90V%!qHl zvS@TQs^^oi-FbHn7kL>ya(QX?)GzvI)MTb}J%ICEl z$`(2z-^f|gaCDLGlq6eE4TAni27=C(TV9h{<-e!d68}FtVI%5O#(C;9oa;`FWBe4N z|;ZCFdTtxllJ}eg18^0~#vG9ld$JBPR*vr#I~dn+A-SK!s`W?wXY+ zQKA3BMBiTJt2Qt=>3^^NXZ}=oz(k@DVm$YqTaXRqb8r5l>$na*>By>kNuWU3ItVN? z6fYSeXCaSOfjl zR+i+i`lmws7oPp)!K;t!#4HJ)-{&>%{Dpjl~rN@0nD_ueW=YS2R=2q04F^$|L)5K(V7v}uaX^a#_%y_Ka$>b z$NU@eJU>;$fYd?6vs@*vc)9JV44oHy0hevviR#aa1>MPJJJ%Z7OPh_$TVe^jJ$?kY z7017jdcR4Eu<-Ij(on}xC68bBjU-jK*86g>Fyi{!$tVKZ2O|`~4JYydGI$uyEwX}AB zygdI`<*x~flQgD2fctk4M$z!8W^do!my@5k-Ec$zC75R{>!n<;P$~e;Az%>(&0ruJ zCl>V>W*&RP9r;Ib-vw`Ukh8}H60x=KaIwdalaj02HuWHjJxigX#a3HhYXN9OdY3g_ zppUn7ik&G$;Hqq8B36jiN+0SCz!j>Loo0PiFC_zL?h0wI6L17|8ysI2URut=R;l!Y zub29b*_Ry=G0AEOraYf?(6=^L%#tgf_Jt%VnFRKz-)a(O{HYZ>mI9|!+XaBV)0och z;4qP_=JoeMVln>A_4Q{%c(mbG<=UxjX!|~fEv?Oe?(5@h-CiO4>)L)QHt7<8y_ahX zFQRM17$rI{9J)>>iHS3L%QyEg&ktT5j~S;DO+9FwB+$>^NhkELM>HfoZ2XNOx{3%& z_>6&tAnXkmZX9TTFl3>0+%lRu96T&yULlDA0K3^48VftA@s9*Y`)~c!(M($N?yvzR z<+6rw08B%;gQf6a*jSs||0N>%E5>nAyO0q&QS773F}wA{I8=9i#DOLU#idB#;~^f$ z${dgFp1VE@I%>9m+Ko~;%4mz{bZx1HJ!`?F^ff+C0wGHZJRbMl+&&(s*Pbr5hG;#2 z!T|C)Oi)_rWU7lJ>xuLPClUz*dCamo#`E~m7kxf*MqU|k?h;xuj|-HbN@U|Zl&A;| zjSY`!-i-`tKQPX=QUjur389ncGg&5zPIjj-^o=10P534UP=8pPw z0fT-G8ab3&P|JwkWQfQF``q~?7V-jG3{S^wOlWQzOHo4RIv0{xD{h$*!qn@uoXKGZ zqB3~nmix?>2;{}C+T5aKw!QACiQ|!bqG8zV#|5dT&i!9g;G28e}#Bx@i zk*XlvenhBrpRJ9HTV7gMNFFYn9skCE1@6x~hbI4+js3pp)eM*566}N~!LL#@D7q$U zm9~%39oXu@5ZJK5{f8@Odhm^UX%Mb-mF%|l;9{%gR~OFiAZ+rrRq5oK_~hm^z)Jp_ zonWM4+3Mww_RL+AUB?ne1DmxTvt`9dA>{c51DWd)+kT->ea<4zzArsUt1=ag9|nkw za!$j+cv^yDvJ_vBJS+izJQb#boRJCkF@TH3ReW^!q*P8Y|BgW};HTWLJA{$s+(*%U z2ZXV{!Tgj;a^XvxuQa)hnPDFqNLsM#cG~?d6QA9YMmH8Y{$FC{bl;M&(RU6gt@z>H zpcW5rBRU_)#9c!ygx9gtW+IcGuwmXX&_QcG5Zg(wT+n1cWy@* z+hjDbc-JTu@N{9&a1-DRGaOg-R?6XpZ*?yDM)^F3zbyC?W*l3@c1`CPeE)ZFaW8Fl z&V&;&>o7^I#It%}8NmhO(tWLg6)YaSiE^FFp16Zm1aKFN{^8M@cW_ zc_JuYB_)S&14I!Ro&!3%Y;^?{liNAUNfg{O^`B|pJ@jAZT*4@E@RC$Kp5{_GA_;-8 zK*r;FwpS$v+d`rT3Fef~SjoKM@Zxa{u=q$?ND?d!c+q^;-uRC1``_R9^3~Ws%7jP@ z#bM~yp7w%pNos9A0mIWNv6jfIImLB*2w>xK`f~nG8oiz@fg)cqe1(d$DAR09Qsk5Q zb>pkJJiJo2*&c$Vj9^%>NOBk|qh}2AZ% z_h41(71iL)7Ovzz))ExKM=KE?nA_97Z-%om`HxF&kIx?TQw(2g+2pDqgot$J-%R#x zv+ICC)NOq)Rl!FWw7jxCW*5E__9xK32ffRv&DMU>8WFtM>3u3Q=f9W@b4KtZ={yy}b*4+O z+Tmi`?P@Um(mOR7zgQlESV}Pd9MJ*}k3PmzBXZ-ntiX9(L!ewKQUFIOnw_AK>r2vv8?;`#?WGfMqH>%ccO}kJ{04VD zQauL&|7+QYTMLNl7de(^r?0dW>M3;!HBZq)$Un7bZ? zT7tv^FY@TyGDGrM0CffGh^9yxxKv6~C4j|-EzN2q>|9E~cd-Ly_Up^x>%+nI*di9= zoI?|W+FDsHPRU{~`Lst|!$(NlIQ!3u&I^6}Lz}$KLFN5%_uJdJlbOY%|8Njo<}jGF z^Nji=W>J`nHO1lqNv4#mH7-+GqPzi6NnodJv;JnqnzcTZ1Yc6snz4k+nvA|&W<pNUamZ9$g*KvY+QG%g)+I+W2~Q9pZ4G8BA;nVoPQpr zdyejVLjKT6h#nBkDJJ_)egaq|6F4^|Nf3@(I=zNf1Ye6a8}sun_h7=v?$(-I*1k3^ z`NQDqr*);5&H|WjpPy@g#zK?_+bxmmoT&Lb8QSr)Wv?W@PCq;aH^_&iEmQYdx0Q2mF!O+i#@2Kl-)isu&@ zLz%|ipP#z4^Uszpju!wSZe2ZEmAT_4Gn+MN6Ky=%NFaY_N~3fbZQO+v zio=G}@uOK@5@~HL`|nx_ONpI}U&r#bNG9XB-r&pSENhWvZ-2nx6c9Ww?WR_FL`(A? z3W-3)#N^^-2UFg4Q@yYcV{x~l@o>XZ#HGflabtE@i(fV?X{WZI>(bKrV$YE^$M(h7 zzm+c=KxeDHJ|v;9K->1i<61qOq_nmhG4&Ieb3vWjwVcL^50Yy8b-v{@|3S#jjLll+b-=hfmf=xbbN|77O^hVrsn5+j2X_7gjjrQy zKE8rlEVY7~osP;J62`+XB9O++@wZS4>ySd6$sei;#jf&grpOu)kJ%<(K_51Vuw(Ke zfzS7E@6Scf?XS~?RwuJ=>OWRn*Byw10^dZZV3$uw2?D84bT1h7yI)8NQqs%$?Kks1 zv;ac>Q9Yg48yUPAOO7zeWf4S#Dt0hID_{X`Ai@#(zamVwMbiPul#-SwkGiuijU8-K z8y7a1ts=i>h<8YGC|gARa=UWmXenD4fH0QU#)vDvY?jA4pEv9pG}vv~hm~NA>g4ar zk&jvSzAM1Wg-t2=3!6gpQT;*Ai?V)D6DJEW!efmZDa6HFF}nb26uDWAxf+b=!Ap^g zcDLy5vYu7KRpT7uo_E&usOO=ajc9myTr+29XITh{*jIiPR1Ia`k9QG{UvHiXtO(3@ zxpM!}7}KhJ?Z>(vB8b|pXhYRtTuAQ85E7UA^Dw)_T6`#8n>7t5sVGZ^MTTHmhj#j^ zM_)AbE1t;gO^$3N=N~Z3qK(r;opg9c{`*1Q3ES!Tus?fpGUzp$MCdZIHUiv)v&1v8 zQE+m1b>nb~}9V_{Be`$p9y|Aocu0FIx-;c;Jl{$CqM^{J9>lK^oE0q(cF)hKnk8SAOa zYI80x|Iq1-#+*1K5X&b)#|9-7Zq4$);Ao-o{mBs{yHa8Y`o*B8ELSjn0X~d1%D9{{ z8~Tmb#=91D$|?sgIHB+3=uMFAE?{WWXP3GX5r;%gmo+^X3wQ2_X?r{-2t`GN=zCzO7^Nk{kfdl3b4=&^nL$Pl}5lZ zpTvu4ZYqrlHJhKj%gIX*pPH!Ev|{m^ z9WyPtZ)&<2Gd=EA;kbQx*`YNa?`CkTJ>aZ8tgSIkJ$B`wxCip`p{^=>dCW-w9LA-F z#p3Lyc7B25zWRlt3xX1g;uFhX8PFgynll`q&Yya&<$~LC(F2#cjF^jTeqF(};CMeZ zCV+?w>auKxj4%*Eg|cvri6)aE#I0*oyQAubjP6Lnv9ccFVH{YgWB1glC)VV}wVCNG zemIt1pr*BYErod%Mp3Q>oVH&MvmUC#ulBhej?=^8hBzeqrCBv``kp(G&}%#7ncosX zMFw^wIR%2*&y ziJppGU~lc2CG4Qt3oB-7_a!_VSvTk-iWnq#cQqV8%=ep=X{QZdbsTN(uqEwZv+%AB zg)qVs-VW5Uc1lB4`@X_HoJf5J)tE%`7V4L24J&m0SafCdevA z!zd0M6E|~TBV;uc=oA4gXiUb3;6RdR|q{AYIaOAb!yOQ`swQ4 zbUJfDfmMyvs7tK78y_Mr9#RkvJ2>$w`&;IU1`92sfl~&--@5e4bQO_?RXCxQ#?q#l ztl;uQPB9{KSB{c0PJydhAwDXZ`{zaLBgNL68+{J1hbnWsY%A&2Vs$Ynf%Z3fC+PkV z+BS@ql~Qd7{M_PV6kNlwc<^<^i_!E%-u3UZ`H%DTc(iC7iw=2-0F0m*(8$*7L{qCe zM2?8L0E%Jvo|Vd3LsN2kuB+wIpe8B9XaT9p1Loy)>uz>_JT=tSbHT+^neW^-r}Jo% z(YqIQq4!48Su^ zX5{Ud@MnMG+jQ)+FS!OdOCjKB@V95?;($w~2#zI5L0}(A!5teUQ}`na2?t{Zr~7VL zaUQLYaf@&s zROf*a6pVB2NZKs&%M&fUnNXdg*YiLmjgPA%T72w*3oykIGV0I^CW!`wit6RdjGx~7 zmE2q#V93TD00SpCtV(`n6&nKeAWA{kMyCU6zsTuR7cTamwLe&I|CEQh`R76pU0e@s zN%%NWoY)s&a8wx;$wfCF#Zao9S;;vcl>2}Ch7$m9S=q`hPH5v>x-;V(GOcb;_m(C z_j8ZPozUfD;n1Db{;?$O$f;e9p0qD^?H@~@()XO+gCG&1h|OBhQ}x7UZoT%_`>UMd zj6tv4vA(IJv#BHR^U9}G)35YZ_v{+EE?rLLeN&$r*XvUEN6AlzJ%}Z=!@O2#6*l6q zItfH(B=Y1q3En#xmm=ne;pqUYl`sKbMc6mFlt9C~+-V&#l=*o`Z|%uQ#Ab3><;^QC zyedM4dIPIJ)8gTt$=s`bwma!((j#i#p3phgg?*VUv+KbEZUxI&W)PXyA)P6*%?mml zCz2ng@eT_1H0AB-`5xhg1qccx7&a#`CKCB|dJ3}%=D7v(IBiTC6P@7#7Ikxn#Mz&J z(F=h7ukm<&PB$8*^;~JhK7TselYHn}_IKVO#66QLt6ZlEB)#!}I~iG+orh-r9vR%l zDP(m?L0Qtciil8X(n|;RkfJoImu0?jNGH!6T5u6DXgYWcVKR90!Y<`OC7EbWH9cl* zy%K1Dhj9I#azL@E`W9kMgEi~@t?$ZYLs@iqgj3*>or@JZ%Lt1Ac8O3E$RnpkLf@Zy;AZ06$;}j0 zmoh{pc$HVu3Y#f;Ewsc&%7Iw%V3$PI!qW@be1%?mB1=zjZ4v#ARAga25bd~Yu`0ix zX{{MbG&#Kln{(T+9KjGKQI`dFU;nX&ry?>;10k@8J!>ht^mstyz~5A#rK~RsG|uJbrU7%}Vj`o_~MUsRNtSoZNh5 z3>pRp)-n!^Mq{QVqdG_qc8QRVjo&(nJ+S_vX_-#dXQ_^*8MLN#ye3DEUy6t}2|&Y^EXK3!Fsp;9-fv!#NH>^Mzb?MSkvEf%#NC98`D z0)m$SMXr2=Pg|Rhz{7+p@d%>>m0OuUb45bXfgMd_ulmi5^;FV))zA4L(N1#=e65{m zj#iCRJ<%66c6taPUG1elpX2meteYX}8+Clmxpb_ZyX1$>sSKzlw4$Y@zT7ES8@

  • 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

    GL2z!=}A4-Ux~j7S!wH@|H<+L*|zF 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

    #esPb27g@l20_ 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 CM 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

  • 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Îyn89E~f#~O;<3>LAILl$u4)y4Ri ze@wnqe^9c3ralWI(~(xDfo z6kPbHawQJQaafN!4vQHbhe_^MO!=a|U1FJRHc0y}w~=|_&zm9ZL~iPDIO0+j<8Z`f zRheqDg3zPg;0oVnB`Iy z53Uegw?IT$h!y^xmDvAn*{zYS&*1t#(E+QNE+=mBb zXN^q0v)d>BrC%7vk3Yb5sxeImDI^}AI9RxNT{vfNUT?rD1Nc$dXE^t1?zNBbu zN{tsx#WkCODAp6GYHH!!BRYs47`ZPlH1x?1nfw?YR6?{e2zE>cxg9yKn;Pw48X8!LqZlO5ClQ0PX= z$Ze#I3eWTNtACO`FJAG{8)l&FXZ!K|t}!pW-Kcmj;ulnsqQ99vzU#Za`c%xj%N{xV zyuoU|oKJ*pq3-TJIbF;lDxMW1YCP?IWch|6ewJOKX9Z4G?pcA+iatd!fInw~M>}j; z$LHEOk62LOKO|o2wjuFEyOlIByYm)<%2zQ9Y9<%13|uqyQJ5cBjtHzPAiaOQH&+G? z^tsC5=*!qSY|`)hUqULYNuRCd;Q;$KK_j{6q?|e^;2T~~qj_vjgPMR6<33e{(^ZDA zmw_1*vZrKn$1{42gB-9@)J#1z?UTvt*MIFfS}Dt0JmRb+uXdVj@8g9DxL?-@IbbQ7 zUNi;HU@rgvr$ad0chPP?=dBmH<%=qw{FHOfa#EFc&T_ISbA_n@m{^|DGSt;wY(aM( zg_gR%C^X?NMn~n5V+zLPtB1zSSd~x+UDie|7!wo0=_b%sD@KEvp2Rm=LAC^vPO_At z0HFvN=a3ab2KDo9`~k!1gwS)0DcZ-gZu3Rn*d;^}2_YcTBQ1HrV7_P}nB5+y_snUq z-F^=sY$DWfNkc!gpeQbpSY#y z>jW!7?C?B7>8;&au-hk2W0GalEhTs_SlG6y4O#*8tCGgW$p`hP$G!794^>L5Dny0D zir*bPOR8c^HG+L|LS`C4S_6H{(`!F-?k~nXcKoM5B=FQ1a30|4FJA?eRyT1n$}ip= zL`Yt`6p3}usJ$81{^o<9zQy_A=eNrP^BLMkCrjbGked{|D+MY^GmDV=1z`Bg6HgO>!XP!Cq1g1%?KRJx!`T8^Ytd68y{X9B9a6NN-rPM>Kg{D^ zikj|s(Sy+uu$&^e1T^Aa7~!$#y_BHd8~Cr%Qnw61!9gi?Q1Eya$FVW9m>y0t$I1zh za90f%MBff}yTe8@^ZEJf&!4F{hpqm=|P|3 zkNow2wI9Cu{>rs-(WiJJ8ScS}d$KXYrrBBG9FJEX>Wv>zD$9o7`s3|8fBEwE54Z1J zA$!Lcs}G!~CuHixuNF2K>K~oyZiCbwCwsF}=X=d_1R3#J@~9j4@NIAQ5xvfCk84&A zH5aab{^hN~80h?2OO7&9nM;l`a$_&?IYk&us&ghsNm4h^ep*wF!{dwk5zq?+2TR>i z3|Q*cC5>uz6NRa=ObjGnIW%OJv^^oPrd5EEIASPeD+%A6`@y3X*U=>7!Hz_WlroL8EhoU~%ro%^GBPicuFYU?wp@ z*c*{ceQUPh?%A^4c|NG3^3pe%uqEmz6Lv;zlq6e~K;$4nLL5@8fxN0N{lS4Y5(AdH za~Lq;Rz*i;v_oPb`O2XoGZ6<7aMb|DjR?^+6PRZuzUe~M!tw^;EQ`f#rI;jJ1tSb1 zEPDG}5u;{r>PKg8g3Q!0H(sskzO}^r4#EdQxG`M2Ge_npc%BcLd`mwgoKP|$z_<({ zR>XM~QL1BOqFkG(8NjJ6F#va=?oJvrAx6032(w|~+6n1fOmWKHbv+nq zLqleH`3r$H&4lJ}h~Xfi0n)oJRMD9mLfp$!BYhXq5AM!v8GUvXivoBJWLUhfQ~w)C z1f2*q{Jo!vy8bx)Pb!xGGgqy($3gnM=v9!8 z6M{icp+c~DB1O1+FCR5~VX|Btz|YlXK1s#+b#} z80UT8y)|atnAvs5h|!IWxkC}5>4rvRVGvM3P!xq$ae)S!i1{hnRn>jvUwAVsyPK-+ z%8zrh*zjT|5W1d|l~tYRZN*@CIy)E`+gw z2*Ut1l@JnplUzG{_TTryTXvPrdTW;-WXmMeJfX9=`p@rslOseGl8p&5jGBux%*&s& zYD-3rT;(MrM_&~R#{n>9l9Yz_(UX_fo1Y0*ILNcd@%Yae#}huwm<#p&^%yFfMIEY^ zWg}r5Cd_XynXs5rv|2p_}dzAs(PLgrK4;*Af@@eY4dt!rmXUEj-g0l=lZ%pAOQi8UH)8akR^7L23g;N z>JkpIf3^4$i?{jsMVv+X?S(&oI+`-opB<3HeNsRU_qlXkP^ra=P_<}*G&V~Z8rp&t zFpZ22$!-#nvV)Gg%_;!d{dttFDjHk9_n6Vf9W#oakE3puiXXGpwnf0Uj)3bezw{r& z3>)z%+urdD^fXE?{2D9et`Vw|TzCOwM3$DsJoU0Tf? z{w~akNvx*FbHRxo^>@*DmbK=KSM~kd!`}wBlM#fTnk*Manvi|k-m6$3mJPd$?}mn{ zkcDF7_!YUZe%vWULhY59b4AW^Vmr?UWk#@dlcxV{kGBFUXG`S&v|3%@#9_*epf6k* zzDQ?#w!~UzvU97>pTGI$5|#b%Zhe29;G)5q3Fx%XVTclS`8f;`uZhok^s1)T=QB`z zCAyBU^uySy`iqVQa$idO5trDTO4xj-l`6`$CLgxh@!i=_Q&iJ2RyY1|np{hUW3rl%Cn$+-2wTCJ2O$=AL(Rt zdpl)1?4X4M^Y&S-;O(rxz3MGj=_Ruz)^4AbG&-W~OoG;P5-Z)MY6opUR5QTrhgTOdgx zT>BtNAv!jLY#gelW0Im|N7SX4?&j^dS*jnDSic+fhmC=8A1VeWdU!ooRcf)q0LC5| z$z~3X1a{pQvw-KtLRgH6ltG(FLP@3tvX6u;qd#pUYY|Jh2CoBcQHN`yN)Zc@Hu%6; zeCJNyfz}L?-n9WTrNr+kSs*&aWU0<(gDSH*DkPHFP5l}4y5WiduO#TcQp)P(q3 z#pdb>c_d`R$6RylWG(f_pKjf{@pF*Cdi9r|e!fP})B}IssRM84h`bN2_8oNb3sCHG znu9X6%0AI`SzCw9y?0;FcoSWw1p6?sAya9=n}-F)p=eySfuf1jMbA}9G>ZZ=+3ca2 z8d^cf%~>E-AY|oX`H*53c84IOhR)u|cb++x476iOEXn~b_!3q&hd34!GJDL}oAgkE zo)EapPra2LUXX5gtHig z92|sX1aZo11cr?S<}{cIs#x47i)*7$V{Lf=D;*liU+&OI(VEA(R{p>`Bv+P8}7X^=qf1$TiL-Z%vcoBa=?{Q z2s6_TZbcN|upPD*ZM2yvlmSa56|(4h_Tm+7Jy3n#S}IPq==L01t4k#03vXw(vHV+O zX^Dk^bt>8?DuqmT{df`K8<)H$tei$BjVnkgghOMh#IQ&}RbZaq9JpNHA2EmMrT56C z@46IE#BvVvFA)J9Q#|P9apekQeR=LYoJMi9JmpxC*!{FcP4ywoR4%W(d%LVrhPUv< zd%ezUlyPM!5DwgFxQ|EO@+1+&_5|I%L-3WXT@ge(|XLm^7)BtuDF5 zw)UPJxid4~{)=cVqyB22yeO_NNM00LQz#Dw5|^5+KuL5e+Y84{m%Beo%nE<;(0#HB zdKK_U?jy$|MUR$qZKW0~7+?w@!E8n~!8$HM1-xNF`zWbEvygt9YD^oSucSb?>|9pI zDX8)wfyX6sVym_x_|Qa&Y_`sl!8=GLy49*z4X!3Fr}u6w)%pi@6|kWnp#Sym)OyST zmL5LnPcPN?kLfmUb*?2QFf43iI33hb=ETiqS^7-MV!1PYEcrI&u5HpP6c0A2f7c)veSPuV*B1iy z-pZ+^2M|PiZ#?=ivgYpGYcAbu{`S6edP-isll$a#BW8kITWz(5_G<4~OXqs^p<5rf1X9nPa=M{7y1rs#lLZ3*+KBApyW#JawwurCmA(#A zSG_XGo-`YK#f;?_q#V4Ttos@?9K)Z*Qg-R#nEH3_ zSwHWYLXWMFawa99R^zIM-@uiSZx(UrkcXd0?rG|Pey&zCBEL>^E+6B(IU3jyS^Ovi zmR?InoQY{}9AF)8>iu04=|f^74x|`VF`^;1puq?pkO0=0z>T?~da*dKT;<5PHcy1E z-vVmP5Sk<-kZKf;ux;Y9;LeYm!W>W*go&E^w;K69V<(!f*A)iWg667I>EN&}QZwNO z#&*iO(@0d6Tg2x{6;ZkaW|JxxUZ>w=?KSXvuYZfKu4PGU zn!;w3WtK4K{)Fvf`3yc`zXI44V@cNY6@kje^E{bF}|w zr`@B;sOZJd=|E4d?&oNwulDQyrEf>d$7%1!d`07=ZujT)VmfQpx7Yh1t#7N_HOBW; z^Za8{jR;>#_QIR&;J~tB*4Ud%^A5%ius-b*M~rek?!M^abjKj=&cCx66Yes3hz9nQ@AFNkPSVo>EJC5ktlU*alK(#QCD?)enn6 zL^mbHCBG`Mv32*_;EAnvHq?#YVHu$}uxFe!7I%HFV|U9qlcwJOu+;`1r;=w#XV}Qo zZoYCjZZ`gD>qfuVP;xb>RG>);$jso#bMlJQjQpGX9t(XydpVlGO)DL2qlfxZ=`E+} zv{%Cag4bMasK3RE3XDu!&Z~Cj_0liF=44)+t0xydb1WEDj$o?U&)2nIknzRFrYHpy zTb&2SSEbE^31Jb*P~c2Al9Wpt)ajlWLrZMZt1r~JLCDl?QA@- zF|iAtuQqHPETKAK9Bf{jKPU+BOcD{XVD5cu8?&6>>wLXH`a~W}=7>+9N#U8=phho@b6EUms1gGSTl+OoM}AX=yAZFDy!0d0i1Bl;g6#dgaPJ*|qrP@yzg z9RIV1tCtlD1=?X~n)|B+XbJ3w0VPw#9~XlupTCJYjU(Fuk)J1alv9PHa55wl@a(@r zfs;>U>6d&7lS!}Z5w&TZW@k3awb&;5S zNcPWImQ+umV8gVW_>r9-%-|oOufFfWJi6A**5&{MJnVE67O66Si@--f}c zjg*=i{)ZSFS>G$KTSgo0?j>z@6SF@Hpx`!-A$ZWoF(J+>R5L)`+VvmJBUp}fvyDV4 zJv#8%IjZinh6wkqON#t7O|7KTse8_=)t_5Ezs1qx1*26D z;ce`Cs;{SPb6y|A=5KJ2)FTR9q>7fqg7Os{1`;c)mr%A))S8s`5%je?uZ80$j4vp%HE_IZ5c?Q}-)mVGx{<#Z^7?Z&xSxHC|8 zc7T0Uc!r1ik1k>LDgoriQX^U&PfYkWE_5K`E?s~s6+=XqOn_t|E0w1tkYIvcS|V(i zcb795E#a&D=^hEb2}Zt(B)~a)g9ZsuIpz-P(cB&v5Tu6r1TOkfEkC(yNt@QCSuTu- zf(T!C&)b9no1T!PlW}lo1^F?yl~&Aw+VvJ&J`bIru0{XBlJJklde&|P+4^ENbe-}v ztm*U)PIvBe<`&1u@jc4A-e<3Ps)65&j25}5qsp|64w^!sl`oL9-#! zfQwCH5sFUDq7ujhHtsR~;ziK|zuKRx^I85c1Qj;3Qid6I20gFrhJVE>5!USpP6sr9 zC!-Nm}xmPPD7=pF%-?9d|*jR6OMWVY4+?bU~qH zW|cD`exa>+l?$}t^kl+Q5$VqlQPFQx{edCLTYwZ)ihn2rBxXlRO?Y3VXa9D+3eys+ zy@45SC@1w4Yi*xik!kB*Is%QSm__E=}$GbhJ;7MKqns4O<<6s?*Ej;{uGpvUnq9Cq=s@N z2Iy<>>#j`!p?U%2%|-R$)+%iKQ~({Im!k=zRCO4;m15=$Ar5|MbUg)vxM-`XaPK)kv^85JnKs+$lOj06gJ@LLL zR&=|PqaLnPVa1xc2S#IE5FX59!K3&ne?V8gLXclOQ1Q8%+xI9^BB)41}Vj5zua{v~&D)j~c z%W+g|Gx|>XD&n?Ut*TVbg*eczPz8}!k7mQ*q~(!Nny`INdLR%@+B3P5G@J=6Gn9gK9dm*qta93Q}jiKQ8kL=(34n`3hf<6-g z=iA8WQyPui5f|jtEcIUdqE(oV4EQ;we-FVM-51k)-*DfZxFz#Gry5U!^!Ugk`QKRH zV_y)PAB6AQsj$Y8EslRD8}Nt>%4|_w%0tZo*FKbtz`Q+a0Ic`xCg$9mcju$cw+U5( zXLANV0f!vsq-L0m>((wAEXPTO8Z1VCo05$2 zcg!m@nSe1r3K3N#c}Fad+o)+uaf4;5s9{u?ckJ6h7YFA`5<72s0Fri7_i6kA6 zX5HJ_)#3=AYf5d4hsxxC+Ue4N{;>`ef=_p}Dk6u2W5{c|vn^)2&)mE!}16`3; z+$<8v)DA@~h?&_b%!1_a6Q4{HVbQOtKk`TE%RF&}0XO;6LOl>3Z``lby!h0>v9@N( z5ENJjfaHJaPU^(uiUHTgU{3YJ(4gf809m#b3?I1Fp!vUxB#veXaM+-T{pUeY!?IAM zHAxG69sap$6k`QhSrZArQ!jk___!pwfFS(k;L9tpH+!psI1=h%`+HgL&v^z$!c<4h ztEN;QrWfTaw#KW?dIYwxNC;@v6nVf3Jr{^GF@vW+W2;%-yxrr7b{=IN&a*n2(yEeV z6v1_D$S8$X5~9L@>7o%4LYtz4Cg27rkRA|G5@X1`e}6wg8^Zrc2Q{wBAlt%9J}h@t zB4Pnp{NwWn?W0BtNR8F|*z4T2I+Av|Ey&7YLd3s1srV+6H|QMk=E?-4jHf+<8u$={ zEStq48DeYrGqq7B!O*bi6FIe|9CE4~y)isYj8}Sf`cFQ+ogp37WH}ux1AXn3kbsCs zm06W{+_C>~wdzW7y!9HKgeaszDd>W%kSd;@&Y!UuSA3^AS&s&UbVsDdK|i-iuL^#y zGuar2=dj}i(^ES#jxYspYFV}*c?zb|2ncrsrlJ9hJiT3J%{Uhe`Ym>9PqC^#2y(K3 zE+%p^z#i>MF@QBfGGg&YUTc}F4x^Ozal+KY8)bnnjBM+2;3GaQ-11Wg$GX}j!w}$R z2CQk*-~7!c4`n2Mj5*w5tQC-B!18G^za61cK#Dus(Yf=(B3EP&eNrJ(s+J$M(rvHF z%bT4;F4121MVt)5U}UO@$Gly;+FTYWRxF-k#IEvZA~cG^97{g8 z>ng9OjLY!{Z(nl>(y5#bNn7`#`sR7#Fp+7>5>gRYK93&1x75&=lBu2|sK;gj?c>gA z!yA*p+qwMPhFTbvV&CT^GR40r)28)hvkQ^>3dwp{eS|CsulIp1g8IWcq~+!WD0Nu7 z65=a`Ig332i}Ofz*z;-J&V#UKov|HDr$Yq9l~OWtoD`?$1#=u7Fhub(F*{V*Vy^iy z;^wZ(WbN9Toq|do4WX{c_ykc3x4-24Oh5}~mP-<(Ck2xM;_mrfg-#K^RCe`xY`?>^ zEMK!M3)!eF=sMlY^}e4m+$g)?XWzO87PyUJLw)V1h=7RZ-$`AHW;KIV5; zK3qq53aBMD;gpu|8UGGImzJmmaw*mCczUrYWkcVrA>}Yx-MXIr4!sxvE#gmOQCA-EarI1*g;ehc0brEMecRM_N|S0=TW)v_{4TWP}gc6iZ$ciP#%8_C=( zbMwJjTGEN6_`m zhVDqH*rSBOov)1aY1F4XAA*JDD}^b;A1QBW4l2O=4R# zYb-p$W=v?_MGNKOjF0OfjX3ONmspkp=hgk@%%#oqMV#7_vSEvpg^eQk`t14iMwIy* zfhO0|7W6$TkqeQf73c^7>IDOsMLQO8T(N_GO6C-u_p~hVc~{MQR(t!^2>l?cArnhczDp?hH%slqePzqwG+p)j(v*<<@7ENw1kbUb$g?g4Fm zh-Ol2Z&7qJ+w>^eRTwCQ(FZh70BQ++y85&!czkBt9Y{;0BZNDTb0= zSY)Swb&t4(y|rzGtGMsaue|T5uVs@^6|M+;)<%*iQ^_X=&tb>ShR^nglH+ke8&TV7 z7t`ajdyzEbjnB5E##oDZBs1zcOy26aBqzX29?5~|!M%Tk zcVppJ)w8v-dq`)#vB)+0)HM_<1- zE170lq*HD0St4*$r~XndpHMX(9vSg{z{!Hs|LlsPiR~sV6ZQp>9G4sCg^*1J$cmM4lY;W=p9CemQeEAo?JxvG(_OwL@ul zU(cgH8l3x#>1cuOID8&=g@vo@qPAxZ5XMdY%ij-bl(f9{J{B+HE^CkUpr2!%{q}fc zUY#__H7jK|NDDO7ZnS(rZ|snPdp=k|oSeTfsw7=A`w+79DrgSDz_GEu7Xxc4I2CWV zwWQ7M;<1#5T}vQXgm(Qc5Ks=}1mabyhxv9NjoAoVlf|mB^n!w=m@z1`)L4``W0$SR zZQcp`e1)O+bNrL_7n2B>B?OH6*|Md&_J5 zFuGxZB_QC=vTJ${{PxUx>Y@J2(Yi0SKWBX5{jtJV<+)X^SjaO~Xx9}UhjMDohnzD` z&qr$+nd*d`W}B>em|z#7QoTHSX5epB zj#N1d6F1;osF*w7g6b{UyS&z~Fy^jm(xtKSZA`h4&m$R>IKR2D6^4BbwX?U8Xi%+` z9s*6WZrUdAduoOJ0LFa-=&f=zQqSfx(|BMJE&coQ!}6xc`5^Uj-S)~Y_iMqHW#9dz zY4t3MCepwv0}e5&XYJgttyj82nY2NMQRm-WZxAw?w+IZGe;z&2#j&8Vv(uNrG^!7# zN4k>|HjFG`G4waCPnkAlOBMM1gwC^~4d5(AzqI?74o{-gZiwQTloBam0FJ z5YF6mEl6w^1F+J-P>H9!LI7lwGKbj`ypQ$_4J#LZXnV5;Rdd>q@rw@go(MrLs8_t^kd*(X z*dXyjw{v~kT^D_GC7M##U@Lup+9szOPrzE;i4cl91>X_Q-w98vD1$tcuJXMpvJjFS zQ51Pb!?fua0c6*@L>k`D4>8Z911}vC9ZJYYPzy{cl1@W2T8JgDeH-zQ3gdoMaOVXj zzsm1B&eSn$P1Os&p{2O9`)9J98^8hgSq1bDp}XALI%=!?XR>qI*Qr@_0kGO7yU%G9 zBp#Dn2*pwvKc`p5*nK-pVRkU7PI03DRiH9ybe`k!#j43k)QWmr3UTc9y@PiqlSXgw zplf~ED2wyFyP`Q8yW1T*cDzB=f*NZjD6nm$g{W(N^enV;UPB9WN^F74ix+G0IU(Gg z(vf%^>)Yz$ymb;n1H@$%bmbE|3;s?|xQDs7tR? znxs>zeD=O@0#5YZ4a+wOS-SmHKQ{Bv`#2on#E0EO8$}E(|L1S<58PT(AvMUp?7T^! zB9!^hiV5W&vk&Feo+BM$H@IubZSt+_Cq*}s$_m8i^c7SYYU}#V&&~UnH4wl92#tXFR@}!Kgo!K12+&(p|kr zg0lW9WjmRQN{Y9-7zrs|*ko+}zM{?zNhe=07p=1|0zzLPm>oj|Id^e*(nkFhr}39X z^ME0ZXM|(*-@Et)p{7<@zkl-=7K$3NcunT9s%PPie0{!OT^B!IUtxY<)RU=mZQw0U zTW~tf?k0Gh=0&17%iKC&JfCnBOReo}R8cy8Z6I8igZ;sApkQQKrva)#&+y7BK?&Z6 za}uh1CR5{kOU=nRXaZQ86OP#qZ2*dMirLtK$=S)M1h`OCwg%1NjwI#n5a5AO<4*ET zb4yuqT{ptDO;Tl4Cx^E!7Kew~!~|8a5U3qqfY8~6g6~m4srg9_{mV|q4A0+NQqF#H zy}OeYzE4)qAJw+=a`jmb&5$}b&$d5GxcN4W*OQ<2(`xZS~=53o$7H4yW_5kN0X{hle!1No(0 zS&cfOIWs-PgeYxb(A5m|BqscH)Mn~w;mkeqoj3Vv3%+f1$URe~dm zTzf>3Y0o%o{VPWfGx*<6cZcXq)d;;tPh|jDoSc@Z3Nfkx=uB0cCJjFK*8a*_5)VY- zD;q+5fvW0tZ{xDmoSmwOGJEGi2%#PKXJ;&Aw)f}8&QE_FSD!K|IWQ5Ti%41T%zwZ| z&LyAD)T;s{=s8$wBR|r?!yDHrddZRo@Qd9@_FZXPM8ODdQz|((X@hDOF=YD3&58Fn zEhe_juy9wkNR40gg}P_e<}7b79GR+oFMP;~LBh|uEqMqr@>#D9U60j@I{)kUICC9A zWH<^mYNozc^-1tKSr*LwD1o^L0WKIGFmki5?H87sj>R-{ za3vM7>`O#k=QXV;w2E|8I!37a@G!$V5!>8^HzF|c|0s;88&5E9>bUuwIvQoQhSn)h zH>eJHv4pv=9p)td(|nnoqir~!Pm;q!`yx9gQ){`Jy6Dz~<1xHKFXuvk+3ZUw0inP! zxMYB=`fX=GKd3oD6BZr=zOld_Akn?VvIBX=wW>cD1GO6HzrBKJ&_C`ZAtiAT9TV2M zTd_(r#<*0vJzVyc?QG@k2lw-GTuN>~Z;KHPg+B>LPNOS#gc%t(xcaPCQN^8$8+man z(#{QsnmdW-E%Z|5=~q!gRW?_(r?w$}AZ2$Dc+djC6ZoCRZW%2KXaa2SQuh7rIW>$kM&Sk;Af4ypH1!%+I8hwVj4`vO(M z^~oR^QO0me|8`Yn=e2+M1KU5Tal(iOElZR6`aAGfYRUnJ5wnill^v;*CuJHcBePjsKHi%6`yf@Hw3`#|r-PXd zk~GA`jFU>Bk_dmfeUaF=Pjxzsn*JD@Xw=6YT5l@vv0y8dJWyHNUS|$Ay`5$@#So1=iJ(06 z)5LkImmA5%oew11T?l^72gW^GSJ>a{WuPtyKo-q zGTa3uy;V_P>K{U)P@Wk=GOulW@&s#`4kbkM6TcaU*`{hfx1(#Y3V0xOd|^G6WF&*e zhcs%mzCMC*>Y9$872kxz#~px7+z0PJh4gU-#HfNlZ4P>jIg7I2avm#-qDv{IM^wiV z!{3VfG3LDfZLQp8+kHlbf`WyJ8o~NaC}>}YKtafcvipztoc|iK**Kcs*X+opxm>0y z!>pNhRmWpmW;3SuPe#1?Yi*Udb`z2KGuuD^qCPj!9W72G8{r?}Aky%sx_L4*Ra)Pr z5xPxO8)_Qx*fT?yluS0Btx82*tC>?bHY{uCg;PlWW=lMOsI$@1awP|oi z9;0b>xg5)XK6m|mes}qO?C<`Z7*ZY2H9CIra+5Ai_L-GkmOFFr0_fj=+3F~zha@_B zRZM8-i=)M%@Y%Z;UpgQ*x5z^vfFBcELa=de{T`+q=WhwTZC5hG5ewp3XkEn?d3WwVlyR5=<%|&x&XDy7 z(0IK=A1n)sL-Y1Q!s<_es{x|PL~f{HJV&IqOnC>`t}srmg}&D}txR!8VxF6Rq}Bki zl?|v}eLY=;+Irxpdz4*;#=qrp{9Gv zngG7jaO^aJCg+PNaeg+dCI=O@{?0gYs5D<5#nyM|jZFM)f&p(4*a0w0fgrs1eqk(F zG8Hg53CvRlao)>ooiJS){Bd_dJP(p0!igZ#+$Dm>u4{4FMqR=quE%as;Jht~z)DtH zM|lx*HdrPWg+w@}mgmv)z_JyKm6!JmQC6#@>#@93zbMYmKh&e^G;4k7?E5Qx8f*JR z`;Lm(PFF)}hkvO=W82TXrO;z)KgH_GGKi|S4F)QF`M=PImU`p^-FMK2^7Y}-ZBD|K{t zIyJC|r?R&l#v@?MU0Ak^F`!b>_WdgtyNkC+_Bi*c=iZP#vv>96d`H(DZ=Ol@66AQ_Es|Q*yM<5uLRn z#mJ;(r#fX!kur0$7{KlD;8XN{U}i~YClI|Q+ICserVWEv)5Y;>ojrDvWxM99uGU9% zXS;-7kjahs`&IF=edM`gGi=OUtrvkBn83q#&)2SkHihGtXQ6Uw?}bvKFLU}MvOdz4 zUsmNTt}H~Uo*5jM=kn;Imtrmd)^uxrzga3jF*&_KJO*i?VfX}6zy)y8hzb@F-oQ00 zw&B~1dh(G|ArzV91Hd9${YL=Hhk+4`rN3mfL6G-CWohKx{lP~5#T}sOHqb#Qj)I93 zV5pP;sK*&7%Yjf2Ndyq^Ms5MYPahvqLEqn2{IcdBFCECcZo_T0lcJ3RFZYYN(lJHm zZ{nVUzF?N4 zia+xoobS{mIN5m=Id~Ssj#UM@WyoI_dMU$3d;DY?76H!xD=J%lHN?{xxD|hs*O)iKR7E{=U}88Erl(cc+`5T>6q?9$!9 zEmo!nL;Hh8&$q~Inw&0danhp-?UmT?UrXGchek%rc<=*JJKNqmF|D@s?YRsO)i(DJ z&TZJ|nRq{L$|mXRZKb0}izZUo_ka&VVAU)fikCp*chMpyA*hWo!%??Yqkif6BMKvSK{^r0)zDvu*UIp$w!Qz_m@ES?RU z8acqcS`xXp8iM!6PI=4q3u7pd3@85`2J&upvr^*fX!={Thj<(AO(pYfSgtM?a{q#i@|h38KytU2!eKmFV*L zP6?4EtaUs#bA_}R_HPVA(dO)$xR=dwu4r7G{c3EooV|K}ZMBV(-qEZ{apbhI(1 zrSzYqoAxysO({TIxI+i!I|TIVqwauH?UIDFXR!OtMJp?_wz4KBM;A6XNt2E=KPv{- zG%>MS$7bEg>*@KF>K=JgY4B-HUPv&weeagtA8GBevyCS^zt;=D&yd=}Eg(@YqO2Ch zCf~SC^qRklX08nyd3GzR6&pr69`%c!e6zbYv%KdxHhCS%JG2QUZ!?!b71zyjyP|fh zZ=;E!c5a(tF5d=TWFzacdgL2dBb5`2MJ0VHb@Phu6pJ)0rHN4IAqqp<;XP zgW_o8NxUk+HB_((JpSV`1@{UfN-Afd)Dubozh>Tiqf@~Y^A^Mzx(K+GOm7Qos}9VOBG5d z#yuyG-7mMdbGNrA=R?2ZMsdVA6j;0yU0{WA4u*?gVWX;bBMyETXbC040OEvWv5^Kx zN_BthmVI_(%Aloj%BVkSg%W|QF6&k&NTU`xx=_l(L8)9jwWm?u#|M0PZc&LPn&aMVPX?`D3C?%1r_dw?cnXv>@orX`#fln; z9oNM8332@ZcAO)kJa_^W6B7e14v9~Pg6L*J$MgB@>bh@RdHt(mg@%gvK>$0u6nN6oe-6& zQ;!2$M>lhx!GrJL-ttuPuVtEEI8J``Zp{r7+yYx=eSK{wAYf!nBptW2u!f+7>XSK% zn9o)rTOzPV^k5olFea4XYLaK1r1%XD<@ydww+6C6brkD)I@6M*bk^4B49iv05t4M& z#f$ZAX+7Py8XmW|347w_S1IAM;a+@(>m#anW;o~;D_43%oz(aMMrBSqmTjxUQvm|X6J%-=Wx)dKf^tWAFeX97u^ zgM2p8BvCj8?t%s-SS$k@CO7+*@j?ew;zwZF$Jgq%>04Hos?KOW}V}M5i zpsY|Cop9T7C;=oH!m6P4l;YWfDlHept3QLeQjmHwsq#K)z0Fr5{92Q3cGf-#*1mf` zJXe337cXSz>J-0vtcV#^vs1D8L&6OJB`rz6^Cfr2nsP3{43z|I$l@PW=bCJ)BGPUQ z0FJ5G=DA%MngwFGIyUbDq9Pc(l1l-}=tEXAo~!;|cHRRXT1p4Ra_rPB9DBO5E8q3i72QWq^R(=A zL7w-zH%nj)oDtsxt)jp5OsHP{Yj^FwyBPZ_<%4weddhi;)D3ejyq;5BNj7BcKeogG zw*I4nybLs!f%XUT6pQ8Y@?ji#PT*H{oiNlNEbQ`42mB0xGVTc%v$Rox9%!S_%1JmK z3ERogLSOh-$)UIvU7_gnnr-8T4h?h?i^{YC8JVJldXG#iiaWYBrM`kH&gii^99s66 zG*GY=oNP@l>&i(n=JP1#V)c5b*X3c;D#lt*?c4Qf!{vQ6ZC9`FPp@JAifq60)i&DD z>xVQ;(eQo+e@aEFQ*@ZZ%oUNb0w#4QlhWzz18?G}3Mg-4*a}+xvp}*Be6bV^02Fg!Hc$o&28P=$1H-kx=(fpl3aoHrt}t=S z_NsR?Zj@AT|FR}iHZpjr3Ih8KmP99I@J6C*xrKO(fU>4e(zwQ%aups0m1GMDo*h?A z4#tcHO^8;*X?F=!lm;R$jvK9aNCt6w&2VL4O+};whARn+7Mc_l6dit)MBQwz)P?iNa+wf&fS4 z*S(wTpbSZuo8mK7bG+ehpH83G*K>{*`-iaRP&gC=d0-XlRK%PD%DyUqaxbAEQ{BUz zZ2bBQS))RZh;F*RqaB5N`^C}8LH^y!p(D6P5;c~__4XT-9A7`mTtSoWN@>yd^2G1X zNWZ=-swEQENG(u|5qtvWe9fW$sKx`w27W#XT>6Jrgrrj<3mw5O_agyER2;8Qj09f| zN&VYZ{)ZRDM+mNz-q^CK+8SwJ>{b!JY)q5VlF!bim=TgMW;8$f?@(7krfpb?JZB6R zwBxFHqAYBQ_B1r)9bVFBS12VSdeyWR(a*4e*qj?L8lPmWoB#9e*6!#`torq^RLxr; z3B#I4pZ@ih0evGkQEPOe2vFqwmLVs_9miEQR|tnLco(X(y-X7Q{;;MbS|q9Ai%LD~ zNs2yXn<=TLuEywKb#qou2LW7;+YQ1~pB@8|m>oYloYCx$2rIZgH5N*!8|>BPoN~Sw zalV82eLHaUVT2gdxfpOQAxO&8?`n(Pi@1~=S5Q4xIa48UjD9k^Lw_vs0fve7#}t3E zj3F#v1p>73#kd}XNCygK^0IHxYEqKnwy8BqZDBTwoZE2!Hvwd;<`x`Nl(UuvnVctz zri92lUwp+y6}=zztdGk$9H;~t!=`MEFf3hAJ#-Gr=jXw+wT4>Y@%z6{T8a7!&?*c_ zra(y=sv|PubiGHGqGKUoln@3oK`=RIaRu?uuO^2YVehYMvFH64{{L>rHq%W!Hn>(v zN>PFUA(3nh1OiK;_SyjIqgjZ-`vSKzU&@$T$mtP`V2&llP^OS$^p;}YRRKaLJQcz! z&7j9lTe0z*4X7m`8S#RGd#M3(9s!n7D4GP`UmMDo?#w3zsOaFB;Eday(y~?PHZ<#| zdtm*LaB4l0z?bi%)hIui8kfGe^0;b#nsIs?J@2W~w;#xKRpLrF*+duF`}$7NowB3J z9f5`43!C;+=mr_<{9EJsJV2Wlse(at$EDWhKxh?pDQ0<{9@u3Pq+>w*rV9nm_`QAC z?fJa#weHy`S-kFq=!*NIDTslsYYmzDR}>U+?f@Qy)Bz;+ zAR@f%qSlK<38OFL{~u_;5G6#v3_x3;K|l3HTLeRLFkT9Xw<2$#{Pm$(bMPRfW{Q@p zl`xsYU<#F+`copPwIQVbxZV+^R;&Gb9Ekh9;BQ!!WBfIgGozC6EmJOfBpacr{J4cd zikjblYyFt{yL8GkF$4w!co2sSM23}H+x56Qpigqa$)YIi644>~Z$V9>NxwuRxVkw= zS!*9{M8;G*ElN?%#4t4mq6i&%Hg>-w9KjQ_D+On!fg!|=^j4&4&lSo6K@I|5cE|nU zrn@MwfV))4(hm46sG_6b{46eE!@3Bmdd8p3@wZtd6`2=SbYIlQ&RaeqkNyT9p?oB%F{HPS_yrh;$ z=`Z%G*)P^}`4COq8L(&%`EkM^qb#FCW>0M;H9-DRJFl6na>2W(V?nVnmddsP?7t%&D!F};B zQJkJLCRd=-xai-OMq!-&+*lqGg!0P;Ths~YxmV+~hvVeUnnq-+cW+Je|MuvndF3gc zy?ZsDSDOa*G+&1_&x%#gw@|cwu4|5~N=$Af)wi%L!2Xyrq};v4ZRRa5MPFzvkm6>A z!@FIKMmak%It}yPXuu;CIE{}rkNuMI(MW-^U2bxUHLPHi6T%26|p~c&#zu7 zt}dzQaMjjDHxDTsq_+9?wK`I)onCBUI#*A&eJ_NY*j!?pb*C8}OPhgrAn_85(WIBS z;X@rx*WT03q$Jggu!iZ^UPdEi)PSsGdudJ8IA4Cv+^1<7*lRy^3=p;?sz?{ik2w;;WV z;|V0-DqdlZJ5*8T$9-c{-eJGKy6N+4XE2Rby)*^^!rmG2v7aJ`P2!{2n%_ zEBY<$|LJ6?{kq((>5+w$()|ArfO^#eE%m74~o?+ZVVez-RDuJ*&1?i_r9v9 zI0RbX4mxzi50-&t{?&EcM4uaJ#<(ZU)N(i#qT_5hA6jObWN^M`8f1(MfPQs=c)g$zDp~Sx}38>3Z^fnEG_HV-gXOIV9Ft5p1t{$NdRTz{Gs$fR= zhDFv&B4Ih0XqXU_gnIOf0`}H}8+-^R%=sjKt&2l5Av7!zzXhAr2sK~Z+)tY@W}_xp z;CH9YtYY#osY&O>H|H2rZOhNqS=)EJw)Jaf=Jn2=l^C5H4x5z+uYm>YG`oxmrhf*{ z@Uq>ZK|$(fs8Q>E^ec*Ar?)A%NB_42e&_i{>Xg$VEx@P1Hi^S3nP@ky&W?;RQy}BKqD8 z0pU=v1PBdt4hBM&E$Mf=eW$U2{^X}<5RiVm#=p0$7+YG z3beJZ-batvHkyk!p_KWQ2dz~>{Y{}!12Gu>Vh8|a8yXT}olC=Ze!QC#kfJ`Cv}P*Q zFUaJq%El3vqA#c(Syd%vPj{G_9)@g6_<2`L!S9yS=^(YW%w&Ky04B5m>2#)t|KezI ze=w?dz+oA{MsTHJWLT_q+%P#>K}7$Drk^g+2sd1lg5bs+5%>3>^^uG_!YvvCKs>7y z)(R@FAEYfl-$)ZE@_(HQTIBZHhM>RRjO;!!47|p44SwwVMui4<^Fq*UdGdV&#UzVk zXU$s8F%E`w?248U8#rA4p^|ge(%>L9RUahfBw1D{dvS;Xvv33BS!vZ-%}VclOT7-g zSFsO#X@3Y8!Eaad%5Fug8P8D) z+Ss$%p;}4}F_$c%M%Z%GN3=dHaZLcNdr3`|UtsOv8vbeC=6eJ(?409GO^Xvk=h%b( zT;|29OwoYRK?w5-n_(BzXJqN-vaU>+;((@q)Cyc}%W_E*0&>`rB5Y@x?Ol1StUgiUq##? zQ0sWOolz$OrLr6eRE;p{sR$hvldfPe3JCtH;tnYx=u{Hc#uzCVf^)Q0uSii+Ml=IR zVy@t~-kl*X9V2rQMB}8YvY@zEp&`#p2CFc?Q_?^yGf9AB;ZqZr~>s!|IG7P zx3QRKNgs=qhijI(`Ud@G>4AA}E$@lBU{Td!+cwa$zYNmMi{%Pc8GxEcuo6icXtzT# zjVk#xhmDG7E-V4MhU>dXL!`<-;dSs>ebx6f2^v+t5QVPDXysp0UIfVS{jJ#I9%oWd zpqZ*=7CrJ$IVz)R!V1F-RD;|L`ypo&(KNYr>nncA=`%cbde*|niDI57!XB5nB1w}X| zIwmixtRQARZyNS@aR!%=N6{>vs{{*&94`H-91f#PL_tuipTvksA1XatY@@$9O1*%> zpIa$ruZmpqs6X(tq}}=Vl0ZnzfYh}K2+cUSlBFqkyT|!1%U*uL?ue6nM0QO>8(&WE zqiubcr|)ICP3?whihsRe$lXT<@teyrZo2ajzB8>$Fp10EivFEcQIp+mTbKl_$!p;8 zfLL9wT38PeUA_YB<+?W4lO)r2GlB00s50WUTK5qmEhTHZ~WNb&nRkt6?k`84V(MCcjM%(W=fTv ztZIkT_?zSY`cJ(&edVpq){hrI6ljU5#yRW0i&ww@{`!p@SHHdemwwhDnv`$<0Zj@u zH}aw2Z_y(`G+_TE>utX#`n&H>x93f8IU2j|PVwAGQP0`u_Co zwePOqzSF$Gd(6`7<@{{vL!nyQWyv%8uKf4aoB#a7&AZoc_p=KPD&kM|fw_jlr~1HJ zhRoklr<^mixSqyO^|8?o*5JWbeesk$?BN=1{9LhmybW_0X`{J6N_{l<^_MgBow1q% zSdSYLfVT2sVyswHOg`7*2f{62yg#IW25fBbKR`;twUVtw6D}gr1muBW{wM(1MI>+l z;G6Ze8%YtMd&po(ZnG>&0=k(DmXv57Vzh1Ot}<}k>)GAD;L%p_@W)zai8`eEX(H;W z$F;*}9}3>gv)YpvG=g|y;nKx#Zp31(@T|e~S%8-7wsPjCU8fzT)e6I!S+2d9BMK^h z=9x>x$UjNuo|~v1P16wd)wlHOYI%~n$BIvb98qVr_wW47tP}P?WquvGPb;yk6cn9K z-b|LL#Lj(2(>l$d46brBD8rDJi)xXoU1d;`#FX(SH~pzoZ~J9bkJZN?v7G3z;YK6* zql-q01~cl$e1#_!V5%U&tVeag8hc(+vhSjkZ)~MAuODhhs9Kz)yH0!e{e^sJ5o1b~>B9wTO&_kQ;vyTMy3#Zu zLbk-L6nORb%2`^E@P4j#`0O9l2NVnB4k8xF9XQ^d`AVcvRoeuMWj(2d)mT}|*>PYv zrIeV4m?kPfbS@hy8Cb7E%A?mjnV==w^7H<^S8UbdXI|68oO z0hKCP%4G||G$_-q6xvzG)n-S1{M=)2qLKS%Wkp=W6?=SV@iaJGBP-QvahBHbTgcU3 zjrq^t^?m*y*T4Jr=70U;AFkf{{)anvuHS6#b`E$CpVIe(T=Mk~w?khToTWczqqsBu z$840AwlLgqRrBCuHVti7kZF(Zl58(~+pl4sYc!Jk!r_sk*M)PhzIlNJvmVt1YnT`+ z^f<7zumTfmW+)&N4)WwiCwt9+si8oOG&X9}vp8cz_6`ON9Xk(y{KKI@tS+=^R+mbzJ>LUbWUfy(m_*!m}GK68Gb12xfdAbDmKa0ZUk zeCG7>G|gvDFAvj1)9ECBJhU2YM;(wyS;mn`QrSC452OrF7z~tmwpEwRq3l z+-iT943`}BMyEp5RI3pNpTSC}G@MCl0%EOd0ya1qu7UtNqKzy7?#=F z0Gs=pG{EM*|H9kz6+t6ZmmmftuwK`ffM1j-i?HJH!G!wK1i%GWC{yf_fn*x9Oi^z) zU91dQZmYN~IQ&*gik(zns;D=eZIXf`a24SxREc|4IE}^y2jMEgLD5d?)UJ$+DS5%u zGaHu1>w@f9y6S3`IBlQ7ATa7s-hN38>y8V?XXsC@uv0CDFV2`&A|JC+TO$d z%(Y(Cw)&V&!^d=$o=_|A<)U``T$yMehy&b^~!(2%%C<9R%c@)`90UZ3G^jI|L$eVdu3fZV`51tHQbkq(Q38 zkk+rkc2U=85L(E68U#0L2*B@OiqQKPAX7dnO94L60URs=)@64+9`vpULIkyA)qxWh z>fj(VW9bp{VQiy0{*c)Qd*@`X++oOe$d7gjq zD_A?Hhiqe(mFoR4xjy`1a)bW2slN6Gurrt30JdnQB^Z@z`bYqZjV=S9bwdmqwkUwb zw?XO+0NKicG#m&rGCByx;4o=HrRn;dq!ao@;a|0yW5Kg=dN%9J&aOp$XO1yS4 zL5?Rn8XCfN3&HVBUar*Mv-^P&Ba%b_hY=nEIFY>Qe$0S~K!EZY#Di)G0x_^>fzEz0 zn3aS2Acb&+oQpf*C8IRd%R|EAfzER=7@1ilKUbiUpDJTScrAsHcCL23P(OVg79p>l zJ%`E!F?#o5eR-DBv$pUd>;M})-Bocj_R&X4>1X;|t-oJny8P}|=Sht@V(Z)YSwrI| zJB{5_@?fTRzDuT-TNh5IPF|xdnFq2_7W_G_Fbs$ZXN(JdSy$ETmB-!L{5JhcR06%E(}`OcFGY zbvw$p>f04qecC=JSssWbY;`weVv_0KZ~pMtZ^Mq_|M_oW|0rkB9=*o@78k>tsqd^` z*2Vqus+|kpPj;D_E(hhu^|QkWnU&sS?XMC=aR+%#T>2%P=)t&@ZeOdAZhvR7J-z-+ z%;cFaH($N29iM<)k4U`CgA9o$I?2)=Y}fJk5JwpXmCvFMs?K31#RhtgByj$a2lE$6 z@SL2FJI!Rksr|}5>~SVzbAhfQ30%~@&qwvwR>Jp-8U@j1@WNXs3|?2!yq_ZuAR@((VITkO;SmYe3MlA(m*yEfQ4e15P#J~G3j~6 zYW;_?KL7M#a&0*Br$Y9H5q!aBFoG}I0SY)K{E7xx_$nA=(P{Ytq_S)WS`ZIN-~vmp z1M!^!e7!svlh?YJvYB!~EfDMSB?og=1^ucvNGE|VRMA7lJVIGq(5(^>zB`JA9qo^2 zgU74%=^uX_{7db4%+9l(7x!KUOFK->SlI1K&?sH~a~Q0W{}UU+=BxVbG)D-_*S1|1 zg+*&)wK}2`5^a}S zq`}JD)TJyvCHu?6WakcfFhl6+KVPY)4gjLb;=%b08vxh2GFM~( zDywR!#UU4_qbd#->)BVtw_KP)sEEpaNe-%c0*J*Re36*@`^P z#h3p)I_Oz;;xfSFk<3g{*?LAFOx!Sh9J{4>7r=k9%?BIxopnJ(ul`ADfj#BfnL#;2=CfI5L;@v@73jOwUmw--~5u z$>B|HL*Kxhmx~+Omh6rwfQYF4m=iG%O2VmN0nt0qTEk9awv9M(_3!1cTxD(v&k3Um zyg0@{2{dfi=MLr5+Vz#h-!b740kz}JwsV-ULTL~%uuSoQ0TZ47T~Fy-TVO~&b7)A7 zgIbIWJB@`{P%BD2Fs$t)L6@QK~HxXt{?T= zv-1cWO9&3Fmmmb|shL)PGtDaA9MNBYxw&+YEBpf)Hh_^cw>ONUgSj`1I;S^iL;w@7 zH@vdIfT_1+vXVA=jbGkS@!zN}lhso;I^}JGhs@jucu3JgXFOY}rV;~$H4>Q5s3x#Z zD4+to3-gC6AQpyTB{CEs9juY0gbkAD3W)#uj~oAUowdFVuM$~K4lr9sfrCsPP)onZ zBvH^I3kt+EWmjWp)i{SL6bkUXB005h_^-3OaGXF3P=HUb-q^UudaPgj>>FlKS$SxT zVQ8ODzT@^O!>S&!Q1FVR-bG{Ug3K&7pU-yGyTFDZh7*>YgT%F+S;1n4L?UX;kQfm@ z8AAam7RIP#-sAhv$Yi>keX>ILW&Lo2rCpU_A*WiXnaiw&Dq7d<$1BxTdVpSm$L6!E zkFBF!s4=)cI6hDXwg^l+P(yV*q@tk)Z`md@suVf%ApJ&hOK#uiomuFcT>g;hi{LP6 z>_D=Ul{ll?(GI%aml8{y3tfnEp-Jf}JfczY>)5UKE;hpFp}0~&=Z6|lQt#eKT3`A6ypXZ5pHq!PjpK5}=R)dXGGWr0ikn_8=nTqRBj=L~5BQG$qhv zBLgTcJ)xB;FxArJ{wMA=Yh%+=8NP9icS%yJfY^TTazlFH7U%T z!g47P3}mOw(!-|9!TuRSslqTmEY;`6TA%tfq)~NM7R86r>Trx!blK!0;s$YyEFi*T zs%s9R>LDnhdLM$K+jnIJr3IE^^3@lgGv`-SzP0!v%#I}6KbvpNM{N$4DswzT2j5k< zvsW^|m!z3mKrcxR>jlE00#wGHQOnW|W?qw*<7pGyd_EgIIRrU5F<{x700Aai+^(l8 z)l@QodIyHAhckzU)bU^mfgKO%xDujyLl&%&nF!3nHuw;t+WAzS3a3(urxvC>iRYr| zG5ukX{@+Ig9ZIl4xu!xaXbBAQz*q?3-6!=IbM!!TqiB<1FV|Ul=;PQpi!xaHmFz6D zQbKLd#o>&7Q7~iwa6SZRd%{jsQW`Gg+Dad#gdFzq5A^fU!@hcHFW6t=0m=RK`CrJp zdvWApEbdu@mugitMkYKz5}p84=Q9RUa!O+$HP33CX9fu@5u)@&Zj|>)X)$dE*rn$F z1S`@h={LMOLj~dJ)xnXGk*@d@g-b0UIaCV)<9CI`Fp!l>eR_`ybwU4^zSdC_6}_0-ZA`q^ ztLl3R8G0XB8vCU&*jtHYno%yGOf&XGUZo8ZpsDnR7wruoTU*T8u>Neg`S^mh*jt~6 z`H^&yGk1kHvT*f<5c(bjJ$ydfX7IJN5_OjR5UeDpI<(~gZ+_IF9Utj~P^YkSDHS{O zXgvhLI|K}xQHCa)+l{RYM9z;o1*$)Q`i?3VF&*6137{7j>d5UuE3L|)za1r`Y+I?J zf|yzp_ZH#FMF(Dg_@aJ#5Gb5kfs+G%1{f!-J?MJ>f+s`>?Cr zy#opl+9OE3%pHKl6RvN{gZc?R7*sxsI;dLeg%leYS0V!}K+AAS@N6F&YAXSDQnUuV z(jX%PIx8e_`e{8f1}eV`ai*<{h__I{XBom&CN^Iz&{1|gLgtRTyc`PJLju8wS3`!^ z<;C!LVo&XSx0TrQ&6m*B9=5bmG4hQzog+^7`J^d6OioQs_g(q>w>SIw`Nky>{n0R4 z_vChCY@Cjmzi3Xz^p-YL6!n%?M`FQ822o3TM~;rYWzoGquYfiU1}t+cV8Db6-1(G# zj4T+E&m0<3qdJHXx9AKxFfBxcW?9fyg+jD}qJvdIgmYQ2?YRGJ5mVG#IOqaQ-w